超聲波液位計測量方式研究與探討 二十四
4.2.3通訊子程序
設(shè)計中實現(xiàn)了超聲波液位計的遠程通訊功能,將單片機獲得的液位數(shù)據(jù)傳送到上位機,以便于工作人員的監(jiān)控和操作,并可將歷史數(shù)據(jù)存儲在PC機內(nèi),尤其適用于室外測量或惡劣環(huán)境下的測量,由此使得系統(tǒng)的應(yīng)用范圍更廣。本系統(tǒng)采用的是RS232C串行通訊,通訊距離最遠可達15m。
通訊子程序主要完成單片機向PC機發(fā)送數(shù)據(jù)的功能。單片機采用查詢方式完成與上位機的通訊,發(fā)送數(shù)據(jù)前,先發(fā)送一個字節(jié)的請求碼0FFH,接到上位機的應(yīng)答后,向上位機發(fā)送欲發(fā)送的數(shù)據(jù)個數(shù),然后發(fā)送數(shù)據(jù)。上位機接收完數(shù)據(jù)后,向單片機發(fā)送確認碼,如果接收到的數(shù)據(jù)個數(shù)不對,則重新發(fā)送:若正確,則終IE通訊。
在串行通訊中,收發(fā)雙方對發(fā)送和接收的數(shù)據(jù)速率有一定的約定。通過軟件對單片機串行13編程可設(shè)定4種工作模式。其中模式0和模式2的波特率是固定的,模式1和模式3的波特率是可變的。本設(shè)計中串行口采用模式1通信。
由于本設(shè)計中所用的AT89S52單片機中,增加了一個16位定時器/計數(shù)器T2,所以這里采用定時器T2來產(chǎn)生通訊時所需的波特率。T2有4種工作模式:自動重裝載、捕獲、波特率發(fā)生器、可編程時鐘輸出模式。T2的工作通過軟件對T2CON寄存器進行設(shè)置來控制。
設(shè)計中設(shè)定波特率為1200bps,由于定時器T2的初始值只能為整數(shù),所以會不可避免的產(chǎn)生波特率誤差。為了保證通信的可靠性,波特率相對誤差不能超過2.5%。而采用11.0592MHz的晶振可有效避免波特率誤差,獲得精確的波特率。
PC機的通信程序的編寫選用VB6.0。VB(Visual Basic)具有良好的圖形用戶接口,并支持面向?qū)ο蟮某绦蛟O(shè)計。本文利用VB提供的Mscomn通信控件來完成PC機和51單片機系統(tǒng)通信軟件的編制。Mscomn通信控件提供了一系列標準通信屬性和方法,使用它可以建立起應(yīng)用程序與串行端口的連接。
Mscomn通信控件是微軟提供的擴展控件,用于支持VB程序?qū)Υ诘脑L問,隱藏了大部分串口通訊的底層運行過程和許多煩瑣的處理過程,同時支持查法和事件驅(qū)動通訊的機制,事件驅(qū)動通訊是交互方式處理串口事務(wù)的一種非效的方法,特別適合Windows程序的編寫。
詳情請瀏覽公司網(wǎng)站的產(chǎn)品中心 http://www.sol365.cn/ 超聲波液位計