基于SPI接口的溫度測(cè)量系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 設(shè)計(jì)了基于SPI接口的溫度測(cè)量系統(tǒng),采用ATmega16單片機(jī)控制,TC72溫度傳感器采集溫度,以及1602液晶屏進(jìn)行數(shù)據(jù)顯示。系統(tǒng)主要由溫度傳感器電路、LCD液晶顯示模塊電路、矩陣式鍵盤電路、報(bào)警電路和ATmega16單片機(jī)控制電路5個(gè)模塊組成。ATmega16單片機(jī)根據(jù)TC72溫度傳感器檢測(cè)到的溫度,經(jīng)一定的控制算法給出控制信號(hào),通過(guò)LCD顯示出檢測(cè)溫度的大??;矩陣鍵盤可以設(shè)定上限和下限溫度,當(dāng)實(shí)時(shí)溫度超出設(shè)定范圍時(shí),報(bào)警電路會(huì)發(fā)出警報(bào),達(dá)到溫度測(cè)量和控制的目的。
關(guān)鍵詞 單片機(jī);SPI接口;溫度測(cè)量
在當(dāng)今農(nóng)業(yè)和工業(yè)生產(chǎn)過(guò)程中,溫度作為一個(gè)基本物理量起著越來(lái)越重要的作用。隨著科技的發(fā)展,人們對(duì)溫度測(cè)量的要求是越來(lái)越高,對(duì)溫度測(cè)量的范圍也越來(lái)越廣。因此,溫度測(cè)量和控制技術(shù)具有一定的必要性。
1 硬件電路設(shè)計(jì)
系統(tǒng)設(shè)計(jì)硬件電路分為:控制電路、鍵盤電路、傳感器電路、顯示電路和報(bào)警電路。AVR單片機(jī)接收到TC72溫度傳感器檢測(cè)到的溫度信號(hào)后,經(jīng)過(guò)控制運(yùn)算給出控制信號(hào),通過(guò)LCD顯示檢測(cè)溫度的大?。痪仃囨I盤可以設(shè)定溫度上下限值,當(dāng)溫度超出設(shè)定范圍時(shí),報(bào)警電路會(huì)發(fā)出警報(bào),達(dá)到溫度測(cè)量和控制的目的。SPI溫控系統(tǒng)的工作原理如圖1所示。
1.1 控制電路模塊
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微處理器。它支持131條指令,并且大多數(shù)指令只需要單時(shí)鐘周期就能執(zhí)行完成。因此,ATmega16單片機(jī)的數(shù)據(jù)吞吐率可達(dá)1 MI/S·MHz,從而使系統(tǒng)在處理速度與功耗之間的矛盾得到了有效緩減。另外,AT mega16單片機(jī)的內(nèi)核不但指令集豐富而且它的通用工作寄存器達(dá)32個(gè)。其中運(yùn)算邏輯單元與所有寄存器相連,這樣一條指令在一個(gè)時(shí)鐘的周期內(nèi)就可以同時(shí)訪問(wèn)兩個(gè)獨(dú)立寄存器。這種結(jié)構(gòu)形式不僅提高了代碼效率,而且其數(shù)據(jù)吞吐率比普通的CISC微控制器高10倍。
1.2 鍵盤電路模塊
矩陣式鍵盤,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,行、列分別連接到按鍵開(kāi)關(guān)的兩端,列線通過(guò)上拉電阻接到高電平。無(wú)按鍵動(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所示。
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所示。
1.3 溫度傳感器模塊
設(shè)計(jì)使用的TC72溫度傳感器是一個(gè)數(shù)字溫度傳感器,溫度測(cè)量范圍為-55~+125℃。該傳感器具有一個(gè)4線串行接口,通過(guò)這個(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所示。
TC72溫度傳感器2 Byte溫度數(shù)據(jù)寄存器格式如表2所示。
1.4 LCD1602顯示模塊
系統(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ǔ)了包括英文字母的大小寫(xiě)、常用的符號(hào)及阿拉伯?dāng)?shù)字等160個(gè)不同的點(diǎn)陣字符圖形,其中每一個(gè)字符都對(duì)應(yīng)著一個(gè)固定的代碼,例如“B”的代碼是01000010B(42H),顯示時(shí)模塊把地址42H中的點(diǎn)陣字符圖形顯示出來(lái),這樣就能夠看到字母“B”。單片機(jī)與LCD1602顯示屏的硬件連接如圖4所示。
2 軟件設(shè)計(jì)
在單片機(jī)系統(tǒng)中,單片機(jī)之所以處于核心地位,最重要的原因在于單片機(jī)上能夠運(yùn)行強(qiáng)大的軟件。因此可以說(shuō),硬件是設(shè)計(jì)的基礎(chǔ),軟件是設(shè)計(jì)的關(guān)鍵。只有軟硬件協(xié)調(diào)配合,應(yīng)用系統(tǒng)才能良好的工作。
2.1 系統(tǒng)總流程圖
流程圖分析:當(dāng)電源上電后,系統(tǒng)進(jìn)行初始化,系統(tǒng)開(kāi)始運(yùn)行,啟動(dòng)TC72溫度傳感器并讀取溫度;若此時(shí)溫度沒(méi)有超出設(shè)置的報(bào)警溫度,則液晶正常顯示;若超出報(bào)警溫度,則蜂鳴器開(kāi)始報(bào)警,按ESC鍵可退出報(bào)警。液晶正常顯示后,系統(tǒng)程序?qū)︽I盤進(jìn)行掃描,若有設(shè)置鍵按下,則開(kāi)始對(duì)報(bào)警溫度進(jìn)行設(shè)置,設(shè)置完成后重新讀取溫度并顯示。系統(tǒng)總流程圖如圖5所示。
2.2 鍵盤程序流程圖
流程圖分析:若有設(shè)置鍵按下,則進(jìn)入設(shè)置溫度模式;若無(wú)按鍵按下,則讀取溫度數(shù)據(jù)送入液晶屏顯示。在設(shè)置模式下設(shè)置溫度,完成后再送數(shù)據(jù)到液晶屏顯示。鍵盤程序流程圖如圖6所示。
2.3 LCD顯示程序流程圖
流程圖分析:首先對(duì)1602顯示屏進(jìn)行初始化,然后進(jìn)行忙信號(hào)檢查,如果BF=0,則開(kāi)始讀取溫度并寫(xiě)入相應(yīng)的數(shù)據(jù)進(jìn)行顯示;如果BF=1,則表示模塊正在進(jìn)行內(nèi)部操作,暫時(shí)不會(huì)接收任何數(shù)據(jù)及外部指令,直到BF=0為止。LCD顯示程序流程圖如圖7所示。
3 仿真與調(diào)試
單片機(jī)應(yīng)用系統(tǒng)的調(diào)試主要從軟件調(diào)試和硬件調(diào)試兩方面入手。兩種調(diào)試過(guò)程緊密相關(guān),而并非分開(kāi)或孤立的,在基于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軟件中畫(huà)出硬件電路圖并進(jìn)行電氣規(guī)則檢查;如果電路設(shè)計(jì)無(wú)誤,選中單片機(jī)ATmega16并雙擊,在對(duì)話框中點(diǎn)擊Program File按鈕,找到經(jīng)過(guò)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è)置的過(guò)程中,可使用鍵盤中的ESC、Backspace鍵進(jìn)行返回和刪除操作。高低溫設(shè)置完成后,可通過(guò)調(diào)節(jié)TC72溫度傳感器上的加減鍵進(jìn)行實(shí)時(shí)溫度調(diào)節(jié);此時(shí),如果調(diào)節(jié)的溫度超出設(shè)置的溫度范圍,就會(huì)產(chǎn)生報(bào)警。
4 結(jié)束語(yǔ)
設(shè)計(jì)了一種基于SPI接口的溫度測(cè)量系統(tǒng),介紹了如何利用AVR單片機(jī)控制TC72溫度傳感器的新型設(shè)計(jì)方法。該設(shè)計(jì)利用單片機(jī)C語(yǔ)言,以AVR單片機(jī)為控制核心,通過(guò)使用具有SPI接口功能的TC72溫度傳感器,實(shí)現(xiàn)對(duì)溫度進(jìn)行實(shí)時(shí)監(jiān)控顯示和報(bào)警功能。