彭建英,郭杰榮,王先春
(湖南文理學院,湖南 常德 415000)
溫度遠程監(jiān)控系統(tǒng)主要由上位機和下位機組成,通過USB轉(zhuǎn)串口連接上位機和下位機。單片機處理由DS18B20 采集到的數(shù)據(jù),同時將采集的溫度通過USB轉(zhuǎn)串口實時傳給上位機,由1602LCD 顯示實時溫度。溫度遠程實時監(jiān)控系統(tǒng)框圖如圖1所示。
圖1 溫度遠程實時監(jiān)控系統(tǒng)框圖
2.1.1 數(shù)字溫度傳感器DS18B20
DS18B20采用3腳PR-35封裝,64位ROM 的結(jié)構(gòu)。其中,開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前56位的CRC檢驗碼,這也是多個DS18B20 可以采用一線進行通信的原因。溫度報警觸發(fā)器TH 和TL可通過軟件寫入用戶報警上、下限[1]。
2.1.2 多點溫度采集電路設(shè)計
多點溫度采集電路仿真圖如圖2 所示。利用P3.3口接8 路溫度傳感器進行溫度采集。單片機AT89C52的P0 口連接液晶顯示器LCD 的數(shù)據(jù)線,P2.3、P2.4分別連接液晶顯示器LCD 的RS和E 端。由KEY1選擇當前的測試通道點,溫度值由LCD 顯示。圖2中,LCD 顯示的當前通道點為第2 通道點,并且溫度為26 ℃。
目前RS-232是PC機與通信工業(yè)中應(yīng)用最廣泛的一種串行接口,串口電路主要由MAX232和一個串口頭再加一些電阻組成。J1與上位機的USB 轉(zhuǎn)串口連接,MAX232的9腳和10腳分別接單片機的RXD、TXD 兩端。通過MAX232的電平轉(zhuǎn)換,使單片機與上位機通信[2]。
3.1.1 PC接收數(shù)據(jù)軟件設(shè)計流程思想
本通信協(xié)議的設(shè)計思想是基于幀傳輸方式,即在向RS232串口發(fā)送命令信號、應(yīng)答信號及數(shù)據(jù)信號時是一幀一幀地發(fā)送的。為了使數(shù)據(jù)快速可靠地傳輸,將每一幀數(shù)據(jù)唯一對應(yīng)一命令幀。此時傳輸數(shù)據(jù)的執(zhí)行命令具體如下:
(1)在PC讀數(shù)據(jù)時,遵循“讀命令-等數(shù)據(jù)-報告”,即PC下達一命令,等待接收數(shù)據(jù),根據(jù)所接收的數(shù)據(jù)的正誤向應(yīng)用程序報告此命令的執(zhí)行情況。
(2)在PC寫數(shù)據(jù)時,遵循“寫命令-等回應(yīng)-報告”,即PC下達一寫命令(此時所要寫的數(shù)據(jù)含于此命令中),等待單片機發(fā)來的“已正確接收”的回應(yīng)信號,并向應(yīng)用程序報告此命令執(zhí)行完畢。
(3)如果在轉(zhuǎn)輸過程中,PC 或MCU 所接收任何一幀信號出現(xiàn)錯誤時,均會向?qū)Ψ桨l(fā)送重發(fā)此幀信號的請求。如果連續(xù)3次轉(zhuǎn)輸失敗,則退出通信并向應(yīng)用程序報告。
3.1.2 單片機控制流程圖
單片機先對各端口初始化,通過DS18B20采集多路溫度信息,控制LCD1602顯示溫度,并通過串口將溫度發(fā)送給上位機,同時接收上位機的數(shù)據(jù)傳入。單片機控制流程圖如圖3所示。
利用CSerialPort類實現(xiàn)串口通信。由于本設(shè)計需要做很多復雜的處理,故放棄簡單的MSComm 通訊控件,選擇用CSerialPort類。此類雖然比較復雜,但由于類程序可以直接應(yīng)用,省了許多事。CSerial-Port類實現(xiàn)的功能比MSComm 控件強大很多,可以自行選擇端口通信,而且數(shù)據(jù)處理更方便[3]。
圖2 多點溫度采集電路仿真圖
圖3 單片機控制流程圖
用一根USB 線給單片機板子提供電源,另一個USB轉(zhuǎn)串口線連接單片機與PC機通信。系統(tǒng)開始運行,檢測溫度和濕度,而且用LCD1602顯示出測量的實時溫度和濕度。通過下位機采集的溫度,經(jīng)過USB轉(zhuǎn)串口傳輸給上位機,上位機顯示的波形如圖4所示,其中,顯示的溫度測量值為26.43℃,目前PC機接收的是第2通道點的溫度值。
圖4 上位機波形顯示圖像
系統(tǒng)通過USB轉(zhuǎn)串口連接上位機與下位機,基于RS-232串口通信接口標準和計算機串口通信編程方式,利用CSerialPort類實現(xiàn)了串口通信。系統(tǒng)利用數(shù)字溫度傳感器DS18B20采集多點環(huán)境溫度,采用單片機AT89C52處理采集到的數(shù)據(jù),控制1602LCD 顯示出實時溫度,將采集的溫度通過USB串口實時傳給上位機。
[1] 謝維成,楊加國.單片機原理與應(yīng)用及C51 程序設(shè)計[M].北京:清華大學出版社,2006.
[2] 董曉紅,鄧福軍.單片機原理及接口技術(shù)[M].西安:西安電子科技大學出版社,2004.
[3] 何志丹.深入淺出Visual C++串口編程[M].北京:人民郵電出版社,2007.