基于51單片機(jī)與DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)與DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)與DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)與DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)與DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、四川師范大學(xué)課程設(shè)計(jì)報(bào)告基于單片機(jī)的DS18B20數(shù)字溫度計(jì)設(shè)計(jì)學(xué)生姓名杜恒院系名稱物理與電子工程學(xué)院專業(yè)名稱電子信息工程班 級(jí)2008 級(jí) 6 班學(xué) 號(hào)2008070607指導(dǎo)教師汪文蝶完成時(shí)間2011年 5 月 20 日基于單片機(jī)的DS18B20數(shù)字溫度計(jì)設(shè)計(jì)學(xué)生姓名:杜恒 指導(dǎo)老師:汪文蝶內(nèi)容摘要:隨著現(xiàn)代信息化技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),能獨(dú)立工作的溫度檢測(cè)系統(tǒng)已廣泛應(yīng)用于各種不同的領(lǐng)域。本文介紹了一個(gè)基于STC89C52單片機(jī)和數(shù)字溫度傳感器DS18B20的測(cè)溫系統(tǒng),并用LED數(shù)碼管顯示溫度值,易于讀數(shù)。系統(tǒng)電路簡(jiǎn)單、操作簡(jiǎn)便,能任意設(shè)定報(bào)警溫度并可查詢最近的10個(gè)溫度值

2、,系統(tǒng)具有可靠性高、成本低、功耗小等優(yōu)點(diǎn)。關(guān)鍵詞:?jiǎn)纹瑱C(jī) 數(shù)字溫度傳感器 溫度計(jì)1 引言42 設(shè)計(jì)要求42.1 基本要求42.2 擴(kuò)展功能43 總體方案設(shè)計(jì)43.1 方案論證43.1.1 方案一43.1.2 方案二53.2 總體設(shè)計(jì)框圖54 硬件設(shè)計(jì)54.1 單片機(jī)系統(tǒng)54.2 數(shù)字溫度傳感器模塊64.2.1 DS18B20性能64.2.2 DS18B20外形及引腳說明74.2.3 DS18B20接線原理圖74.2.4 DS18B20時(shí)序圖74.2.5 數(shù)據(jù)處理94.3 顯示電路104.4 聲光報(bào)警電路104.5 鍵盤輸入電路115 軟件設(shè)計(jì)115.1 主程序模塊115.2 讀溫度值模塊125

3、.3 中斷模塊145.4 溫度查詢模塊155.5 溫度設(shè)定、報(bào)警模塊165.6 數(shù)碼管驅(qū)動(dòng)模塊186 源程序197 總結(jié)26參考文獻(xiàn):281 引言隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便是不可否定的,各種數(shù)字系統(tǒng)的應(yīng)用也使人們的生活更加舒適。數(shù)字化控制、智能控制為現(xiàn)代人的工作、生活、科研等方面帶來方便。其中數(shù)字溫度計(jì)就是一個(gè)典型的例子。數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便、測(cè)溫范圍廣、測(cè)溫精確、功能多樣話等優(yōu)點(diǎn)。其主要用于對(duì)測(cè)溫要求準(zhǔn)確度比較高的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)使用STC89C52單片機(jī)作控制器,數(shù)字溫度傳感器DS18B20測(cè)量溫度

4、,單片機(jī)接受傳感器輸出,經(jīng)處理用LED數(shù)碼管實(shí)現(xiàn)溫度值顯示。2 設(shè)計(jì)要求2.1 基本要求實(shí)現(xiàn)實(shí)時(shí)溫度顯示,測(cè)溫范圍0500C,誤差50C以內(nèi)。2.2 擴(kuò)展功能溫度報(bào)警,能任意設(shè)定溫度范圍實(shí)現(xiàn)聲光報(bào)警;每隔10分鐘記錄一次溫度數(shù)據(jù),至少能查詢過去10個(gè)時(shí)刻的溫度情況。3 總體方案設(shè)計(jì)3.1 方案論證3.1.1 方案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件,將隨被測(cè)溫度變化的電壓或電流采樣,進(jìn)行A/D轉(zhuǎn)換后就可以用單片機(jī)進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)溫度顯示。這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,增大了電路的復(fù)雜性,而且要做到高精度也比較困難。3.1.2 方案二考慮到在單片機(jī)屬于數(shù)字系統(tǒng),容易想到數(shù)字溫度

5、傳感器,可選用DS18B20數(shù)字溫度傳感器,此傳感器為單總線數(shù)字溫度傳感器,起體積小、構(gòu)成的系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,它可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)給單片機(jī)處理,即可實(shí)現(xiàn)溫度顯示。另外DS18B20具有3引腳的小體積封裝,測(cè)溫范圍為-55+125攝氏度,測(cè)溫分辨率可達(dá)0.0625攝氏度,其測(cè)量范圍與精度都能符合設(shè)計(jì)要求。以上兩種方案相比較,第二種方案的電路、軟件設(shè)計(jì)更簡(jiǎn)單,此方案設(shè)計(jì)的系統(tǒng)在功耗、測(cè)量精度、范圍等方面都能很好地達(dá)到要求,故本設(shè)計(jì)采用方案二。3.2 總體設(shè)計(jì)框圖本方案設(shè)計(jì)的系統(tǒng)由單片機(jī)系統(tǒng)、數(shù)字溫度傳感器、LED顯示模塊、按鍵控制模塊、溫度報(bào)警模塊組成,其總體架構(gòu)如下圖1。單片機(jī)報(bào)警電路顯

6、示電路驅(qū)動(dòng)電路測(cè)溫電路按鍵輸入電路時(shí)鐘、復(fù)位電路圖1 系統(tǒng)總體方框圖4 硬件設(shè)計(jì)4.1 單片機(jī)系統(tǒng)1. 本設(shè)計(jì)采用STC89C52單片機(jī)作為控制器,完成所有功能的控制,包括:l DS18B20數(shù)字溫度傳感器的初始化和讀取溫度值l LED數(shù)碼管顯示驅(qū)動(dòng)與控制l 按鍵識(shí)別和響應(yīng)控制l 溫度設(shè)置和報(bào)警l 溫度值的存儲(chǔ)和讀取2. 單片機(jī)系統(tǒng)電路原理圖:圖2 單片機(jī)系統(tǒng)原理圖4.2 數(shù)字溫度傳感器模塊4.2.1 DS18B20性能l 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通信l 簡(jiǎn)單的多點(diǎn)分布應(yīng)用l 無需外部器件l 可通過數(shù)據(jù)線供電l 零待機(jī)功耗l 測(cè)溫范圍-55+125,以0.5遞增l 可編程的分辨率為9

7、12位,對(duì)應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625l 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms,12位分辨率時(shí)最多在750ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字l 應(yīng)用包括溫度控制、工業(yè)系統(tǒng)、消費(fèi)品、溫度計(jì)和任何熱感測(cè)系統(tǒng)l 負(fù)壓特性:電源極性接反時(shí),傳感器不會(huì)因發(fā)熱而燒毀,但不能正常工作4.2.2 DS18B20外形及引腳說明圖3 DS18B20外形及引腳l GND:地l DQ:?jiǎn)尉€運(yùn)用的數(shù)據(jù)輸入/輸出引腳l VD:可選的電源引腳4.2.3 DS18B20接線原理圖單總線通常要求接一個(gè)約4.7K左右的上拉電阻,這樣,當(dāng)總線空閑時(shí),其狀態(tài)為高電平。圖4 DS18B20接線原理圖4.2.4 DS18B

8、20時(shí)序圖主機(jī)使用時(shí)間隙來讀寫DS18B20的數(shù)據(jù)位和寫命令字的位。1. 初始化時(shí)序如下圖:圖5 DS18B20初始化時(shí)序2. DS18B20讀寫時(shí)序:圖6 DS18B20讀寫時(shí)序4.2.5 數(shù)據(jù)處理高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。圖7 字節(jié)分配下表為12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0, 這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)

9、際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際 溫度。 例如+125的數(shù)字輸出為07D0H,實(shí)際溫度=07D0H*0.0625=2000*0.0625=125。例如-55的數(shù)字輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號(hào)位不變,也不作運(yùn)算),實(shí)際溫度=370H*0.0625=880*0.0625=55??梢娖渲械退奈粸樾?shù)位。圖8 DS18B20溫度數(shù)據(jù)表4.3 顯示電路LED數(shù)碼管顯示采用動(dòng)態(tài)掃描方式,能簡(jiǎn)化電路布線,節(jié)約單片機(jī)I/O端口。段碼和位碼由單片機(jī)P0送出,分別用74HC673N鎖存。圖9 數(shù)碼管驅(qū)動(dòng)顯示電路4.4 聲光報(bào)

10、警電路當(dāng)溫度超過設(shè)定溫度值時(shí),實(shí)現(xiàn)聲光報(bào)警,蜂鳴器鳴叫、8個(gè)發(fā)光二極管點(diǎn)亮。蜂鳴器由單片機(jī)P23口控制,用三極管驅(qū)動(dòng),發(fā)光二極管接單片機(jī)P1口,由74HC673N鎖存。圖10 聲光報(bào)警電路4.5 鍵盤輸入電路四個(gè)鍵分別連接單片機(jī)P34、P35、P36、P37構(gòu)成獨(dú)立式鍵盤,分別實(shí)現(xiàn)加、減、報(bào)警溫度設(shè)定功能鍵和溫度查詢功能鍵。圖11 鍵盤輸入電路5 軟件設(shè)計(jì)5.1 主程序模塊主程序需要調(diào)用3個(gè)子程序,分別為:l 實(shí)時(shí)溫度顯示子程序:驅(qū)動(dòng)數(shù)碼管把實(shí)時(shí)溫度值送出在LED數(shù)碼管顯示l 查詢記錄溫度值子程序:查詢過去存儲(chǔ)的溫度值,最多可查詢10個(gè)值l 溫度設(shè)定、報(bào)警子程序:設(shè)定報(bào)警溫度值,當(dāng)溫度超過該值

11、時(shí)產(chǎn)生報(bào)警,即驅(qū)動(dòng)蜂鳴器鳴叫、8個(gè)發(fā)光二極管發(fā)光主程序流程圖:開始定時(shí)器初始化、啟動(dòng)顯示實(shí)時(shí)溫度溫度設(shè)定、報(bào)警查詢記錄溫度值圖12 主程序流程圖5.2 讀溫度值模塊讀溫度值模塊需要調(diào)用4個(gè)子程序,分別為:l DS18B20初始化子程序:讓單片機(jī)知道DS18B20在總線上且已準(zhǔn)備好操作l DS18B20寫字節(jié)子程序:對(duì)DS18B20發(fā)出命令l DS18B20讀字節(jié)子程序:讀取DS18B20存儲(chǔ)器的數(shù)據(jù)l 延時(shí)子程序:對(duì)DS18B20操作時(shí)的時(shí)序控制1. 讀溫度值模塊流程圖:入口數(shù)據(jù)轉(zhuǎn)換處理讀取溫度值高低位跳過讀序列號(hào)DS18B20初始化延時(shí)啟動(dòng)溫度轉(zhuǎn)換跳過讀序列號(hào)DS18B20初始化返回圖13

12、讀溫度值子程序流程圖 2. DS18B20初始化子程序流程圖:入口DQ為低電平?延時(shí)1560msDQ拉高電平延時(shí)>480msDQ復(fù)位0稍延時(shí)DQ置高電平N返回Y圖14 DS18B20初始化子程序流程圖3. DS18B20寫字節(jié)和讀字節(jié)子程序流程圖: 圖15 DS18B20寫字節(jié)子程序流程圖圖16 DS18B20讀字節(jié)子程序流程圖5.3 中斷模塊中斷采用T0方式1,初始值定時(shí)為50ms。中斷模塊需調(diào)用兩個(gè)子程序:l 讀溫度值子程序:定時(shí)讀取溫度值,實(shí)時(shí)更新溫度值l 記錄溫度值子程序:定時(shí)記錄溫度值,供查詢使用把這兩個(gè)子程序放在中斷的原因是,不會(huì)因?yàn)檎{(diào)整報(bào)警溫度或查詢歷史溫度值而停止更新溫度

13、值和記錄溫度值。中斷模塊流程圖:1秒?計(jì)數(shù)值加1定時(shí)器重置初值中斷入口讀溫度值Y中斷返回記錄溫度值 N圖17中斷模塊流程圖5.4 溫度查詢模塊溫度查詢模塊需要接受按鍵輸入,進(jìn)入查詢界面后,按加減鍵分別查詢上一個(gè)和下一個(gè)歷史溫度值,并驅(qū)動(dòng)數(shù)碼管顯示需要查詢的溫度值。溫度查詢模塊流程圖如下:入口功能鍵按下? N確認(rèn)按下?延時(shí)消抖 YN顯示溫度值與位次 Y加鍵按下?N確認(rèn)按下?延時(shí)消抖 Y查詢下一個(gè)值Y減鍵按下? NN查詢上一個(gè)值確認(rèn)按下?延時(shí)消抖 YY退出功能鍵按下? NN返回 Y圖18 溫度查詢模塊流程圖5.5 溫度設(shè)定、報(bào)警模塊此模塊跟溫度查詢模塊類似,需要接受按鍵輸入,進(jìn)入模塊界面后,按加減

14、鍵分別上調(diào)和下調(diào)設(shè)定報(bào)警溫度值,當(dāng)實(shí)時(shí)溫度值超過設(shè)定值時(shí)驅(qū)動(dòng)蜂鳴器發(fā)聲,并點(diǎn)亮8位發(fā)光二極管,實(shí)現(xiàn)聲光報(bào)警。溫度設(shè)定、報(bào)警模塊流程圖如下:入口延時(shí)消抖減鍵按下?確認(rèn)按下?延時(shí)消抖加鍵按下?顯示設(shè)定溫度值確認(rèn)按下?延時(shí)消抖功能鍵按下?N YN YN Y上調(diào)設(shè)定值Y NN Y下調(diào)設(shè)定值確認(rèn)按下?Y N聲光報(bào)警溫度超出設(shè)定值?Y N取消報(bào)警判斷退出界面?N Y返回圖19 溫度設(shè)定、報(bào)警模塊流程圖5.6 數(shù)碼管驅(qū)動(dòng)模塊本設(shè)計(jì)數(shù)碼管通過鎖存器接單片機(jī)P0口,采用動(dòng)態(tài)掃描驅(qū)動(dòng)7段LED數(shù)碼管進(jìn)行顯示,需調(diào)用延時(shí)子程序以穩(wěn)定顯示。模塊流程圖如下:P0清零關(guān)位選送位碼開位選P0置高關(guān)段選入口開段選延時(shí)關(guān)段選送

15、段碼返回圖20 數(shù)碼管驅(qū)動(dòng)模塊流程圖6 源程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int/*變量定義*/sbit DQ=P22;/ds18b20 端口sbit beep=P23;/蜂鳴器使能端sbit dula=P26;/數(shù)碼管段選使能sbit wela=P27;/數(shù)碼管位選使能sbit add=P35;/加鍵sbit sub=P34;/減鍵sbit alarm=P36;/設(shè)定報(bào)警功能鍵sbit record=P37;/查詢溫度記錄功能鍵uchar code tabled=0x3f,0x

16、06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, /09的七段數(shù)碼管段碼0x40,0x63,0x39;/- c 的段碼uchar code tablew=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f;/18個(gè)數(shù)碼管的位選碼uchar recordtable10;/存儲(chǔ)過去的十個(gè)溫度值uchar temperature;/溫度值uchar countsec,recordnum,count;/計(jì)數(shù)變量uint countmin;/計(jì)數(shù)變量uchar alanum=30;/報(bào)警溫度值,初始值為30攝氏度uchar z=65;

17、/消抖延時(shí)函數(shù)入口參數(shù)/*函數(shù)聲明*/void delay1(uchar MS);/動(dòng)態(tài)掃描延時(shí)子程序void delay(uchar i);/DS18B20工作延時(shí)子程序 void Init_DS18B20();/DS18B20初始化子程序void WriteOneChar(unsigned char dat);/向DS18B20寫一字節(jié)數(shù)據(jù)uchar ReadOneChar(void);/向DS18B20讀一字節(jié)數(shù)據(jù)void GetTemperature();/由DS18B20產(chǎn)生溫度值void Display(uchar wei,uchar duan);/數(shù)碼管驅(qū)動(dòng)子程序void Ala

18、rm();/溫度報(bào)警void Showtemperature(uchar tt);/溫度顯示void Keeprecord();/記錄溫度值void Showrecord();/顯示記錄的溫度值/*主函數(shù)*/void main()TMOD=0x01;/定時(shí)器初始化,定時(shí)器0方式1TH0=(65536-50000)/256;/50msTL0=(65536-50000)%256;EA=1;/開中斷ET0=1;TR0=1;/啟動(dòng)定時(shí)器while(1)Showtemperature(temperature);/顯示實(shí)時(shí)溫度Alarm();/溫度設(shè)定、報(bào)警Showrecord();/查詢溫度記錄值/*動(dòng)

19、態(tài)掃描延時(shí)函數(shù)*/void delay1(uchar MS)int i,j;for(i=80;i>0;i-)for(j=MS;j>0;j-);/*DS18B20工作延時(shí)函數(shù)*/void delay(uchar i) while(i-);/*DS18B20初始化函數(shù)*/void Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ復(fù)位delay(8); /稍做延時(shí)DQ = 0; /單片機(jī)將DQ拉低delay(80); /精確延時(shí) 大于 480usDQ = 1; /拉高總線delay(10);x=DQ; /稍做延時(shí)后 如果x=0則初始化成功 x

20、=1則初始化失敗delay(5);while(!x)x=DQ;/*讀一個(gè)字節(jié)*/uchar ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) dat>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; delay(5); return(dat);/*寫一個(gè)字節(jié)*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ

21、= 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; delay(5);/*產(chǎn)生溫度值*/void GetTemperature()uchar tempL,tempH;/分別為數(shù)據(jù)低位和高位uint temp;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀

22、9個(gè)寄存器) 前兩個(gè)就是溫度tempL=ReadOneChar();/讀出溫度低位LSBtempH=ReadOneChar();/讀出溫度高位MSBtemp=tempH*16+tempL/16;/tempL右移四位去掉小數(shù)位temperature=temp&0xff;/測(cè)量050度,只取temp低八位/*數(shù)碼管驅(qū)動(dòng)函數(shù)*/void Display(uchar wei,uchar duan)dula=0;P0=0xff;wela=1;P0=tablewwei;wela=0;P0=0;dula=1;P0=tabledduan;dula=0;delay1(1);/*溫度顯示函數(shù)*/void

23、Showtemperature(uchar tt)Display(2,tt/10);/顯示溫度數(shù)值Display(3,tt%10);Display(4,11);/顯示攝氏度單位Display(5,12);/*溫度值設(shè)定、報(bào)警函數(shù)*/void Alarm()bit flag;if(alarm=0) delay1(80);/延時(shí)消抖if(alarm=0)flag=1;/第一次按鍵進(jìn)入設(shè)置while(flag)if(add=0)delay1(z);/延時(shí)消抖if(add=0)alanum+;/add鍵按下,上調(diào)設(shè)定值if(alanum=51)alanum=0;/最大值為50攝氏度,循環(huán)顯示if(su

24、b=0)delay1(z);/延時(shí)消抖if(sub=0)alanum-;/sub鍵按下,下調(diào)設(shè)定值if(alanum=255)alanum=50;/最小值為0攝氏度,循環(huán)顯示Showtemperature(alanum);Display(0,10);/選中數(shù)碼管的其他空閑位Display(1,10);/區(qū)別于實(shí)時(shí)溫度顯示“-”Display(6,10);Display(7,10);if(alarm=0) delay1(80);/延時(shí)消抖if(alarm=0)flag=0;/第二次按鍵退出設(shè)置if(temperature>alanum)/此處設(shè)置報(bào)警可以保證調(diào)整設(shè)定值時(shí)即可及時(shí)報(bào)警beep

25、=0;/溫度大于設(shè)定值,聲光報(bào)警P1=0;elsebeep=1;/溫度不大于設(shè)定值即不報(bào)警P1=0xff;if(temperature>alanum)/此處設(shè)置報(bào)警即保證即使沒有進(jìn)入設(shè)置界面任然可以報(bào)警beep=0;/溫度大于設(shè)定值,聲光報(bào)警P1=0;elsebeep=1;/溫度不大于設(shè)定值即不報(bào)警P1=0xff;/*溫度記錄函數(shù)*/void Keeprecord()uchar i=9;if(countmin=1200)/1分鐘 countmin=0;count+;if(count=10)/10分鐘count=0;recordnum+;/記錄一次加一,最大記錄10個(gè)值if(recordn

26、um=10)recordnum=10;dorecordtablei=recordtablei-1;while(-i);recordtable0=temperature;/最新值填入第一個(gè)位置/*查詢記錄的溫度值*/void Showrecord()bit flag;uchar a;if(record=0) delay1(80);/延時(shí)消抖if(record=0)flag=1;/record第一次按鍵置位進(jìn)入標(biāo)志while(flag)/進(jìn)入查詢Display(0,recordtablea/10);/顯示溫度數(shù)值Display(1,recordtablea%10);Display(2,11);/顯

27、示攝氏度單位Display(3,12);Display(4,10);/數(shù)碼管第6、7位選中,溫度值與記錄數(shù)之間用-間隔Display(5,10);Display(6,(a+1)/10);/顯示第幾個(gè)記錄值Display(7,(a+1)%10);if(add=0)delay1(z);/延時(shí)消抖if(add=0)/add按下,查看下一個(gè)值if(recordnum=0)a=0;elsea+;if(a=recordnum)/循環(huán)顯示a=0;if(sub=0)/sub按下,查看上一個(gè)值delay1(z);if(sub=0)if(recordnum=0)a=0;elsea-;if(a=255)/循環(huán)顯示a

28、=recordnum-1;if(record=0)delay1(80);if(record=0)/record第二次按下,退出查看flag=0;/*定時(shí)器中斷0,用于溫度檢測(cè)時(shí)間間隔和記錄數(shù)據(jù)時(shí)間間隔*/void timer0() interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;/50mscountsec+;countmin+;if(countsec=20)/1scountsec=0;GetTemperature();/一秒鐘更新一次溫度值Keeprecord();/定時(shí)記錄溫度值7 總結(jié)此次課程設(shè)計(jì)中,難點(diǎn)在于DS18B20的使用,即

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論