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