。
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来控制。

数据处理及发送模块执行Modbus协议功能码对应的运用。eView触摸屏与单片机以Modbus协议通信CONTROL ENGINEERING China版权所有,用到的Modbus功能码如表2所示。
表2 通信程序用到的功能码
功能码 |
eView地址名称 |
含 义 |
作 用 |
1 |
0x |
读开关量输出 |
读取一路或多路开关量输出状态 |
3 |
4x |
读保持寄存器 |
读取一个或多个保持寄存器的数据 |
5 |
0x |
写开关量输出 |
强置一路继电器的“分/合”输出 |
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协议的串行通信具有广泛的应用价值。
标签:触摸屏,
单片机,
地址,
数据,
通信,