基于tinyAVR和Nokia3310 LCD的溫度繪圖儀
5 C語言程序設(shè)計(jì)
這里提供給大家經(jīng)過編譯的利用C語言編寫的源代碼程序(軟件集成開發(fā)環(huán)境為WinAVR,C語言編譯器為AVR-GCC)。程序需要運(yùn)行在1 MHz的時(shí)鐘頻率下。
采用編程器STK500在ISP編程模式給單片機(jī)燒寫程序。單總線溫度傳感器DS18B20是通過單總線接口完成讀/寫功能的,這種總線接口在單片機(jī)上是利用軟件模擬來實(shí)現(xiàn)的??梢詤⒖紲囟葌鞲衅鞯氖褂檬謨?cè)以獲取它的各種命令。這里僅僅對(duì)源程序代碼中較重要的部分作如下注釋:
在ds1820_read函數(shù)中讀取DS18B20,經(jīng)過必要的處理后,返回一個(gè)10倍于實(shí)際攝氏溫度值的數(shù)值。無限循環(huán)構(gòu)成程序的主體,其操作模式主要有兩種:第一種模式是以攝氏度和華氏度交替顯示當(dāng)前溫度值,同時(shí)顯示最大值和最小值;另一種模式是用圖形方式顯示溫度的變化。曲線圖的繪制采用了graph1函數(shù),它是通過提取數(shù)組data的數(shù)值繪制像素點(diǎn)的。Setlcd函數(shù)用于在LCD屏幕上繪制坐標(biāo)軸。S4開關(guān)(連接單片機(jī)PA1引腳)用于切換上述兩種模式。從繪圖模式到溫度模式的相互切換并不會(huì)刪除狀態(tài)信息。程序代碼的其他部分用于處理LCD的初始化和繪圖算法。
6 獨(dú)立運(yùn)行
溫度繪圖儀采用一節(jié)或兩節(jié)5號(hào)或7號(hào)規(guī)格的干電池,可以是堿性電池,或者可充電的鎳氫或鎳鎘電池。一旦接通電源后,顯示器開始顯示溫度值??墒褂瞄_關(guān)在讀數(shù)模式和繪圖模式之間切換。
評(píng)論