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