田挺
摘要:隨著電子產品向智能化和微型化的不斷發展,單片機已成為電子產品研制和開發中首選的控制器。為了更好地推廣單片機在實際生活和生產中的應用,本文介紹一種應用AT89C52單片機設計的溫度控制系統。
該環境溫度系統采用溫度傳感器DS18B20通過I2C總線通信來獲得當前溫度,并與從3X4矩陣鍵盤輸入的溫度值進行驗證,系統自動控制升溫或降溫的操作,將溫度穩定在所設定的溫度值。
經實際制作表明該環境溫度控制系統具有體積小、操作靈活、可靠性高、實用、成本低等特點,適合住宅和各類溫室溫度的控制,具有一定的實際意義。
關鍵詞:單片機;鍵盤;穩定溫度;顯示器;溫度控制
1. 系統功能的確定
一個控制系統是否能被大眾所接受,在于該控制系統是否擁有人性化的操作功能。為了使本次設計的環境溫度控制系統具有操作簡單、靈活及高可靠性等特點,確定了該系統功能:
3x4矩陣鍵盤輸入。
溫度采集。
溫度顯示。
溫度控制執行。
溫度測量范圍為0-99度,溫度有效范圍為2-98度,允許誤差為1度。
2. 人機交互與串口通信
該熱爐溫度控制系統由溫度采集、3x4矩陣鍵盤輸入、溫度顯示、溫度控制執行等四大模塊組成。
溫度采集:由溫度傳感器DS18B20完成,并通過串口通信技術與單片機進行數據傳輸,使用單片機P3.7端口。
3x4矩陣鍵盤輸入:采用外部中斷0來判斷是否擁有輸入請求,并通過鍵盤掃描技術來獲取所輸入的溫度值和偏差溫度值,輸入更靈活、更方便,使用單片機P0口和P3.2端口。
溫度顯示:通過4個7段LED數碼顯示管顯示當前溫度值和設定的溫度值,及時反應當前溫度的變化與設置溫度的關系,使用單片機P1.0~P1.5端口。
溫度控制執行:系統根據當前溫度與設置的溫度自動進行相應的升溫或降溫的操作,在系統自動進行升溫或降溫處理的同時顯示相應的指示燈,讓使用者知道系統正在進行的操作,使用單片機P2.2~P2.3端口。
3. 人機交互與串口通信單元設計
在該系統中,人機交互技術主要應用在恒定溫度與偏差溫度的設置,以及當前溫度與設置溫度的顯示;串口通信技術應用在對溫度的采集。
(1)鍵盤輸入電路
在本系統中,采用外部中斷0控制鍵盤輸入請求,鍵盤輸入主要采用3x4矩陣鍵盤掃描技術。當按下“設置/切換”鍵時,進入恒定溫度的設置,可從鍵盤中自由輸入0—9的數字,如果輸入錯誤可按“刪除(*)”鍵進行刪除,如果要設置偏差溫度,再按一下“設置/切換”鍵,可進入偏差溫度的設置,按“確定(#)”鍵,保存設置并退出鍵盤輸入,進入溫度控制狀態。
(2)LED七段數碼動態顯示電路
在本系統中采用了LED七段數碼動態顯示電路來顯示溫度值,顯示范圍在0-99之間,該電路由顯示、片選、譯碼三部分組成。
顯示部分:由兩個兩位的LED七段共陰數碼管構成,分別用來顯示當前溫度和設置溫度。
片選部分:由一片2-4譯碼器(74LS139)構成,單片機的P1.4和P1.5輸出兩位片選信號到2-4譯碼器的A、B端口,進行譯碼后輸出到LED七段數碼管的片選端口。
譯碼部分:該電路由LED七段數碼管顯示譯碼器(4511)來完成,單片機將要顯示的十進制數據轉換成8421BCD編碼,對應的譯碼值再分別送到LED七段數碼管顯示譯碼器的A、B、C、D引腳進行譯碼,最后輸出到LED七段數碼管的相引腳。
(3)串口通信電路
為了使測得的溫度更準確,在本系統中采用了溫度傳感器DS18B20來獲取當前溫度,而DS18B20是采用I2C總線進行通信的,單片機使用P3.7端口與DS18B20的數據通訊端口相連接,并通過軟件實現P3.7控制DS18B20的讀和寫。
4. 控制執行單元設計
該電路的主要任務是完成單片機所發出的升溫或降溫操作,來控制外部的升溫或降溫設備。電路的GK1和GK2端分別與單片機的P2.2和P2.3端相連接,其工作原理如下:
在通常情況下,GK1和GK2均為低電平,當單片機向溫度控制執行電路發送降溫命令時,GK1為高電平,GK2為低電平,使三極管Q1飽和導通,此時使繼電器RL1閉合控制外部的降溫設備進行工作,同時發光二極管D9將被點亮,提醒使用者溫度過高正在進行降溫操作。
當單片機向溫度控制執行電路發送升溫命令時,GK1為低電平,GK2為高電平,使三極管Q2飽和導通,此時使繼電器RL2閉合控制外部的升溫設備進行工作,同時發光二極管D4將被點亮,提醒使用者溫度過低正在進行升溫操作。
5. 軟件設計
(1)設計思路
根據所學知識,實現本系統的軟件部分將使用匯編語言,要配合硬件部分實現輸入一個需要恒定的溫度值和偏差溫度,與從溫度傳感器所獲取的當前實際溫度相比較,并向溫度控制執行電路發出升溫或降溫的命令,在這一過程中將隨時顯示當前溫度值和設置的溫度值。其主要實現的部分包括:鍵盤輸入、溫度采集、數據轉換、動態顯示、溫度控制等。
(2)溫度采集子程序
溫度采集子程序主要負責驅動外部的溫度傳感器DS18B20進行工作,通過串口通信方式向DS18B20寫入ROM命令,并讀取當前溫度值,將讀取的數據存放在26H-2EH存儲單元,其中26H單元存放溫度值的低位,27H單元存放溫度值的高位。
(3)數據轉換子程序
數據轉換子程序功能是將從溫度采集子程序中采集的十六進制溫度數據,轉換成十進制的數值并存儲在指定的存儲單元內。由于該恒溫系統設計的溫度檢測有效為0-99,所以數據轉換原理為:將獲取到的十六進制溫度值除以十進制數10,所得到的商為相應十進制數的十位,并存入31H單元,余數則為相應十進制數的個位,并存入30H單元。
(4)動態顯示子程序
在該恒溫系統中使用了兩個兩位的LED七段數碼管來顯示系統所采集的當前溫度值和設置的溫度值,為了不占用更多的單片機端口,在針對顯示電路的設計時采用了動態顯示的方案,而動態顯示子程序的主要任務就是控制顯示電路的掃描規律。
(5)溫度控制執行子程序
溫度控制執行子程序的任務是檢測由溫度計測得的當前溫度值是否在設置溫度值的允許范圍內,若當前溫度大于設置溫度的允許范圍,表明當前溫度過高,立即向溫度控制電路發出降溫命令(P2.2為高電平,P2.3為低電平);若當前溫度小于設置溫度的允許范圍,表明當前溫度過低,立及向溫度控制電路發出升溫命令(P2.2為低電平,P2.3為高電平)。
(6)鍵盤輸入中斷服務子程序
在本系統中鍵盤輸入請求使用INT0(外部中斷0)來實現,INT0采用電平觸發方式,當按下鍵盤中的“設置/切換”鍵時,INT0(P3.2)端為低電平時,進入鍵盤輸入中斷服務子程序,此時可以設置要恒定溫度,“刪除(*)”鍵為刪除鍵,點擊一次可刪除輸入的一位數據,在輸入過程中通過P0.7端口判斷每次按鍵后是否釋放,當按下“確定(#)”號鍵時,則保存設置并退出中斷服務子程序,返回到主程序程序。endprint