侯楊陽
(江蘇第二師范學(xué)院物理與電子信息工程學(xué)院 江蘇省南京市 210000)
單片機(jī)技術(shù)是現(xiàn)代電子工程領(lǐng)域中迅速發(fā)展的技術(shù),極大地推動了電子工業(yè)的發(fā)展[1],該課程也是電子類專業(yè)的核心專業(yè)必修課程。但學(xué)生學(xué)習(xí)這門課程的實際過程中,仍然存在理論與實踐不能很好地結(jié)合應(yīng)用的現(xiàn)象。因此,基于疫情這個大背景,本文設(shè)計了一款基于單片機(jī)的非接觸紅外測溫系統(tǒng),該系統(tǒng)是以單片機(jī)作為紅外測溫傳感器數(shù)據(jù)傳輸和控制重心。除此之外,還設(shè)計了蜂鳴器報警模塊、顯示模塊、功能按鍵等外圍設(shè)備模塊。這種典型的測溫系統(tǒng)能夠作為項目教學(xué)演示設(shè)備,讓學(xué)生對于單片機(jī)有更深入的理解,有效提高學(xué)生的學(xué)習(xí)興趣。
此測溫體系分為硬件電路部分和軟件編程部分。STC89C52單片機(jī)[2]相當(dāng)于人類的大腦控制外圍硬件電路,硬件電路主要包括紅外測溫電路[3]、警告電路、液晶顯示電路、按鍵電路等。C語言程序設(shè)計主要包括:單片機(jī)基本輸入輸出程序、TN9紅外接收、測量溫度模塊程序、警告模塊程序、按鍵模塊程序、顯示模塊程序。該系統(tǒng)在工作時,操作者先將紅外測量儀對準(zhǔn)被測量目標(biāo)(人體或物體),電源通過傳統(tǒng)的Micro轉(zhuǎn)USB接口與電腦連接,接通電源等待2秒鐘,紅外傳感器就會把溫度信號傳送到單片機(jī)[4]中進(jìn)行處理,然后送到LCD1602顯示出來。
系統(tǒng)整體框圖如圖1所示。

圖1:系統(tǒng)整體框圖
本文選用的STC89C52單片機(jī),是一種功率損耗不高、性能穩(wěn)定的CMOS8位單片機(jī),具有8K在系統(tǒng)可編程Flash存儲器。擁有靈活的8位CPU和在系統(tǒng)可編程Flash,內(nèi)帶4K字節(jié)EEPROM存儲空間,可直接使用串口下載,因此STC89C52可以方便的應(yīng)用在大多數(shù)嵌入式控制系統(tǒng)。指令代碼完全兼容80C51單片機(jī)。封裝用的是PDIP-40直插式封裝。
STC89C52單片機(jī)擁有二十四個基本輸入輸出口,部分引腳可以復(fù)用作地址線、數(shù)據(jù)線,有一個高電平有效的復(fù)位鍵,兩個中斷引腳,兩個計數(shù)脈沖引腳,兩個晶振引腳,還有電源、接地引腳等,電源多采用5V供電。
紅外模塊用來采集聚焦被測目標(biāo)的紅外輻射能量,將紅外能量整合在紅外探測器上并轉(zhuǎn)化為數(shù)據(jù)與能量強(qiáng)度大小相對應(yīng)的電子數(shù)字信號送進(jìn)溫度傳感器,TN901是集成度很高的紅外測溫模塊[5],模塊的探測器接收到紅外輻射能量后,轉(zhuǎn)化為交變的脈沖電信號,能夠?qū)崿F(xiàn)非接觸快速測量。模塊包括溫度補(bǔ)償電路和線性處理電路來提高測量精度,因此不需要增加放大電路、整流濾波電路和AD轉(zhuǎn)換模塊。TN901有五個引腳,管腳1為開始測溫信號引腳,低電平有效,管腳2是接地引腳,管腳3為2KHz時鐘輸出引腳,管腳4是數(shù)據(jù)接收引腳,管腳5是V為電源引腳VCC,VCC一般為3V到5V之間的電壓,此電路電源用5V供電。
相比較LED只能顯示數(shù)字的短處與不足,LCD1602的優(yōu)點是可以顯示字母和數(shù)字使顯示內(nèi)容更加充實具體。本設(shè)計使用的是LCD動態(tài)顯示,動態(tài)顯示意味著中央處理器每秒對顯示器件進(jìn)行數(shù)據(jù)更新,所謂的動態(tài)就是一位一位地輪流點亮刷新各位顯示器的數(shù)值,利用人的視覺停留感的誤差達(dá)到顯示數(shù)值刷新的目的。
本次設(shè)計的系統(tǒng)啟動紅外非接觸式測量溫度的功能只需打開電源電路的開關(guān),按鍵采用動態(tài)掃描方式,單片機(jī)[6]通過讀取程序連續(xù)時刻更新掃描按鍵審核按鍵的兩種狀態(tài),當(dāng)發(fā)現(xiàn)到有按鍵狀態(tài)改變時,單片機(jī)經(jīng)軟件程序響應(yīng)追尋鍵值并通過循環(huán)語句程序完成與按鍵狀態(tài)相符合的鍵操作。通過按鍵對報警溫度區(qū)間極限值進(jìn)行改變,例如數(shù)字的加和減以及改變數(shù)值之后的確認(rèn)。后面要用軟件編程時間延遲來消除按鍵抖動。
2.5.1 電源電路模塊
系統(tǒng)使用5V電源供電,紅外系統(tǒng)和LCD鍵盤共電電壓為5V,二極管是電源接通的指示燈,兩個電容起濾波的作用。
2.5.2 報警電路模塊
報警電路實際就是蜂鳴器驅(qū)動電路,F(xiàn)M接單片機(jī)P3.7口輸出控制信號,三極管作為控制蜂鳴器中斷的電子開關(guān)。當(dāng)FM引腳輸出高電平時,三極管飽和導(dǎo)通,電子開關(guān)打開蜂鳴器發(fā)出警告,當(dāng)FM引腳輸出低電平時三極管截止斷電蜂鳴器靜音。
2.5.3 晶振電路
晶振用的是12M無源晶振。
系統(tǒng)電路原理圖如圖2所示。

圖2:系統(tǒng)電路原理圖
程序部分包括單片機(jī)系統(tǒng)基本輸入輸出功能主程序模塊,非接觸紅外測溫模塊[7],通過軟件方法延時消抖的動態(tài)刷新按鍵模塊和溫度數(shù)值液晶顯示模塊。
(1)主程序模塊用來實現(xiàn)系統(tǒng)基本的輸入輸出功能和外圍設(shè)備識別供電的功能,對時間中斷延時規(guī)范包括溫度信號的傳送,單片機(jī)與電腦端的通信連接設(shè)備識別,按鍵持續(xù)更新掃描和溫度數(shù)值液晶顯示等功能。
(2)紅外測溫模塊[8]程序功能是從非接觸式紅外溫度傳感器獲得溫度數(shù)值,將開爾文溫標(biāo)換算成攝氏溫度值。
(3)按鍵模塊程序?qū)崿F(xiàn)的功能是獲得某個按鍵是否被按下,實現(xiàn)相應(yīng)的按鍵請求改變溫度上下限數(shù)值操作等。
(4)顯示模塊程序的功能是從單片機(jī)接收相應(yīng)的溫度數(shù)值并表示在LCD上。
本設(shè)計的紅外測溫系統(tǒng)的程序整體由C語言編寫,系統(tǒng)的可讀性和可移植性得到了提高。根據(jù)硬件模塊實現(xiàn)的功能對應(yīng)進(jìn)行程序編寫,將系統(tǒng)的硬件分為相應(yīng)的子程序模塊,分成各個部分進(jìn)行編寫、調(diào)試,使程序簡潔明了,在調(diào)試過程中也有利于自己發(fā)現(xiàn)程序語法錯誤,提高了編程的效率。整個系統(tǒng)軟件程序模塊主要分成系統(tǒng)基礎(chǔ)輸入輸出主程序、非接觸紅外測溫模塊、按鍵掃描更新模塊、液晶顯示[9]模塊等子程序。Kei1C51集成開發(fā)環(huán)境是51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。Kei1C51軟件擁有多樣的庫函數(shù)和功能齊全的軟件調(diào)試工具。
經(jīng)過Keil軟件編譯程序后,通過ISP軟件和STC下載器實現(xiàn)單片機(jī)與電腦的通信,需要設(shè)置單片機(jī)波特率。
使用Keil軟件進(jìn)行程序編寫調(diào)試,用Proteus軟件進(jìn)行系統(tǒng)硬件功能的仿真。新建Keil項目,用C語言編寫源程序,然后編譯并修改源程序直至實現(xiàn)仿真功能 ,生成.hex文件。在Proteus ISIS中左鍵雙擊STC89C52元件在該窗口的“Program File”欄中,選中在Keil中編譯正確的“.hex”文件;點擊play開始進(jìn)行程序燒寫仿真。
系統(tǒng)實物圖如圖3所示。

圖3:實物圖
本系統(tǒng)利用STC89C52單片機(jī)[10]作為控制外圍設(shè)備的大腦核心,由硬件部分和軟件部分構(gòu)成,硬件部分包括了核心單片機(jī)模塊、紅外測溫模塊、液晶顯示模塊、通過軟件消抖減小誤差的動態(tài)按鍵模塊,軟件程序部分主要是單片機(jī)基本功能主程序模塊、紅外測量和讀取溫度程序模塊、液晶顯示溫度值程序模塊。單片機(jī)統(tǒng)治紅外測溫模塊把接收到的溫度數(shù)據(jù)經(jīng)過循環(huán)語句程序換算后顯示在液晶上。本系統(tǒng)可作為項目教學(xué)演示設(shè)備,模塊化的實物教學(xué)便于學(xué)生理解,有助于學(xué)生高質(zhì)量的掌握單片機(jī)相關(guān)知識,同時有效提高學(xué)生學(xué)習(xí)單片機(jī)課程的動力和興趣。