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