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

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

表1 MSComm控件的主要屬性

圖2:系統(tǒng)的運行結(jié)果