曲阜師范大學計算機科學學院 黨德瑞
隨著現(xiàn)代科學技術的飛速發(fā)展,特別是大規(guī)模集成電路設計技術的發(fā)展,微型化、集成化、數(shù)字化正成為傳感器發(fā)展的一個重要方向,而采用新型數(shù)字溫度傳感器大大方便了系統(tǒng)的設計。數(shù)字溫度傳感器DS18B20具有獨特的單總線接口,僅需要占用一個通用I/0端口即可完成與微處理器的通信,大大減少了接線的麻煩,使得單片機更加具有擴展性。由于DS18B20芯片的小型化,可以通過單跳數(shù)據(jù)線就可以和主電路連接。
整個系統(tǒng)是由單片機控制的,要能夠實現(xiàn)接收傳感器的數(shù)據(jù)并將所接受的數(shù)據(jù)顯示出來,可以從鍵盤輸入命令,系統(tǒng)根據(jù)所鍵入的命令,選擇對應的傳感器,并經(jīng)過驅動電路驅動溫度顯示。設計一種可實現(xiàn)的,方便的單片機監(jiān)控系統(tǒng),實現(xiàn)多點溫度測量和顯示的任務。
圖1 AT89C51的硬件結構圖
傳感器DS18B20是美國DALLAS半導體公司推出的一種改進型溫度傳感器。DS18B20的最大優(yōu)點是采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度傳感器DS18B20和單片機AT89C51構成的測度裝置,可以直接輸出溫度的數(shù)字信號到微控制器。每個DS18B20具有一個獨有的不可修改的64位序列號,根據(jù)序列號可訪問不同的器件,這樣一條總線上可掛接多個DS18B20傳感器,實現(xiàn)多點溫度測量。DS18B20傳感器有如下特點:
(1)單總線接口,可方便地實現(xiàn)多點測溫。
(2)每一個芯片都有唯一的一個64位光刻的ROM注冊碼,家族碼為28H。
(3)無需外部器件,可通過數(shù)據(jù)線供電,電源電壓范圍:3.0V~5.0V。
(4)以此作為檢測元件,測溫范圍是-55℃~+125℃,在-10~+85℃范圍內,測量精度可達±0.5℃。
(5)分辨率為可編程的9~12位(包括一位符號位),對應的可分變溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃。
(6)DS18B20的轉換時間與所設定的分辨率有關。當設定為9位時,最大轉換時間為93.75ms,當設定為12位時,最大轉換時間為750ms。
(7)溫度數(shù)據(jù)有2個字節(jié)組成。
(8)內部含有EEPROM,其報警上下限溫度值和設定的分辨率在掉電的情況下不丟失。
本課題選用的控制模塊是AT89C51單片機,AT89C51單片機是一種低電壓,低功耗,高性能的8位FLASH單片機。單片機的特點是體積小,功能強,可靠性高,功耗低,價格低廉,片內含有2Kbytes的可反復擦寫的只讀程序存儲器,并且可以兼容標準MCS-51系列單片機的指令系統(tǒng)。
系統(tǒng)的硬件電路如圖所示,主要是以AT89C51單片機為核心的控制部分,由四個DS18B20溫度傳感器,LED數(shù)碼管顯示,鍵盤,復位電路,報警電路等部分組成。
我們設計的是分布式測溫系統(tǒng),要用到多個DS18B20溫度傳感器,采集的溫度數(shù)據(jù)眾多,首先要弄清楚傳感器的序列號,以便準確、有效地對每個溫度進行尋址。每個傳感器都有唯一的64位產(chǎn)品序列號。由溫度傳感器DS18B20采集的被測對象的數(shù)據(jù),不用經(jīng)過A/D轉換,可以直接傳給AT89C51單片機,由單片機的P3.7口作為數(shù)據(jù)的輸入端口,在AT89C51單片機內有4KB閃爍可擦除、可編程的只讀存儲器,128B的數(shù)據(jù)存儲空間,可直接推動LED數(shù)碼管顯示數(shù)據(jù)。DS18B20由VCC提供電源,連接一個4.7K的上拉電阻,傳感器的DQ腳直接連接到單片機的P1.0口。溫度測量部分的電路就連接好了。圖2為DS18B20與單片機的連接電路圖。
圖2 DS18B20與單片機的連接電路圖
通過鍵盤鍵入要顯示的測量點的傳感器的序列號,當其中一個按鍵被按下時,INT0就會接收到一個負脈沖信號,單片機的外部中斷會被激活,我們會檢測到P0~P3口的信號跳變,從而確定是那個按鍵被按下。當單片機接受到具體的中斷信號時,就會讀取在初始化時已經(jīng)按序列號編碼的對應序列號的DS18B20傳感器中的溫度數(shù)據(jù),完成溫度數(shù)據(jù)的對應讀取。
該部分電路主要使用了移位寄存器芯片74LA164和七段數(shù)碼管。單片機通過I2C總線將要顯示的數(shù)據(jù)信號傳送到移位寄存器芯片74LS164寄存起來,再由移位寄存器控制數(shù)碼管的顯示,從而實現(xiàn)移位寄存點亮數(shù)碼管,數(shù)碼管顯示所接收的數(shù)據(jù)。
當所測量的溫度值達到所設定溫度的上下限時,所接受的信號可觸發(fā)蜂鳴器實現(xiàn)報警功能。單片機通過三極管驅動揚聲器發(fā)出警笛聲,選擇了壓電式蜂鳴器。圖3為報警電路電路圖。
圖3 報警電路電路圖
本課題的系統(tǒng)軟件設計主要是在單片機的控制下完成多點溫度的測量,并將溫度值顯示,超過上下限溫度值報警的功能。要實現(xiàn)系統(tǒng)的各種功能必須經(jīng)過以下幾個步驟:傳感器DS18B20采集的各點的溫度信號傳遞給單片機,在鍵盤的鍵入選擇下,顯示所指定編號的傳感器的溫度值,并將溫度值通過數(shù)碼管顯示出來,若溫度超過所設定的上下限范圍則驅動蜂鳴器,發(fā)出報警。
主程序的主要功能是負責溫度的實時顯示,讀出并處理DS18B20測量的溫度值,測量每1s進行一次,當系統(tǒng)初始上電時,單片機必須找出總線上所有傳感器的ROM代碼,這樣單片機就能夠判斷出傳感器的數(shù)目和類型。
讀出溫度子程序主要功能是讀出RAM中的9字節(jié),在讀出時需要進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。DS18B20的讀時序分讀0時序和讀1時序兩個過程。讀時序是主機先把單總線拉低,之后的15us內必須釋放單總線,以便將數(shù)據(jù)傳送到單總線上。
我們所設計的系統(tǒng)能接收到溫度信號,還要將溫度信號顯示出來。對于輸入的溫度信號的顯示是用了移位寄存器芯片74LS164。當串行輸入端任意一個為低電平,則禁止新數(shù)據(jù)輸入,在時鐘端CLOCK)脈沖上升沿作用下Q0為低電平。當串行輸入端有一個為高電平時,則另一個就允許數(shù)據(jù)輸入,并在CLOCK上升沿作用下決定Q0的狀態(tài)。
[1]李光飛,樓然苗,胡佳文.單片機課程設計實例指導[M].北京:北京航空航天大學出版社,2004(1):34-50.
[2]馬家辰.MCS-51單片機原理及接口技術[M].哈爾濱:哈爾濱工業(yè)大學出版社:1997:100-120.
[3]郁有文,常健,程繼紅.傳感器原理及工程應用[M].西安:西安電子科技大學出版社,2003:15-23.
[4]余成波,胡新宇,趙勇.傳感器與自動檢測技術[M]:北京:高等教育出版社,2004:35-45.
[5]杭和平,楊芳,謝飛.單片機原理與應用[M].北京:機械工業(yè)出版社,2008:155-169.
[6]黃維翼,眭碧霞.單片機應用與項目實踐[M].北京:清華大學出版社,2010:4-15.
[7]張粵,倪偉.DS18B20在分布式測溫系統(tǒng)中的應用[N].淮陰工學學報,2002-10-05.
[8]彭東林.多點溫度測量系統(tǒng)設計[J].重慶工學院,2007-06:10-14.