文驍陽 山東省科學院激光研究所 山東濟寧 272000
?
PC機基于串口與89C52單片機通訊讀取DS18B20的數據
文驍陽山東省科學院激光研究所山東濟寧272000
【文章摘要】
微型控制系統由于其自身的優越性能—成本低、柔性好,在社會中的用途社會生活中的用途越來越廣泛,影響也越來越大。本文采用89C52單片機采集溫度傳感器DS18B20的數據,利用串口連接PC機和89C52單片機,進而把DS18B20的溫度信息采集到PC機中。
【關鍵詞】
單總線通信;89C52;DS18B20
DS18B20是一種價格便宜,精度可調的溫度傳感器;89C52是一款性能穩定,物美價廉的微型控制器,如果把這些價格便宜、性能穩定的零部件應用到養殖業或者農業,定能起到意想不到的作用。
整個系統的結構圖如圖1所示:
此系統中測溫層為DS18B20組,可根據采集溫度的需要,進行確定傳感器的數量及布置方式,測溫組的工作電源既可采用寄生電源方式產生,也可由專門的電源提供,電源電壓范圍為+3.0V~+5.5V,電壓低,對人體不會照成傷害,比較安全。
該系統中微控制器采用89C52單片機,89C52單片機和89C51相比,引腳是一樣的,區別主要在于AT89C52 的ROM空間為8K,而AT89C51的空間為4K,是AT89C51空間的兩倍,可以多存儲一些數據。
該系統的人機界面采用VB高級語言在PC機上編寫的采集和顯示界面,可以方便地實時讀取單片機中的數據。

圖1:系統結構原理圖
PC機與單片機之間的通信通過串口實現。需要注意的是單片機使用的TTL電平與RS232電平不兼容,本系統通過MAX232E芯片實現TTL電平與RS232電平的轉換,如圖2所示。
MAX232E芯片是包含兩路接收器和驅動器的RS-232電平轉換芯片,適用于各種232通信接口。芯片內部有一個電源電壓變換器,外加4只1μF的泵電容可以把輸入的+5V電源電壓變換成為RS-232C輸出電平所需的±10V電壓。所以采用此芯片接口的串行通信系統只需單一的+5V電源就可以了
單片機采集的數據通過VB編寫的通信程序經過串口進入上位機,在溫度讀取中我們用到VB中的一個重要控件- MSComm控件。下面介紹此控件的一些主要屬性,如表1所示。
其中CommEvent屬性是一個非常重要的屬性。一旦串口發生通信事件或產生錯誤,依據產生的事件和錯誤,MSComm控件為CommEvent屬性賦以不同的代碼,同時產生OnComm事件。用戶程序就可在OnComm事件處理程序中針對不同的代碼,進行相應的處理。
具體初始化程序如下:
Private Sub Form_Load ( )
MSComm1.CommPort = 1 '設置串行端口號為1
MSComm1.Settings = "9600,N,8,1" '參數設置
M S C o m m 1 . I n p u t M o d e = comInputModeBinary '二進制數據格式
MSComm1.InBufferSize = 1024 '置接收緩沖區為1024字節
MSComm1.InputLen = 0 '置InputLen 為0時,使用Input將使MSComm控件
初始化完成后,PC機就可以與單片機進行通信了。
通過實驗,該系統實現了預定的目標,即:單片機采集DS18B20溫度傳感器組的溫度信息,PC通過VB高級語言及串口讀取單片機中采集的數據并提供人機界面。該類系統由于其造價低、系統安全等多方面的優點,可以廣泛應用于大棚種植業,動植物養殖業。

表1 MSComm控件的主要屬性

圖2:系統的運行結果