版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p> 基于51單片機(jī)溫度傳感器設(shè)計(jì)</p><p><b> 系統(tǒng)概述</b></p><p><b> 摘要:</b></p><p> 本設(shè)計(jì)是以51單片機(jī)為核心的溫度傳感器設(shè)計(jì), 該系統(tǒng)以STC
2、89C52單片機(jī)為中心控制單元,由數(shù)碼管顯示模塊,蜂鳴器警報(bào)模塊組成,并預(yù)設(shè)溫度報(bào)警上下限,系統(tǒng)啟動(dòng)后可以實(shí)時(shí)采集環(huán)境中的溫度,并且當(dāng)溫度超出上下限的值以后蜂鳴器報(bào)警.</p><p> 關(guān)鍵詞:STC89C51、數(shù)碼管、蜂鳴器、DS18B20溫度傳感器</p><p><b> 系統(tǒng)框圖:</b></p><p><b> 原
3、理概述:</b></p><p> STC89C52單片機(jī)為主控制器,用于處理采集的溫度值以及相關(guān)報(bào)警值。本設(shè)計(jì)采用DALLAS公司的DS18b20溫度傳感器采集溫度,通過主控制器進(jìn)行溫度的采樣以及轉(zhuǎn)換并在數(shù)碼管上進(jìn)行相應(yīng)的顯示,當(dāng)外界溫度值超出預(yù)設(shè)的報(bào)警溫度值時(shí),通過蜂鳴器報(bào)警提示。</p><p><b> 實(shí)驗(yàn)要求:</b></p>
4、<p><b> 溫度讀取</b></p><p> LED數(shù)碼管或LCD顯示</p><p><b> 定時(shí)讀取數(shù)據(jù)</b></p><p><b> 報(bào)警</b></p><p><b> 實(shí)驗(yàn)設(shè)備:</b></p>
5、<p> 51學(xué)習(xí)開發(fā)板,STC89C52單片機(jī),DS18B20</p><p><b> 設(shè)計(jì)內(nèi)容:</b></p><p><b> 軟件流程圖:</b></p><p><b> N</b></p><p><b> Y</b>
6、</p><p><b> 設(shè)計(jì)方法:</b></p><p> DS18B20特性 </p><p> ? 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通訊 </p><p> ? 簡單的多點(diǎn)分布應(yīng)用 </p><p> ? 無需外部器件 </p><p>
7、 ? 可通過數(shù)據(jù)線供電 </p><p><b> ? 零待機(jī)功耗 </b></p><p> 測溫范圍-55---+125℃,以0.5℃遞增。華氏器件-67---+257℉,以0.9℉遞增 </p><p> ? 溫度以9 位數(shù)字量讀出 </p><p> ? 溫度數(shù)字量轉(zhuǎn)換時(shí)間 200ms(典型值
8、) </p><p> ? 用戶可定義的非易失性溫度報(bào)警設(shè)置 </p><p> ? 報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件 </p><p> ? 應(yīng)用包括溫度控制、工業(yè)系統(tǒng)、消費(fèi)品、溫度計(jì)或任何熱感測系統(tǒng) </p><p><b> 溫度傳感器說明:</b></p&g
9、t;<p> DS1820 數(shù)字溫度計(jì)以 9 位數(shù)字量的形式反映器件的溫度值。 DS1820 通過一個(gè)單線接口發(fā)送或接收信息,因此在中央微處理器和 DS1820 之間僅需一條連接線(加上地線)。用于讀寫和溫度轉(zhuǎn)換的電源可以從數(shù)據(jù)線本身獲得,無需外部電源。因?yàn)槊總€(gè) DS1820 都有一個(gè)獨(dú)特的片序列號(hào), 所以多只 DS1820 可以同時(shí)連在一根單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性在 HVAC 環(huán)境
10、控制、探測建筑物、儀器或機(jī)器的溫度以及過程監(jiān)測和控制等方面非常有用。</p><p><b> 數(shù)碼管顯示:</b></p><p> 數(shù)碼顯示器件按顯示方法不同,顯示器有很多種,他們是字形重疊式顯示器、分段式顯示器、點(diǎn)陣式顯示器。分段式顯示器有七段和八段顯示之分,在這里,我們選用4位8段數(shù)碼管顯示采集到的溫度值,數(shù)碼管顯示具有耗能低,穩(wěn)定性好,價(jià)格便宜等優(yōu)點(diǎn)。&
11、lt;/p><p><b> 蜂鳴器:</b></p><p> 壓電式蜂鳴器是一種電聲轉(zhuǎn)換器件。壓電式蜂鳴器具有體積小、靈敏度高、耗電省、可靠性好,造價(jià)低廉的特點(diǎn)和良好的頻率特性。因此它廣泛應(yīng)用于各種電器產(chǎn)品的報(bào)警、發(fā)聲用途。最常見的莫過于音樂賀卡、電子手表、袖珍計(jì)算器、電子門鈴和電子玩具等小型電子用品上作發(fā)聲器件。</p><p><
12、b> 硬件原理圖:</b></p><p><b> 51單片機(jī):</b></p><p> 溫度傳感器:蜂鳴器連接:</p><p><b> 源代碼:</b></p><p> /***************溫度傳感器********************
13、**/</p><p><b> //制作:RXJ</b></p><p> //時(shí)間:2012/6/2</p><p><b> //修改:無</b></p><p> /************************************************/</p>
14、<p> #include<reg52.h> </p><p> #include<math.h></p><p> #include<INTRINS.H></p><p> #define uchar unsigned char</p><p> #define uint
15、 unsigned int;</p><p> sbit DQ=P1^3;//ds18b20 端口</p><p> sbit beeper=P1^0;</p><p><b> //全局變量</b></p><p> uint temp,TempH,TempL;</p><p> u
16、char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段數(shù)碼管段碼表共陰</p><p> uchar num,readflag=0,str[6];</p><p><b> uchar i;</b></p><p> unsigned int Rea
17、dTemperature(void);</p><p> void Init_DS18B20(void);</p><p> unsigned char ReadOneChar(void);</p><p> void WriteOneChar(unsigned char dat);</p><p> void delay(unsig
18、ned int i);</p><p> void init_timer();</p><p> void beep();</p><p> void main()</p><p><b> {</b></p><p><b> str[0]=0;</b></
19、p><p> init_timer();</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(readflag==1)</p><p><b> {</b></p><
20、;p> temp=ReadTemperature();</p><p> if(temp&0x8000)</p><p><b> {</b></p><p> str[0]=0x40; //負(fù)號(hào)標(biāo)志</p><p> temp=~temp; // 取反加1</p><p
21、><b> temp +=1;</b></p><p><b> }</b></p><p> elsestr[0]=0;</p><p><b> }</b></p><p> TempH=temp>>4;</p><p>
22、; TempL=temp&0x0F;</p><p> TempL=TempL*6/10; //小數(shù)近似處理</p><p> str[5]=0x39; //顯示C符號(hào)</p><p> str[1]=tab[TempH/100]; //十位溫度</p><p>
23、; str[2]=tab[(TempH%100)/10]; //十位溫度</p><p> str[3]=tab[(TempH%100)%10]|0x80; //個(gè)位溫度,帶小數(shù)點(diǎn)</p><p> str[4]=tab[TempL];</p><p> for(i=0;i<40;i++)</p><p><b
24、> {</b></p><p> P2=5;P0=str[5];delay(10);</p><p> P2=4;P0=str[4];delay(10);</p><p> P2=3;P0=str[3];delay(10);</p><p> P2=2;P0=str[2];delay(10);</p>
25、<p> P2=1;P0=str[1];delay(10);</p><p><b> }</b></p><p> if(TempH>32||TempH<31)</p><p> {beep();}</p><p><b> }</b></p>
26、<p><b> }</b></p><p><b> //定時(shí)器初始化</b></p><p> void init_timer()</p><p><b> {</b></p><p> TMOD|=0x01; //定時(shí)器設(shè)置</p>
27、<p><b> TH0=0xef;</b></p><p><b> TL0=0xf0;</b></p><p><b> IE=0x82;</b></p><p><b> TR0=1;</b></p><p><b>
28、}</b></p><p> void beep()</p><p><b> {</b></p><p> for(i=0;i<20;i++)</p><p><b> {</b></p><p><b> beeper=1;</
29、b></p><p> delay(20);</p><p><b> beeper=0;</b></p><p> delay(20);</p><p><b> }</b></p><p><b> }</b></p>
30、<p><b> //延時(shí)</b></p><p> void delay(unsigned int i ) //延時(shí)函數(shù)</p><p><b> {</b></p><p> while(i--);</p><p><b> }</b></p&
31、gt;<p> //定時(shí)器0中斷函數(shù)</p><p> void tim(void) interrupt 1 using 1 //中斷,用于數(shù)碼管掃描和溫度檢測間隔</p><p><b> {</b></p><p> TH0=0xef; //定時(shí)器重裝值</p><p><b>
32、 TL0=0xf0;</b></p><p><b> num++;</b></p><p> if(num==50)</p><p><b> {</b></p><p><b> num=0;</b></p><p> r
33、eadflag=1;</p><p><b> }</b></p><p><b> }</b></p><p> //18b20初始化</p><p> void Init_DS18B20(void)</p><p><b> {</b>&l
34、t;/p><p> unsigned char x=0;</p><p> DQ = 1; //DQ復(fù)位</p><p> delay(8); //稍做延時(shí)</p><p> DQ = 0; //單片機(jī)將DQ拉低</p><p> delay(80); /
35、/精確延時(shí) 大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay(10);</p><p> x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p><b> delay(5);</b></p>
36、<p><b> }</b></p><p><b> //讀字節(jié)</b></p><p> unsigned char ReadOneChar(void)</p><p><b> {</b></p><p> unsigned char i=0;&l
37、t;/p><p> unsigned char dat = 0;</p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p> DQ = 0; // 給脈沖信號(hào)</p><p><b> dat>>=1;<
38、/b></p><p> DQ = 1; // 給脈沖信號(hào)</p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p><b> delay(5);</b></p><p><b> }</b&
39、gt;</p><p> return(dat);</p><p><b> }</b></p><p><b> //寫字節(jié)</b></p><p> void WriteOneChar(unsigned char dat)</p><p><b> {
40、</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p><b> {</b></p><p><b> DQ = 0;</b></p><p> DQ = dat&
41、amp;0x01;</p><p><b> delay(5);</b></p><p><b> DQ = 1;</b></p><p><b> dat>>=1;</b></p><p><b> }</b></p>
42、<p><b> delay(5);</b></p><p><b> }</b></p><p><b> //讀溫度</b></p><p> unsigned int ReadTemperature(void)</p><p><b> {&
43、lt;/b></p><p> unsigned char a=0;</p><p> unsigned int b=0;</p><p> unsigned int t=0;</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號(hào)
44、列號(hào)的操作</p><p> WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換</p><p> delay(200);</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作 </p><p> WriteOneCh
45、ar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器前兩個(gè)就是溫度</p><p> a=ReadOneChar(); //低位</p><p> b=ReadOneChar(); //高位</p><p><b> b<<=8;</b></p><p><b> t=a+
46、b;</b></p><p> return(t);</p><p><b> }</b></p><p><b> 參考文獻(xiàn):</b></p><p> [1]. DS1820數(shù)據(jù)手冊(cè);</p><p> [2]. 郭天祥<<51單片機(jī)C語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 51單片機(jī)溫度傳感器課程設(shè)計(jì)報(bào)告書
- 單片機(jī)課程設(shè)計(jì)—基于51單片機(jī)的溫度監(jiān)控系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)的溫度警報(bào)器的設(shè)計(jì) 單片機(jī)課程設(shè)計(jì)
- 基于51單片機(jī)的溫度警報(bào)器的設(shè)計(jì)--單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)溫度測量系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于mcs-51單片機(jī)的溫度采集系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的定時(shí)鬧鐘設(shè)計(jì)
- 基于51單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--溫度傳感器實(shí)驗(yàn)的實(shí)現(xiàn)
- 51單片機(jī)課程設(shè)計(jì)
- 基于51單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的紅外線設(shè)計(jì)
- 單片機(jī)數(shù)字傳感器課程設(shè)計(jì)-- 溫度控制器
- 單片機(jī)課程設(shè)計(jì)---基于51單片機(jī)的電子鐘設(shè)計(jì)
- 基于51單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的交通燈
- 基于51單片機(jī)的課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論