当前位置:资讯 > 网上精彩文章 > 正文

PIC单片机与触摸屏串行通信MODBUS协议

发布时间:2005-12-01     电子技术应用      


  PIC16F877单片机USART功能模块带有一个八位的波特率发生器BRG,BRG支持USART的同步和异步工作方式。用SPBRG寄存器控制一个独立的八位定时器的周期。在异步方式下,发送状态/控制寄存器TXSTA的BRGH位(即D2)被用来控制波特率。对串行口进行的初始化如下:

  GIE=1; %全局中断允许;

  SPBRG=25; %设置波特率为9600;

  TXSTA=0x04; %选择异步高速方式;

  RCSTA=0x80; %允许同步串行口工作;

  RTISC6=1;

  TRISC7=1; %将C口的RC6和RC7设置为异步串行通信模式;

  PFIE=1; %外围接口中断允许;

  RCIE=1; %USART接收中断允许;

  TXIE=1; %USART发送中断允许;

  数据接收模块由一个中断函数组成。该中断函数将触摸屏发来的Modbus数据帧存储在一个自定义的数组中CONTROL ENGINEERING China版权所有,当一帧数据接收完时,置接收结束标志位为1,转入数据处理及发送模块。串行通信接收器的核心是接收移位寄存器RSR,当接收到停止时,如果RCREG缓冲器为空控制工程网版权所有,RSR就把接收到的数据送入RCREG。传送完成后,接
收中断标志位RCIF被置1。实际的中断是否被CPU响应,可以通过设置外围接口中断允许寄存器PIE1的中断允许位RCIE来控制。

2

  数据处理及发送模块执行Modbus协议功能码对应的运用。eView触摸屏与单片机以Modbus协议通信CONTROL ENGINEERING China版权所有,用到的Modbus功能码如表2所示。

  表2 通信程序用到的功能码

  





























功能码eView地址名称含  义作  用 
10x读开关量输出读取一路或多路开关量输出状态
34x读保持寄存器读取一个或多个保持寄存器的数据
50x写开关量输出强置一路继电器的“分/合”输出
1x


  以Modbus功能码03为例来说明触摸屏及单片机的实际通信数据格式。如单片机地址编号为01H,触摸屏需要查看单片机中地址为0031H的寄存器的值,发送命令格式如表3所示。

  表3 触摸屏发送数据结构

  
































数据段名称数据值
地址1
功能码3
读取地址高位0
读取地址低位31
读取数据个数高位0
读取数据个数低位1
CRC校验码高位D5
CRC校验码低位C5


  假设单片机中地址为0031H的寄存器中断为05H控制工程网版权所有,则单片机的回复命令如表4所示。

  表4 单片机应答数据结构

  





























数据段名称数据值
地址1
功能码3
读取字节数2
寄存器数据高位0
寄存器数据低位5
CRC校验码高位78
CRC校验码低位47


  当波特率达到38400kb/s时www.cechina.cn,通信仍然稳定可靠。本系统具有连接电路简单、组态灵活、通信可靠性高等特点,并已成功应用于物料筛选控制系统项目中。由于Modbus通信协议的开放性的特点,国外进口控制器串行通信大者支持该协议,因此本文所实现的采用Modbus协议的串行通信具有广泛的应用价值。
  


标签:触摸屏,单片机,地址,数据,通信,
版权声明:版权归中国控制工程网所有,转载请注明出处!