单片机通讯屏_触摸屏与单片机通讯例程 - CSDN
  • 介绍了51单片机和触摸之间的通讯技术,给出了方案和程序
  • 1.MCGS的设备驱动是真的不好用,灵活性较差,当然这里针对MCGS与单片机通讯的时候,PLC设备还好。所以如果你想做MCGS与单片机通讯,最好采用他们提供的脚本驱动开发工具V2.0,这个在网上都能找到的,这里我就不给出...
     使用MCGS在项目中已经有一年了,有些个人心得如下:
     1.MCGS的设备驱动是真的不好用,灵活性较差,当然这里针对MCGS与单片机通讯的时候,PLC设备还好。所以如果你想做MCGS与单片机通讯,最好采用他们提供的脚本驱动开发工具V2.0,这个在网上都能找到的,这里我就不给出链接了。这款软件使用的语言是类VB语言,不完全遵循VB语言的语法规则,所以你还是要看下他的语法手册,这个已经在软件中集成好了,不需要另找。总结下,使用这种方式基本可以实现项目的功能,但会有些许麻烦。如果你的时间够多,可以使用单片机方式开发人机界面,这样会使你的自由度很高。
     2.MCGS的以太网通讯暂不支持自主开发驱动,这点很局限
     希望各位能使用好MCGS,祝大家工作愉快!
    
    展开全文
  • 宏晶STC单片机与触屏通信(485modbus协议),读写触屏数据。
  • 此程序为51单片机与MCGS组态监控软件Modbus RTU通讯下位机程序, 此程序在STC12C5A60S2单片机上测试通过,可以移植到其他51系列单片机! 包含下位机单片机程序,上位机界面,Modbus RTU 驱动级说明文件。
  • 单片机4051与触摸的通信程序,应用于工业现场控制
  • 相信大家来看这篇文章都知道串口触摸,也都知道串口触摸能用来干嘛的!这里废话不多说!现在让我们进一步了解串口触摸! 1、触摸图片 2、触摸的选取 其实淘宝上面的串口触摸品都是大同小异的,都是串口...

    相信大家来看这篇文章都知道串口触摸屏,也都知道串口触摸屏能用来干嘛的!这里废话不多说!现在让我们进一步了解串口触摸屏!

    1、触摸屏图片

    在这里插入图片描述

    2、触摸屏的选取

    其实淘宝上面的串口触摸品都是大同小异的,都是串口通信,最多就是指令可能有些不一样,所以只要是串口通信就行,然后自己对照着它的开发手册自己来弄就行了!

    3、串口触摸屏与单片机通信

    相信大家选择串口屏的原因都是用它来和单片机通信用的,因为它支持串口通信,而且还能与单片机进行数据的交互,这个是最主要的特点。现在给 大家看看对应指令!

    (1)串口屏通过串口发送数据的三种方式

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    我们一般都是选择直接在弹起事件或者按下事件中直接用printh发送16进制的数据

    (2)串口屏接收数据

    我们可以通过对应的指令来更新相应的UI或者对应某控件的值,不过我们一般使用的是if语句来判断单片机发送过来的数据指令来更新界面!
    比如通过串口发送 page main 就可以跳转到main界面,在某个界面发送 t0.txt=123 就可以更新到 t0 控件中!

    (3)串口屏判断语句,可以用来当作锁屏界面之类的!

    在这里插入图片描述

    4、弹起事件和按下事件

    按下事件就是当你按下的时候就发生,比如按下之后就发送数据
    弹起事件就是要直到控件弹起时才发生,不弹起就不发送数据!
    是一个时效性的问题,看具体个人要求!

    5、串口通信

    其实串口通信就是一个相互间数据的传输,只要你能熟练掌握单片机的串口,然后把接收到的数据提取出来,再把要发送的数据发送出去,就会感觉到串口屏其实还是挺简单的!如果不懂,可以加群!

    6、实例工程

    密码锁:
    https://download.csdn.net/download/qq_40442656/11545023
    没有积分的群里面也有

    6、如果还有什么不懂得可以关注微信公众号 一手创客 进行提问

    串口屏启动成功后会发0x88+结束符,这个是需要注意的

    串口屏常见问题

    展开全文
  • MCGSE昆仑通态TPC7062KX与51单片机通讯测试
  • 最近工程中需要使用瑞萨RX单片机控制迪文LCD串口显示。  首先需要使用迪文开发工具开发工程,定义好各类需要显示的变量大小及地址,并生成各类文件(字库、变量文件、图片等)通过usb转串口下载到LCD屏幕中。 ...

        最近工程中需要使用瑞萨RX单片机控制迪文LCD串口屏显示。

        首先需要使用迪文开发工具开发工程,定义好各类需要显示的变量大小及地址,并生成各类文件(字库、变量文件、图片等)通过usb转串口下载到LCD屏幕中。

        然后通过串口发送命令可以控制屏幕显示某页、更改变量值进行显示。

        在配置单片机串口中需要注意的有:

        1、串口波特率需要根据单片机数据手册中算出;

        2、需要注意数据传输有效位,即使用MSB还是LSB。

     

    展开全文
  • MCGSE昆仑通态TPC7062KX与51单片机通讯测试OK20140307
  • 很多时候,工业控制或者产品设计方面受...单片机与人机界面触摸屏通讯的最简单,最有效的 2种方法,其实就是分为2种通讯协议,即工业标准的 Modbus RTU协议和工程师自己定义的 自由协议。 本实例采用其中一款人机界

    很多时候,工业控制或者产品设计方面受到PLC这种功能确定,扩展麻烦,成本昂贵等方面的制约因素,需要独立开发一种特殊功能,但是又需要连接触摸屏通讯,工程师在这个方面往往需要花费很大功夫,现在我要帮大家解决的问题就是 单片机与人机界面触摸屏通讯的最简单,最有效的 2种方法,其实就是分为2种通讯协议,即工业标准的 Modbus RTU协议和工程师自己定义的 自由协议。

    本实例采用其中一款人机界面作为参考,提供一系列的技术支持和公布单片机源代码,加上公司的人机界面支持自由协议等等先天优势,开发工程方便快捷有效。

    方案比较:

    方案一  modbusrtu协议:

         优点:工业标准通讯协议,具有通用性,,传输数据量大

         缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(我们提供MODBUS-RTU源代码,客户直接移植就可以,不必费心)

    方案二   自由协议:

         优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议,单片机工程师比较容易接受,容易上手

         缺点:传输数据量不大,通用性不强,移植不方便

      工程师可以根据以上两种通讯协议的优缺点来选择理想的方案;

    单片机工程师可以索取单片机自由协议或者Modbus RTU协议  QQ:1962162065

    现在我们重点介绍工业触摸屏人机界面的自由通讯协议。

    首先下载工业触摸屏人机界面的组态软件,下载安装好软件之后,新建一个工程文件,

    设备对应的是公司出产产品型号,通道是指设备代号,0是代表触摸屏本身,点击新增,出现如下设置:

     

    接口选择可以为串口,CAN Bus和内部(共享内存)三种,这边我们选择串口,因为人机界面有1-2个串口,这些串口既可以做RS232,又可以做RS485,根据客户工程需求接线,通讯协议对应的就是单片机工程师需要用的协议,其中有Modbus rtu协议,自由协议Free Protocol,当然还包括西门子200,台达PLC,欧姆龙,三菱等协议,这里我们选择COM1自由协议Free Protocol,通讯速率57600,数据位8,1位停止位,偶校验,如下:

    点击确定进入用户工程师的信息填写栏:

    也可以直接点击完成进入画面编辑窗口:

    到这里,我们就可以像拼图游戏一样拼自己喜欢的界面了,这边,我做一个最简单的工程如下用位按钮开关控制单片机的LED灯,采集单片机的数据(AD采集)显示在组态软件的数码管(可以电脑串口连接单片机在线模拟,方便开发工程)

    然后我们要把位按钮的属性绑定到人机界面的系统寄存器,然后再用人机界面内置的宏指令通讯函数output函数把寄存器数据传输给单片机,让单片机接收这个指令之后进行动作控制,方法实现如下:

    我们把位按钮1绑定到人机界面系统寄存器LB的第0个里面,再用一个LED指示灯观察按钮的状态(绑定系统寄存器LB0

    对于数码管显示,属性设置原来差不多,但是需要用input函数将从单片机采集的数据存储到人机界面系统寄存器,再通过宏指令函数映射显示出来,方法如下:

    我们将通道一绑定到系统寄存器LD的第1个寄存器,LD是数据寄存器,LB是布尔量的位寄存器,注意两种寄存器的区别。

    接下来我们要用到人机界面的组态软件内置的通讯函数,数学运算函数和其他函数了。由“设置”菜单那里进入到宏指令编辑器进入宏指令编辑:

     

     

    点击新增,我们写一个宏指令通讯函数,向单片机发送控制指令和接受数据:

    具体编程如下:

    宏指令macro_1:

    void Macro_main( )

    {

    unsigned char dat[4];

    unsigned short dat1[4];

    int re_dat;

    Input( 1, dat, 4, re_dat);

    /*如果不明白函数使用,可以点击函数向导按钮查找函数使用说明

     

    【描述】

    第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int

    第二个参数pString表示写入通道的字符串的地址,数据类型为unsigned char *

    第三个参数count表示字符串中的字符个数,数据类型为int

    第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int

    注意:此函数只能用在freeprotocol(自由协议通道)中。

    【用法】

    Input(channel,pString,count,result);

    【举例】

    char srt[9];

    int result;

    Input(1,str[0],9,result);

    */

            dat1[0]=dat[0];

    dat1[1]=dat[1];

    dat1[2]=dat[2];

    dat1[3]=dat[3];

    SetWordData(0,1,1,16, dat1[0]);

    SetWordData(0,1,2,16, dat1[1]);

    SetWordData(0,1,3,16, dat1[2]);

    SetWordData(0,1,4,16, dat1[3]);

    }

     

    macro_2:用于发送指令到单片机进行控制,主要用到output函数

    static unsigned char key[3];

    void Macro_main( )

    {

    bool key_data[16];

    int re_dat;

    GetByteData(0, 1,0, 9, 0,key_data);

         key[0] = key_data[7]<<7 |  key_data[6]<<6 |  key_data[5]<<5 |  key_data[4]<<4 |  key_data[3]<<3 |  key_data[2]<<2 |  key_data[1]<<1 | key_data[0];

         //key[1]=key_data[15]<<7 |  key_data[14]<<6 |  key_data[13]<<5 |  key_data[12]<<4 |  key_data[11]<<3 |  key_data[10]<<2 |  key_data[9]<<1 | key_data[8];

          key[1]=key_data[8];

    Output( 1, key, 2, re_dat);

          

    }

    对应单片机下位机的编程,作为单片机开发者应该都知道如何编程了.

     

    展开全文
  • 1、昆仑通态做主机用昆仑通态组态软件开发,STM32单片机做从机由c语言代码; 2、在STM32单片机上,定义寄存器的开关量读取、数值采集读取的定义; 3、主机和从机通讯遵循Modbus协议; 3、昆仑通态主机按从机的...
  • 基于MODBUS协议的单片机与(串口)触摸通信(图文) 导读:触摸能够直观、生动地显示运行参数和运行状态,而且通过触摸画面可以直接修改系统运行参数,人机交互性好。触摸单片机通信,需要根据触摸采用的...

    基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

    导读:触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。
    关键词:触摸屏,MCS-51单片机,Modbus协议,通信

    基于MODBUS协议的单片机与(串口屏)触摸屏通信

    在工业控制中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以AT89S51单片机和广州易显科技有限公司的HMImaker触摸屏为例,介绍其通信程序的开发过程。
      一、系统结构
      实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以触摸屏作主机(Master),单片机作从机(Slaver)。HMImaker触摸屏本身支持Modbus通讯协议,只要单片机按照Modbus协议进行收发数据,就可以进行通信了。触摸屏与单片机之间采用RS-232或者RS-485标准接口直接连接,传输速率设置为9600bps。图1为该系统的电路图。
      基于MODBUS协议的单片机与(串口屏)触摸屏通信

      图1 系统电路图
      将AT89S51单片机的TXD、RXD口设置为异步串行通信模式,经过MAX485芯片将TTL电平转换为RS485电平,再与HMImaker触摸屏RS-485 2W接口相连,即完成了硬件连接,其中P3.2作为收发控制信号。HMImaker触摸屏RS-485 2W接口的管脚2为485A,管脚1为485B,管脚5为公共地。 
      二、如何将HMImaker触摸屏设定成Modbus装置
      将HMImaker触摸屏设定成Modbus装置(以称为Modbus RTU Master),单片机或其它装置只需使用Modbus协议,透过RS232/485接口,即可读写HMImaker触摸屏上的数据。将HMImaker触摸屏设定成Modbus装置的方法如下:
      首先需在HMImaker触摸屏使用的程序的界面协议中增加一个新的设备,此时PLC种类需选择“Modbus RTU Master”,PLC接口可以选择RS232、RS4852W、RS485 4W或Ethernet,这里选择RS485 2W。如图2所示。
      

    基于MODBUS协议的单片机与(串口屏)触摸屏通信

      图2 将HMImaker触摸屏设定成Modbus装置
      当接口选择使用RS485时,需选择使用的连接端口(COM1~COM3),并设定正确的通讯参数及站号。这里选择COM1(9600,N,8,1),站号设定为1。
      按下“确定”键后可以在设备清单中发现一个新的装置:Modbus RTU Master,此时即完成了Modbus装置的设定,在完成界面设计的编译并将获得的NANDflash档案下载到触摸屏后,即可透过Modbus协议读写HMImaker触摸屏上的数据。
      三、Modbus通信协议介绍
      Modbus通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。协议定义了主机查询及从机应答的信息帧格式。论文大全。通信时,主机首先向从机发出请求信息,符合相应地址码的从机接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返给主机。若从机接收到的校验码与本机计算的不同,则说明数据在通信过程中出现错误,从机把这次请求视为无效,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。当主机收到这一信息时,会重新发送请求信息。校验方式分为LCR(传送数据为ACSII时)校验或CRC(传送数据为二进制时)校验,这里采用CRC校验方式。信息传输为异步方式,并以字节为单位。主从站之间通讯的字格式如下:
      字格式(串行数据) 10位二进制
      起始位 1位
      数据位 8位
      奇偶校验位 无
      停止位 1位
      Modbus协议可支持ASCII码或二进制格式的数据传输。ACSII码方式下每一个字节数据分两个字节传送,二进制方式下用一个字节传送,为了减少数据传输量,一般选二进制数据方式。各个区允许发送的字节均为16进制的0~9,A~F。二进制信息帧标准结构为:
      初始结构 ≥4字节的时间
      地址码 1字节
      功能码 1字节
      数据区 N字节
      错误校验 16位CRC码
      结束结构 ≥4字节的时间
      二进制模式中,信息开始至少需要3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止时间。发送完最后一个字符后,也有一个至少3.5个字符的静止时间,然后才能发送一个新的信息。网络上的设备连续监测网络上的信息,包括静止时间。
      四、通信程序的开发
      HMImaker触摸屏只支持Bit和Word地址类型,而实际的单片机或其它控制器还有Byte、Double Word等表示方法,因此在进行通信时,需要把单片机和触摸屏的数据进行变换。触摸屏画面元件读取地址的设备类型有LW、0x、1x、3x、4x、RWI、RW等选项。其中,LW表示该元件读取的是触摸屏内部的地址,如其它元件的地址;0x表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;RWI、RW都是触摸屏的内部地址,起辅助作用。这里仅以读写LW的0地址的数据为例说明读写过程。
      HMImaker触摸屏与单片机以Modbus协议通信,用到的Modbus功能码如下:
       功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把具体二进值装入一个保持寄存器 1. 串口程序的初始化
      使用定时器1作为波特率发生器,对串口的初始化程序如下:
      void Initial(void)
      {
       SCON=0x50; //串口方式1,允许接收
       TMOD=0x20; //定时器1方式2
       TL1=0xFd; //波特率设为9600
       TH1=0xFd; //存储定时器初始值
       EA=1; //全局中断允许
       TR1=1; //启动定时器
      }
      2. 向HMImaker触摸屏LW的0地址写入数据
      向HMImaker触摸屏LW的0地址写入数据0x3A4B,功能码为6,程序如下:
      void DateWrite(void)
      {
       ES=0; //关中断
       unsigned int a;
       unsigned int crc;
      inData[0]=1; //站号
      inData[1]=6; //功能码
      inData[2]=0; //起始地址高位
      inData[3]=0; //起始地址低位
      inData[4]=0; //寄存器个数高位
      inData[5]=1; //寄存器个数低位
       inData[6]=2; //字节数
      inData[7]=0x3A; //要写入数据高位
      inData[8]=0x4B; //要写入数据低位
       crc=0xffff;
      crc=calccrc(9,&inData[0]); //根据前9个字节计算CRC值
      inData[9]=crc&0xff; //CRC值低8位
      inData[10]=crc>>8; //CRC值高8位
      for(a=0;a<11;a++) //共发送11个字节
       {
      SBUF=inData[a]; //发送数据
       while(!TI);
       TI=0;
       }
       ES=1; //开串行口中断
      }
      3. 从HMImaker触摸屏LW的0地址读取数据
      从HMImaker触摸屏LW的0地址读取数据,功能码为3,程序如下:
      void DateWrite(void)
      {
       ES=0; //关中断
       unsigned int a;
       unsigned int crc;
      inData[0]=1; //站号
      inData[1]=3; //功能码
       inData[2]=0; //起始地址高位
      inData[3]=0; //起始地址低位
      inData[4]=0; //寄存器个数高位
      inData[5]=1; //寄存器个数低位
       crc=0xffff;
      crc=calccrc(6,&inData[0]); //根据前6个字节计算CRC值
      inData[6]=crc&0xff; //CRC值低8位
      inData[7]=crc>>8; //CRC值高8位
      for(a=0;a<8;a++) //共发送8个字节
       {
       SBUF=inData[a]; //发送数据
       while(!TI);
       TI=0;
       }
       ES=1; //开串行口中断
      }
      发送完读取数据的信息,一旦HMImaker触摸屏接收到该信息,经过CRC校验,如果没有错误,就会把LW的0地址数据发送给单片机,共7个字节,数据格式如下:
      字节 数据段名称
      1 站号
      2 功能码
      3 读取字节数
      4 寄存器数据高位
      5 寄存器数据低位
      6 CRC校验码低位
      7 CRC校验码高位
      单片机接收完这7个字节,根据站号、功能码及CRC校验判断是否正确,如果接收正确,则第4个字节和第5个字节的值就是所需要的HMImaker触摸屏LW的0地址的数据。
      本系统具有连接电路简单、组态灵活、通信可靠性高等特点。由于Modbus通信协议的开放性的特点,国外进口控制器串行通信大者支持该协议,因此本文所实现的采用Modbus协议的串行通信具有广泛的应用价值。

     基于MODBUS协议的单片机与(串口屏)触摸屏通信


    基于MODBUS协议的单片机与(串口屏)触摸屏通信

    基于MODBUS协议的单片机与(串口屏)触摸屏通信

    基于MODBUS协议的单片机与(串口屏)触摸屏通信

    转载于:https://www.cnblogs.com/vgalvds/p/6728685.html

    展开全文
  • 定义好各类需要显示的变量大小及地址(提醒一下动画图标是占用两个地址的),并生成各类文件(字库、变量文件、图片等)通过内存卡下载到迪文串口。 然后通过串口发送命令(80 81 82 )可以控制变量数值进而控制...
  • 串口(触摸)组态软件+多台51单片机MODBUS RTU多机串口通信程序源码实现触摸(串口)与单片机通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以广州易显的HMImaker触摸作主机(Master...
  • 单片机 触摸通道 usSCoilBuf[0] 8 7 6 5 4 3 2 1 usSCoilBuf[1] 16 15 14 13 12 11 10 9 usSCoilBuf[2] 24 23 22 21 20 19 18 17 usSCoilBuf[3] 32 31 30 29 28 27 26 25 usSCoilBuf...
  • 闲来无事,做个记录,触摸使用迪文DGUS-T5D2 10.1寸触摸单片机STM32F013系列,欧姆龙CP1E-N40PLC,之所以通过单片机转发是因为迪文触摸价格的巨大优势,核算单片机成本后,10.1寸触摸价格不超过400元,...
  • 本程序主要讲述单片机编写MODBUS协议来完成与威纶通的数据交换
  • 前言上篇文章我们介绍到了开发经典蓝牙和单片机通讯的过程,安卓通讯之《蓝牙单片机通讯助手》①集成工作 ,我们这里还要兼容最新的安卓6.0及以上的系统,因为从6.0以后的权限机制和以往的不一样,我们需要在代码中...
  • 大家好,我是『芯知识学堂』的SingleYork,前面给大家介绍了“昆仑通态人机界面与单片机通信实战教程三:脚本驱动与HDMI工程的关联”,今天笔者就要来给大家介绍这个教程的最后一个内容,那就是:“昆仑通态人机界面...
  • 单片机多机通讯完整实例子,且可与pc通信
1 2 3 4 5 ... 20
收藏数 2,266
精华内容 906
关键字:

单片机通讯屏