基于tinyAVR和Nokia3310 LCD的溫度繪圖儀
摘要:采用14引腳封裝的tinyAVR單片機(jī)、廣泛應(yīng)用于手機(jī)中的液晶顯示模塊Nokia3310 LCD和深受歡迎的單總線3引腳數(shù)字溫度傳感器DS18B 20,構(gòu)建了一款具備實(shí)用性和趣味性的,既可讀數(shù)、又可讀圖的雙模式溫度繪圖儀。
關(guān)鍵詞:tinyAVR單片機(jī);Nokia3310 LCD溫度繪圖儀;數(shù)字溫度傳感器
1 溫度繪圖儀介紹
溫度繪圖儀采用溫度傳感器和LCD顯示屏,以攝氏度和華氏度為刻度顯示環(huán)境溫度,同時(shí)也能顯示傳感器測(cè)量和記錄下來(lái)的最低溫度值和最高溫度值。圖1為溫度繪圖儀的方框圖。利用一個(gè)Nokia3310 LCD模塊來(lái)顯示讀數(shù),一個(gè)按鈕開(kāi)關(guān)用來(lái)切換屏幕顯示模式。第一種模式
為讀數(shù)模式,交替顯示攝氏溫度值和華氏溫度讀數(shù);第二種模式為繪圖模式,顯示一張由本系統(tǒng)繪制的,溫度隨時(shí)間變化的函數(shù)曲線圖。本系統(tǒng)利用一節(jié)1.5 V干電池供電。
2 Nokia3310 LCD模塊簡(jiǎn)介
Nokia3310的液晶顯示模塊是一種小巧的圖形式LCD模塊,在多種嵌入式系統(tǒng)的開(kāi)發(fā)中被廣泛應(yīng)用。它與多種單片機(jī)的連接方便,應(yīng)用非常廣泛。這種LCD模塊的大小為38 mm×35 mm,有效顯示面積為30 mm×22mm,顯示分辨率為84×48。該模塊是利用一片專用控制器/驅(qū)動(dòng)器芯片PCD8544設(shè)計(jì)的,能夠驅(qū)動(dòng)和顯示48行84列的圖像,可以通過(guò)標(biāo)準(zhǔn)的SPI總線方便地與外界接口。其他重要特性如下:
◆只需要一個(gè)外圍元件,在VOUT和GND之間連接一個(gè)1~10μF的電容;
◆功耗很低,適用于電池供電系統(tǒng);
◆電源電壓范圍:2.7~3.3 V;
◆工作溫度范圍:-25~70℃。
2.1 Nokia3310 LCD的接口信號(hào)
Nokia3310 LCD模塊通過(guò)SPI總線與單片機(jī)連接,許多tinyAVR單片機(jī)都有這種接口。不過(guò)也有少數(shù)型號(hào)tinyAVR單片機(jī)沒(méi)有這種接口,或是把這種接口用于與單片機(jī)的其他外圍器件通信。這并不意味著,這種LCD模塊就不能與此類單片機(jī)對(duì)接使用,可以采取軟件方式來(lái)模擬實(shí)現(xiàn)SPI軟接口。以這種方式,可以在任何一種單片機(jī)的任何通用I/O引腳上連接該LCD模塊。SPI軟接口最少需要4條I/O引腳。圖2是Nokia3310 LCD模塊引腳功能圖。下面詳述一下各條引腳的功能。
Nokia3310 LCD模塊的引腳有:
◆VCC:電源輸入端。連接穩(wěn)壓電源(2.7~3.3 V)。
◆SCK:串行時(shí)鐘輸入端。速率為0~4 Mbps,連接 單片機(jī)I/O引腳。
◆SDI:串行數(shù)據(jù)輸入端。連接單片機(jī)I/O引腳。
◆D/C:數(shù)據(jù)/命令模式選擇端。連接單片機(jī)I/O引腳。
◆SCE:片選端??梢赃B接到單片機(jī)I/O引腳,或者接地(表示總是選中該LCD),可根據(jù)具體情況設(shè)置。
◆GND:接地引腳。
◆VouT:VLCD端,通過(guò)10μF的電容接地。
◆RST:控制器PCD8544的復(fù)位端。連接單片機(jī)I/O引腳。
2.2 PCD8544功能描述
PCD8544是一個(gè)低功耗CMOS的LCD控制器/驅(qū)動(dòng)器,用于驅(qū)動(dòng)48行84列的圖形式LCD顯示屏。該型號(hào)在單一芯片之內(nèi)就可以實(shí)現(xiàn)LCD顯示器所需的全部功能,包括片載的LCD供電和偏壓發(fā)生器,它不僅功耗低而且所需外圍元件少。
3 設(shè)計(jì)原理
本項(xiàng)目的目標(biāo)是設(shè)計(jì)一個(gè)用攝氏和華氏顯示環(huán)境溫度的溫度顯示系統(tǒng),并且能夠顯示最低溫度和最高溫度值;該系統(tǒng)能夠按照時(shí)間記錄溫度的變化;系統(tǒng)應(yīng)選擇電池供電,以方便攜帶或安裝在任意位置。
溫度繪圖儀的電路原理圖如圖3所示。由于系統(tǒng)中采用了Nokia3310 LCD模塊,它需要的電源電壓為2.7~3.3 V。系統(tǒng)的電源電路中采用了一片DC-DC升壓型電壓轉(zhuǎn)換器TPS61070(即為開(kāi)關(guān)式直流穩(wěn)壓器)提供一個(gè)3.3 V的直流電源,因此可以選用一節(jié)1.5 V干電池供電。電池被連接到SL3(2針)插口上。由于沒(méi)有極性保護(hù)電路,電池安裝時(shí)需要特別注意。Nokia3310 LCD模塊通過(guò)SPI總線連接到SL1(8針)插口上。
系統(tǒng)中最重要的元器件是溫度傳感器,對(duì)于該器件有以下幾種選擇:熱敏電阻、熱電偶或帶隙半導(dǎo)體傳感器。其中半導(dǎo)體傳感器是最容易實(shí)施的。
半導(dǎo)體傳感器種類很多,有的直接輸出與溫度成比例的模擬電壓,有的直接輸出攝氏或華氏溫度的數(shù)值。這里選用了一種單總線溫度傳感器DS18B20,它把溫度轉(zhuǎn)換為9位二進(jìn)制數(shù)字來(lái)表示攝氏溫度或者華氏溫度。溫度讀數(shù)的分辨率為0.5℃或0.9°F,測(cè)量范圍為-55~125 ℃,或者-67~257°F。該傳感器每次需要20 ms的轉(zhuǎn)換時(shí)間。詳細(xì)資料可以參考DS18B20的技術(shù)手冊(cè)。
轉(zhuǎn)換后的溫度值可以從單線接口讀出,在圖3中,SL2安裝在DS18B20傳感器上的插口。電路設(shè)有4個(gè)按鈕開(kāi)關(guān)S1~S4,不過(guò)在這個(gè)項(xiàng)目中只用到1個(gè)開(kāi)關(guān)。這個(gè)電路采用了貼片封裝的tiny44單片機(jī)ATtiny 24/44/84-SSU,它具有14條引腳和4 KB程序存儲(chǔ)器。
每當(dāng)接通電源或者復(fù)位時(shí),單片機(jī)將初始化顯示器,并查詢DS18B20傳感器,顯示華氏和攝氏溫度。同時(shí)保存檢測(cè)到的溫度最低值和最高值。用戶可以隨時(shí)按下開(kāi)關(guān),系統(tǒng)會(huì)切換到另一種顯示模式,顯示一張溫度隨時(shí)間變化的曲線。系統(tǒng)連續(xù)地讀取溫度值,但是每隔10 min才保存一次溫度讀數(shù),并繪制在顯示屏上。系統(tǒng)可以保存最多40個(gè)讀數(shù),因此可以顯示最近400 min內(nèi)的溫度變化情況。保存在緩沖存儲(chǔ)區(qū)中的讀數(shù)不停地被替換,以便保留新值和沖掉舊值。
4 硬件電路的搭建
線路主要布在元件面(頂面),在焊接面(底面)只有很少的跳線。溫度繪圖儀電路板的元件面和焊接面分別如圖4和圖5所示。焊接TPS610 70芯片非常關(guān)鍵,需要特別小心。從焊接穩(wěn)壓器芯片及其外圍元件開(kāi)始,以便在安裝其他元件之前,測(cè)試TPS61070的輸出電壓。溫度繪圖儀顯示屏的不同顯示模式如圖6和圖7所示。
5 C語(yǔ)言程序設(shè)計(jì)
這里提供給大家經(jīng)過(guò)編譯的利用C語(yǔ)言編寫(xiě)的源代碼程序(軟件集成開(kāi)發(fā)環(huán)境為WinAVR,C語(yǔ)言編譯器為AVR-GCC)。程序需要運(yùn)行在1 MHz的時(shí)鐘頻率下。
采用編程器STK500在ISP編程模式給單片機(jī)燒寫(xiě)程序。單總線溫度傳感器DS18B20是通過(guò)單總線接口完成讀/寫(xiě)功能的,這種總線接口在單片機(jī)上是利用軟件模擬來(lái)實(shí)現(xiàn)的??梢詤⒖紲囟葌鞲衅鞯氖褂檬謨?cè)以獲取它的各種命令。這里僅僅對(duì)源程序代碼中較重要的部分作如下注釋:
在ds1820_read函數(shù)中讀取DS18B20,經(jīng)過(guò)必要的處理后,返回一個(gè)10倍于實(shí)際攝氏溫度值的數(shù)值。無(wú)限循環(huán)構(gòu)成程序的主體,其操作模式主要有兩種:第一種模式是以攝氏度和華氏度交替顯示當(dāng)前溫度值,同時(shí)顯示最大值和最小值;另一種模式是用圖形方式顯示溫度的變化。曲線圖的繪制采用了graph1函數(shù),它是通過(guò)提取數(shù)組data的數(shù)值繪制像素點(diǎn)的。Setlcd函數(shù)用于在LCD屏幕上繪制坐標(biāo)軸。S4開(kāi)關(guān)(連接單片機(jī)PA1引腳)用于切換上述兩種模式。從繪圖模式到溫度模式的相互切換并不會(huì)刪除狀態(tài)信息。程序代碼的其他部分用于處理LCD的初始化和繪圖算法。
6 獨(dú)立運(yùn)行
溫度繪圖儀采用一節(jié)或兩節(jié)5號(hào)或7號(hào)規(guī)格的干電池,可以是堿性電池,或者可充電的鎳氫或鎳鎘電池。一旦接通電源后,顯示器開(kāi)始顯示溫度值。可使用開(kāi)關(guān)在讀數(shù)模式和繪圖模式之間切換。