孔令榮
(南京理工大學(xué)泰州科技學(xué)院 電子電氣工程學(xué)院,江蘇 泰州225300)
在當(dāng)今農(nóng)業(yè)和工業(yè)生產(chǎn)過程中,溫度作為一個(gè)基本物理量起著越來越重要的作用。隨著科技的發(fā)展,人們對(duì)溫度測(cè)量的要求是越來越高,對(duì)溫度測(cè)量的范圍也越來越廣。因此,溫度測(cè)量和控制技術(shù)具有一定的必要性。
系統(tǒng)設(shè)計(jì)硬件電路分為:控制電路、鍵盤電路、傳感器電路、顯示電路和報(bào)警電路。AVR單片機(jī)接收到TC72溫度傳感器檢測(cè)到的溫度信號(hào)后,經(jīng)過控制運(yùn)算給出控制信號(hào),通過LCD顯示檢測(cè)溫度的大小;矩陣鍵盤可以設(shè)定溫度上下限值,當(dāng)溫度超出設(shè)定范圍時(shí),報(bào)警電路會(huì)發(fā)出警報(bào),達(dá)到溫度測(cè)量和控制的目的。SPI溫控系統(tǒng)的工作原理如圖1所示。
圖1 基于SPI接口溫測(cè)系統(tǒng)
AVR單片機(jī)由Atmel公司利用Flash新技術(shù),研制的RISC精簡(jiǎn)指令集的高速8位單片機(jī),與51系列單片機(jī)相比,在內(nèi)部資源和接口方面,AVR系列單片機(jī)更為豐富和強(qiáng)大。ATmega16單片機(jī)是AVR單片機(jī)系列中的一種。
ATmega16單片機(jī)是ATmega系列中一種高性能、低功耗的8位AVR RISC微處理器[1]。它支持131條指令,并且大多數(shù)指令只需要單時(shí)鐘周期就能執(zhí)行完成。因此,ATmega16單片機(jī)的數(shù)據(jù)吞吐率可達(dá)1 MI/S·MHz,從而使系統(tǒng)在處理速度與功耗之間的矛盾得到了有效緩減。另外,ATmega16單片機(jī)的內(nèi)核不但指令集豐富而且它的通用工作寄存器達(dá)32個(gè)。其中運(yùn)算邏輯單元與所有寄存器相連,這樣一條指令在一個(gè)時(shí)鐘的周期內(nèi)就可以同時(shí)訪問兩個(gè)獨(dú)立寄存器。這種結(jié)構(gòu)形式不僅提高了代碼效率,而且其數(shù)據(jù)吞吐率比普通的CISC微控制器高10倍[2]。
矩陣式鍵盤,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,行、列分別連接到按鍵開關(guān)的兩端,列線通過上拉電阻接到高電平。無按鍵動(dòng)作時(shí),列線處于高電平狀態(tài);有按鍵按下時(shí),交點(diǎn)的行線和列線接通,列線電平狀態(tài)將由與此列線相連的行線電平?jīng)Q定。行線電平如果為低,則列線電平為低;行線電平如果為高,則列線電平也為高。這一點(diǎn)是識(shí)別矩陣鍵盤按鍵是否被按下的關(guān)鍵。由于矩陣鍵盤中行、列線為多鍵公用,各按鍵均影響該鍵所在行、列的電平,所以必須將行、列線信號(hào)配合適當(dāng)處理,才能確定閉合鍵所在的位置。矩陣式鍵盤節(jié)省了大量I/O接口,適用于按鍵數(shù)量較多的場(chǎng)合。本系統(tǒng)矩陣式鍵盤功能設(shè)計(jì)如圖2所示。
圖2 矩陣式鍵盤功能設(shè)計(jì)
16鍵解碼芯片74C922采用CMOS工藝技術(shù)制造,工作電壓為3~15 V,具有二鍵鎖定功能,編碼為三態(tài)輸出,可與單片機(jī)直接連接,內(nèi)部振蕩器完成4×4鍵盤矩陣掃描,外接電容用于消抖,鍵盤矩陣的4行分別連接解碼芯片X1~X4引腳,4列分別連接Y1~Y4引腳。當(dāng)有按鍵按下時(shí),解碼芯片的DA引腳向連接單片機(jī)的引腳輸出高電平,同時(shí)封鎖其他按鍵,片內(nèi)鎖存器將保持當(dāng)前按鍵的4位編碼。單片機(jī)與74C922的硬件連接圖如圖3所示[3]。
圖3 單片機(jī)與74C922的硬件連接圖
設(shè)計(jì)使用的TC72溫度傳感器是一個(gè)數(shù)字溫度傳感器,溫度測(cè)量范圍為-55~+125℃。該傳感器具有一個(gè)4線串行接口,通過這個(gè)串行接口與單片機(jī)或其他外圍設(shè)備進(jìn)行通信,并且該TC72接口與SPI協(xié)議兼容。同時(shí)在使用TC72時(shí)不需要附加外部電路,它可以工作于連續(xù)的溫度轉(zhuǎn)換模式(Continuous Conversion Mode)或單次轉(zhuǎn)換模式(One-Short Mode)。在連續(xù)轉(zhuǎn)換模式下,TC72約每隔150 ms進(jìn)行一次溫度轉(zhuǎn)換,并將獲取的數(shù)據(jù)保存于溫度寄存器中,后者在一次轉(zhuǎn)化后即進(jìn)入省電模式。TC72寄存器地址如表1所示。
表1 TC72寄存器地址
TC72溫度傳感器2 Byte溫度數(shù)據(jù)寄存器格式如表2所示。
表2 TC72溫度傳感器2 Byte溫度數(shù)據(jù)寄存器格式
系統(tǒng)中由于要對(duì)實(shí)時(shí)溫度和報(bào)警溫度進(jìn)行顯示,因而選擇LCD1602顯示屏作為輸出器件。LCD1602字符型液晶顯示屏有16條或14條引腳線,多的2條引腳線用于接背光電源正負(fù)極,平時(shí)使用較少。LCD1602可以顯示兩行且每行16個(gè)字即32個(gè)字符,而且LCD1602價(jià)格便宜,其外圍電路的配置簡(jiǎn)單,具有較高的性價(jià)比。LCD1602內(nèi)部的字符發(fā)生存儲(chǔ)器存儲(chǔ)了包括英文字母的大小寫、常用的符號(hào)及阿拉伯?dāng)?shù)字等160個(gè)不同的點(diǎn)陣字符圖形,其中每一個(gè)字符都對(duì)應(yīng)著一個(gè)固定的代碼,例如“B”的代碼是01000010B(42H),顯示時(shí)模塊把地址42H中的點(diǎn)陣字符圖形顯示出來,這樣就能夠看到字母“B”。單片機(jī)與LCD1602顯示屏的硬件連接如圖4所示。
圖4 單片機(jī)與LCD1602顯示屏硬件連線圖
在單片機(jī)系統(tǒng)中,單片機(jī)之所以處于核心地位,最重要的原因在于單片機(jī)上能夠運(yùn)行強(qiáng)大的軟件。因此可以說,硬件是設(shè)計(jì)的基礎(chǔ),軟件是設(shè)計(jì)的關(guān)鍵。只有軟硬件協(xié)調(diào)配合,應(yīng)用系統(tǒng)才能良好的工作。
流程圖分析:當(dāng)電源上電后,系統(tǒng)進(jìn)行初始化,系統(tǒng)開始運(yùn)行,啟動(dòng)TC72溫度傳感器并讀取溫度;若此時(shí)溫度沒有超出設(shè)置的報(bào)警溫度,則液晶正常顯示;若超出報(bào)警溫度,則蜂鳴器開始報(bào)警,按ESC鍵可退出報(bào)警。液晶正常顯示后,系統(tǒng)程序?qū)︽I盤進(jìn)行掃描,若有設(shè)置鍵按下,則開始對(duì)報(bào)警溫度進(jìn)行設(shè)置,設(shè)置完成后重新讀取溫度并顯示。系統(tǒng)總流程圖如圖5所示。
圖5 系統(tǒng)總流程圖
流程圖分析:若有設(shè)置鍵按下,則進(jìn)入設(shè)置溫度模式;若無按鍵按下,則讀取溫度數(shù)據(jù)送入液晶屏顯示。在設(shè)置模式下設(shè)置溫度,完成后再送數(shù)據(jù)到液晶屏顯示。鍵盤程序流程圖如圖6所示。
流程圖分析:首先對(duì)1602顯示屏進(jìn)行初始化,然后進(jìn)行忙信號(hào)檢查,如果BF=0,則開始讀取溫度并寫入相應(yīng)的數(shù)據(jù)進(jìn)行顯示;如果BF=1,則表示模塊正在進(jìn)行內(nèi)部操作,暫時(shí)不會(huì)接收任何數(shù)據(jù)及外部指令,直到BF=0為止。LCD顯示程序流程圖如圖7所示。
單片機(jī)應(yīng)用系統(tǒng)的調(diào)試主要從軟件調(diào)試和硬件調(diào)試兩方面入手。兩種調(diào)試過程緊密相關(guān),而并非分開或孤立的,在基于SPI接口的溫度測(cè)量系統(tǒng)設(shè)計(jì)中,用到了AVR Studio 4+Win AVR和Proteus ISIS軟件。
模擬調(diào)試:首先運(yùn)行AVR Studio軟件,在新建項(xiàng)目窗口中輸入設(shè)計(jì)所用的程序,輸入完成后進(jìn)行編譯、運(yùn)行、保存。然后在Proteus ISIS軟件中畫出硬件電路圖并進(jìn)行電氣規(guī)則檢查;如果電路設(shè)計(jì)無誤,選中單片機(jī)ATmega16并雙擊,在對(duì)話框中點(diǎn)擊Program File按鈕,找到經(jīng)過AVR Studio軟件編譯生成的hex文件,載入后點(diǎn)擊OK按鈕。完成后在Proteus ISIS的Debug菜單中選擇Execute,即可運(yùn)行程序。
實(shí)現(xiàn)功能的具體方法:按高溫設(shè)置鍵,可調(diào)整當(dāng)前溫度的最高值,按0~9鍵,輸入溫度最高值的大小,按Enter鍵完成設(shè)置;按低溫設(shè)置鍵,可調(diào)整當(dāng)前溫度最低值,按0~9鍵,可輸入溫度最低值大小,按Enter鍵完成設(shè)置;在進(jìn)行高低溫設(shè)置的過程中,可使用鍵盤中的ESC、Backspace鍵進(jìn)行返回和刪除操作。高低溫設(shè)置完成后,可通過調(diào)節(jié)TC72溫度傳感器上的加減鍵進(jìn)行實(shí)時(shí)溫度調(diào)節(jié);此時(shí),如果調(diào)節(jié)的溫度超出設(shè)置的溫度范圍,就會(huì)產(chǎn)生報(bào)警。
設(shè)計(jì)了一種基于SPI接口的溫度測(cè)量系統(tǒng),介紹了如何利用AVR單片機(jī)控制TC72溫度傳感器的新型設(shè)計(jì)方法。該設(shè)計(jì)利用單片機(jī)C語言,以AVR單片機(jī)為控制核心,通過使用具有SPI接口功能的TC72溫度傳感器,實(shí)現(xiàn)對(duì)溫度進(jìn)行實(shí)時(shí)監(jiān)控顯示和報(bào)警功能。
[1] 朱飛.AVR單片機(jī)C語言開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2009.
[2]胡漢才.高檔AVR單片機(jī)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2008.
[3] 楊正忠.AVR單片機(jī)應(yīng)用開發(fā)指南及實(shí)例精解[M].北京:中國(guó)電力出版社,2008.