(完整版)基于單片機的溫度顯示報警器_第1頁
(完整版)基于單片機的溫度顯示報警器_第2頁
(完整版)基于單片機的溫度顯示報警器_第3頁
(完整版)基于單片機的溫度顯示報警器_第4頁
(完整版)基于單片機的溫度顯示報警器_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 /3,南北數(shù)碼管1voidsmg_we_switch(uchari)case0case0:smg_we1=smg_we4=1;break;case1:smg_we1=smg_we4=1;break;case2:smg_we1=smg_we4=1;break;case3:smg_we1=smg_we4=();break;switch(i)smg_we2=1;smg_we3smg_we2=0;smg_we3smg_we2=1;smg_we3smg_we2=1;smg_we3/*名稱:delay_lms()*功能:延時1ms函數(shù)*輸入:q*輸出:無*voiddelay_lms(uintq)uint

2、i,j;for(i=0;iq;i+)for(j=0;j0;i一一)ETO=O;定時器中斷關(guān)閉DQ=0;dat=l;/給脈沖信號DQ=1;if(DQ)/給脈沖信號dat|=0 x80;Delay_DS18B20(4);ETO二1;1/定時器中斷打開return(dat);i/*寫一個字節(jié)*/voidWriteOneChar(unsignedchardat)unsignedchari二0;for(i二8;i0;i一一)ETO二0;DQ二0;定時器中斷關(guān)閉DQ二dat&OxOl;Delay_DS18B20(5);DQ=1;dat=l;ETO二1;定時器中斷打開u8tempflag=O;負(fù)號顯示*讀取

3、溫度*/unsignedintReadTemperature(void)unsignedchara二0;unsignedcharb二0;unsignedintt二0;u8tt=0;u8ttt=O;tt=(u8)(t4)tt=(u8)(t4);整數(shù)位ttt=(u8)(t%16)*0.0625*10);乘以10代表保留一位小數(shù);if(tt&0 x80)Init_DS18B20();WriteOneChar(OxCC);WriteOneChar(0 x44);Init_DS18B20();WriteOneChar(OxCC);WriteOneChar(OxBE);a=ReadOneChar();b=

4、ReadOneChar();t=b;t=8;t=t|a.;節(jié)跳過讀序號列號的操作/啟動溫度轉(zhuǎn)換跳過讀序號列號的操作讀取溫度寄存器/讀低8位/讀高8位/合并高低位為一個字得到/得到小數(shù)位;tempflag=l;/負(fù)號顯示/實際溫度值為讀取值的補碼elsetempflag=O;/正號顯示t=tt*10+ttt;10倍return(t);放大/*校準(zhǔn)溫度*/ul6check_wendu(void)ul6c;c=ReadTemperature();去DS18B20的溫漂誤差returnc;/按鍵sbitKeyl=Pl5;sbitKey2二P33;sbitKey3二P34;SdefineKEY_SET1

5、SdefineKEY_ADDSdefineKEY_MINUSH=/獲取溫度值并減/設(shè)置鍵/加按鍵/減按鍵設(shè)置/加/減/函數(shù):u8Key_Scan()/應(yīng)用:temp=u8Key_Scan();/描述:按鍵掃描并返回按下的鍵值/參數(shù):NONE/返回:按下的鍵值/版本:VER1.0/H期:2015-05-29/備注:該函數(shù)帶松手檢測,按下鍵返回一次鍵值后返回0,直至第二次按鍵按下H=u8Key_Scan()staticu8key_up=l;/按鍵按松開標(biāo)志if(key_up&(Key101|Key201|Key30)delay_ms(10);/去抖動key_up=0;if(Keyl=0)retur

6、n1;elseif(Key20)return2;elseif(Key30)return3;elseif(Key1l&Key2l&Key31)key_up=l;return0;/無按鍵按下voidmain(void)u8key;wendu=check_wendu();取函數(shù)防止開機85Cdelay_ms(1000);wendu=check_wendu();取函數(shù)防止開機85CInit_TimerO();/初始化時調(diào)用溫度讀/初始化時調(diào)用溫度讀while(1)key=Key_Scan();if(ReadTempFlag1)ReadTempFlag=O;wendu=check_wendu();if(

7、key=KEY_SET)Mode+;/主循環(huán)按鍵掃描讀取溫度值switch(Mode)值判斷模式的監(jiān)控case0:監(jiān)控模式if(tempflag)dis_smg0=DisplayOther2;elsedis_smgODisplayNumwendu/1000%10;dis_smgl=DisplayNumwendu/100%10;disusing2DisplayNumwendu/10%10&Display0therl;dis_smg3=DisplayNumwendu%10if(wendu=(yushe_wendu*10)/溫度大于等于預(yù)設(shè)溫度值時(為什么是大于預(yù)設(shè)值*10:因為我們要顯示的溫度是有

8、小數(shù)點后一位,是一個3位數(shù),25.9C時實際讀的數(shù)是259,所以判斷預(yù)設(shè)值時將預(yù)設(shè)值*10)baojing=0;蜂鳴器報警LED_wendu=0;溫度報警燈else/溫度值小于預(yù)設(shè)值時LED_wendu=l;報警燈baojing=l;報警break;打開打開關(guān)閉停止case1:打開打開關(guān)閉停止dis_smgODisplayNumyushe_wendu/100%10;dis_smgDisplayNumyushe_wendu/10%10;dis_smg2DisplayNumyushe_wendu%10&Display0therl;dis_smg3=DisplayOther3;if(key=KEY_

9、ADD)加鍵按下yushe_wendu+;/預(yù)設(shè)溫度值(閥值)加1if(yushe_wendu=99)/當(dāng)閥值加到大于等于99時yushe_wendu=99;/閥值固定為99if(key=KEY_MINUS)減鍵按下if(yushe_wendu=l)/當(dāng)溫度上限值減小到1時固定yushe_wendu二1;固定為1yushe_wendu-;預(yù)設(shè)溫度值減一,最小為0break;/執(zhí)行后跳出switchdefaultMode二Mode二0;/恢復(fù)正常模式break;/*定時器初始化子程序voidInit_TimerO(void)TMOD|=0 x01;/使用模式1,16位定時器,使用符號可以在使用多個定時器時不受影響EA二1;/總中斷打開ET0二1;/定時器中斷打開TR0二1;/定時器開關(guān)打開/*定時器中斷子程序*/voidTimerO_isr(void)i

溫馨提示

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

評論

0/150

提交評論