PIC單片機與觸摸屏串行通信MODBUS協(xié)議
4 通信程序的開發(fā)
觸摸屏與單片機的通信程序采用PIC單片機C語言編寫。編譯工具選擇Hitech公司的PICC編譯器。程序共分三大模塊,即初始化模塊、數(shù)據接收模塊以及數(shù)據處理及發(fā)送模塊。主程序流程圖如圖2所示。
PIC16F877單片機USART功能模塊帶有一個八位的波特率發(fā)生器BRG,BRG支持USART的同步和異步工作方式。用SPBRG寄存器控制一個獨立的八位定時器的周期。在異步方式下,發(fā)送狀態(tài)/控制寄存器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發(fā)送中斷允許;
數(shù)據接收模塊由一個中斷函數(shù)組成。該中斷函數(shù)將觸摸屏發(fā)來的Modbus數(shù)據幀存儲在一個自定義的數(shù)組中,當一幀數(shù)據接收完時,置接收結束標志位為 1,轉入數(shù)據處理及發(fā)送模塊。串行通信接收器的核心是接收移位寄存器RSR,當接收到停止時,如果RCREG緩沖器為空,RSR就把接收到的數(shù)據送入 RCREG。傳送完成后,接收中斷標志位RCIF被置1。實際的中斷是否被CPU響應,可以通過設置外圍接口中斷允許寄存器PIE1的中斷允許位RCIE 來控制。
數(shù)據處理及發(fā)送模塊執(zhí)行Modbus協(xié)議功能碼對應的運用。eView觸摸屏與單片機以Modbus協(xié)議通信。
以Modbus功能碼03為例來說明觸摸屏及單片機的實際通信數(shù)據格式。如單片機地址編號為01H,觸摸屏需要查看單片機中地址為0031H的寄存器的值,發(fā)送命令格式如表3所示。
當波特率達到38400kb/s 時,通信仍然穩(wěn)定可靠。本系統(tǒng)具有連接電路簡單、組態(tài)靈活、通信可靠性高等特點,并已成功應用于物料篩選控制系統(tǒng)項目中。由于Modbus通信協(xié)議的開放性的特點,國外進口控制器串行通信大者支持該協(xié)議,因此本文所實現(xiàn)的采用Modbus協(xié)議的串行通信具有廣泛的應用價值。
通信相關文章:通信原理
評論