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

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

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

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