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