版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘要</b></p><p> 本設(shè)計(jì)是是一個(gè)基于單片機(jī)AT89S52的數(shù)字溫度計(jì)的設(shè)計(jì),用來(lái)測(cè)量環(huán)境溫度,測(cè)量范圍為-50℃—110℃度。整個(gè)設(shè)計(jì)系統(tǒng)分為4部分:?jiǎn)纹瑱C(jī)控制、溫度傳感器、數(shù)碼顯示以及鍵盤控制電路。此設(shè)計(jì)的重點(diǎn)在于編程,程序要實(shí)現(xiàn)溫度的采集、轉(zhuǎn)換、顯示和上下限溫度報(bào)警,其外圍電路所用器件較少,相對(duì)簡(jiǎn)單,實(shí)現(xiàn)容易。由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱
2、敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。整個(gè)設(shè)計(jì)是以AT89S52為核
3、心,通過(guò)數(shù)字溫度傳感器DS18B20來(lái)實(shí)現(xiàn)環(huán)境溫度的采集和A/D轉(zhuǎn)換,同時(shí)因其輸出為數(shù)字形式,且為串行輸出,這就方便了單片機(jī)進(jìn)行數(shù)據(jù)處理,但同時(shí)也對(duì)編程提出了更高的要求。單片機(jī)把采集到的溫度進(jìn)行相應(yīng)的轉(zhuǎn)換后,使之能夠方便地在數(shù)碼管</p><p> 1. 概述- 3 -</p><p> 1.1. 設(shè)計(jì)要求- 3 -</p><p> 1.2. 設(shè)計(jì)目的
4、- 3 -</p><p> 2. 系統(tǒng)總體方案及硬件設(shè)計(jì)- 4 -</p><p> 2.1. 主控制器- 4 -</p><p> 2.2. 系統(tǒng)整體硬件電路設(shè)計(jì)- 4 -</p><p> 3. 軟件設(shè)計(jì)- 5 -</p><p> 4. Proteus軟件仿真- 6 -</p>
5、<p> 5. 課程設(shè)計(jì)體會(huì)- 7 -</p><p><b> 概述</b></p><p><b> 設(shè)計(jì)要求</b></p><p> 基本范圍0℃-99.9℃</p><p> 精度誤差小于0.5℃</p><p><b> LED
6、數(shù)碼直讀顯示</b></p><p> 可以設(shè)定溫度的上下限報(bào)警功能</p><p><b> 設(shè)計(jì)目的</b></p><p> 隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的
7、更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。 本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,可廣泛用于食品庫(kù)、冷庫(kù)、糧庫(kù)、溫室大棚等需要控制溫度的地方。目前,該產(chǎn)品已在溫控系統(tǒng)中得到廣泛的應(yīng)用</p><p> 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p>
8、;<b> 主控制器</b></p><p> 單片機(jī)AT89S52具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,適合便攜手持式產(chǎn)品的設(shè)計(jì)使用。</p><p> AT89S52單片機(jī)芯片具有以下特性:</p><p> 1)指令集合芯片引腳與Intel公司的8052兼容;</p><
9、p> 2)4KB片內(nèi)在系統(tǒng)可編程FLASH程序存儲(chǔ)器;</p><p> 3)時(shí)鐘頻率為0~33MHZ;</p><p> 4)128字節(jié)片內(nèi)隨機(jī)讀寫存儲(chǔ)器(RAM);</p><p> 5)6個(gè)中斷源,2級(jí)優(yōu)先級(jí);</p><p> 6)2個(gè)16位定時(shí)/記數(shù)器;</p><p> 7)全雙工串行通信
10、接口;</p><p><b> 8)監(jiān)視定時(shí)器;</b></p><p><b> 9)兩個(gè)數(shù)據(jù)指針;</b></p><p> 系統(tǒng)整體硬件電路設(shè)計(jì)</p><p> 系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等。</p>&
11、lt;p><b> 軟件設(shè)計(jì)</b></p><p><b> 主程序流程圖</b></p><p><b> 讀溫度流程圖</b></p><p> Proteus軟件仿真</p><p><b> 課程設(shè)計(jì)體會(huì)</b></p&
12、gt;<p> 在技能的提高過(guò)程中少不了動(dòng)手操作,通過(guò)這次的課程設(shè)計(jì)提高了綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問(wèn)題的能力。在課程設(shè)計(jì)的過(guò)程中使我們對(duì)單片機(jī)的結(jié)構(gòu)、基本工作原理、單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)有了更深一步的了解,特別是在硬件設(shè)計(jì)和軟件編程方面有了很大提高。在這次單片機(jī)課程設(shè)計(jì)中,使我更加了解單片機(jī)在我們學(xué)習(xí)生活中的重要性,課程設(shè)計(jì)中遇到的困難,經(jīng)過(guò)上網(wǎng)查資料、在圖書館翻閱專業(yè)課本、和同學(xué)討論一一解決。</
13、p><p> 此次課程設(shè)計(jì)不僅鞏固了以前所學(xué)過(guò)的知識(shí),加深了我對(duì)所學(xué)知識(shí)的理解,而且學(xué)到了很多在書本上未涉及的知識(shí),提高了自己的動(dòng)手能力。軟件編程過(guò)程中,由于采用匯編語(yǔ)言編程,所以參考了別人的設(shè)計(jì)思路,學(xué)習(xí)明白之后,對(duì)程序作了修改。在編譯仿真時(shí)對(duì)軟件Keiv 和Proteus有了更多的認(rèn)識(shí)。在焊接的過(guò)程中也遇到了不少的問(wèn)題,因?yàn)槊總€(gè)引腳都是不樣一的,只有讓各個(gè)引腳互相對(duì)應(yīng),才能得出正確的結(jié)果。并且用的是銅線,所以在
14、焊接時(shí)很麻煩稍不注意就會(huì)連線,在焊接時(shí)明顯感覺(jué)到自己的動(dòng)手能力比較差,通過(guò)這次的設(shè)計(jì)有了明顯的提高。</p><p> 通過(guò)這次設(shè)計(jì),使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決問(wèn)題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程,以及在常用編程設(shè)計(jì)思路技巧的掌握方面都能向前邁了一大步,為以后的能更好的融入工作當(dāng)中去打下了堅(jiān)實(shí)的基礎(chǔ)。</p><p><b>
15、參考文獻(xiàn)</b></p><p> [1] 余發(fā)山,王福忠,等.單片機(jī)原理及應(yīng)用技術(shù).中國(guó)礦業(yè)大學(xué)出版社</p><p><b> 附1:源程序代碼</b></p><p> /******************************************************************</p>
16、;<p> 程序名稱:DS18B20溫度測(cè)量、報(bào)警系統(tǒng)</p><p> 簡(jiǎn)要說(shuō)明:DS18B20溫度計(jì),溫度測(cè)量范圍0~99.9攝氏度</p><p> 可設(shè)置上限報(bào)警溫度、下限報(bào)警溫度</p><p> 即高于上限值或者低于下限值時(shí)蜂鳴器報(bào)警</p><p> 默認(rèn)上限報(bào)警溫度為38℃、默認(rèn)下限報(bào)警溫度為5℃<
17、;/p><p> 報(bào)警值可設(shè)置范圍:最低上限報(bào)警值等于當(dāng)前下限報(bào)警值</p><p> 最高下限報(bào)警值等于當(dāng)前上限報(bào)警值</p><p> 將下限報(bào)警值調(diào)為0時(shí)為關(guān)閉下限報(bào)警功能 </p><p> ******************************************************************/
18、</p><p> #include <AT89X52.h></p><p> #include "DS18B20.h" </p><p> #define uint unsigned int</p><p> #define uchar unsigned char //宏定義</p>
19、;<p> #define SET P3_1 //定義調(diào)整鍵</p><p> #define DEC P3_2 //定義減少鍵</p><p> #define ADD P3_3 //定義增加鍵</p><p> #define BEEP P3_7 //定義蜂鳴器</p><p> bi
20、t shanshuo_st; //閃爍間隔標(biāo)志</p><p> bit beep_st; //蜂鳴器間隔標(biāo)志</p><p> sbit DIAN = P0^7; //小數(shù)點(diǎn)</p><p> uchar x=0; //計(jì)數(shù)器</p><p> signed char m; //溫度值全
21、局變量</p><p> uchar n; //溫度值全局變量</p><p> uchar set_st=0; //狀態(tài)標(biāo)志</p><p> signed char shangxian=38; //上限報(bào)警溫度,默認(rèn)值為38</p><p> signed char xiaxian=5; //下限報(bào)警溫度,
22、默認(rèn)值為38</p><p> uchar code LEDData[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};</p><p> unsigned int ReadTemperature(void);</p><p> /*****延時(shí)子程序*****/</p>&l
23、t;p> void Delay(uint num)</p><p><b> {</b></p><p> while( --num );</p><p><b> }</b></p><p> /*****初始化定時(shí)器0*****/</p><p> vo
24、id InitTimer(void)</p><p><b> {</b></p><p><b> TMOD=0x1;</b></p><p><b> TH0=0x3c;</b></p><p> TL0=0xb0; //50ms(晶振12M)</p&
25、gt;<p><b> }</b></p><p> /*****定時(shí)器0中斷服務(wù)程序*****/</p><p> void timer0(void) interrupt 1 using 0</p><p><b> {</b></p><p><b> TH0=
26、0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> x++;</b></p><p><b> }</b></p><p> /*****外部中斷0服務(wù)程序*****/</p><p>
27、 void int0(void) interrupt 0using 1</p><p><b> {</b></p><p> EX0=0; //關(guān)外部中斷0</p><p> if(DEC==0&&set_st==1)</p><p><b> {</b>&l
28、t;/p><p> shangxian--;</p><p> if(shangxian<xiaxian)shangxian=xiaxian;</p><p><b> }</b></p><p> else if(DEC==0&&set_st==2)</p><p>&
29、lt;b> {</b></p><p> xiaxian--;</p><p> if(xiaxian<0)xiaxian=0;</p><p><b> }</b></p><p><b> }</b></p><p> /*****外部
30、中斷1服務(wù)程序*****/</p><p> void int1(void) interrupt 2 using 2</p><p><b> {</b></p><p> EX1=0; //關(guān)外部中斷1</p><p> if(ADD==0&&set_st==1)</p>
31、<p><b> {</b></p><p> shangxian++;</p><p> if(shangxian>99)shangxian=99;</p><p><b> }</b></p><p> else if(ADD==0&&set_st==
32、2)</p><p><b> {</b></p><p> xiaxian++;</p><p> if(xiaxian>shangxian)xiaxian=shangxian;</p><p><b> } </b></p><p><b>
33、}</b></p><p> /*****讀取溫度*****/</p><p> void check_wendu(void)</p><p><b> {</b></p><p> uint a,b,c;</p><p> c=ReadTemperature()-5; /
34、/獲取溫度值并減去DS18B20的溫漂誤差</p><p> a=c/100; //計(jì)算得到十位數(shù)字</p><p> b=c/10-a*10; //計(jì)算得到個(gè)位數(shù)字</p><p> m=c/10; //計(jì)算得到整數(shù)位</p><p> n=c-a*100-b*10; //計(jì)算得到小數(shù)位</p&g
35、t;<p> if(m<0){m=0;n=0;} //設(shè)置溫度顯示上限</p><p> if(m>99){m=99;n=9;} //設(shè)置溫度顯示上限 </p><p><b> }</b></p><p> /*****顯示開(kāi)機(jī)初始化等待畫面*****/</p><p>
36、 Disp_init() </p><p><b> {</b></p><p> P0 = 0x40; //顯示-</p><p> P2 = 0xf7;</p><p> Delay(200);</p><p> P2 = 0xfb;</p><
37、p> Delay(200); </p><p> P2 = 0xfd;</p><p> Delay(200);</p><p> P2 = 0xfe;</p><p> Delay(200);</p><p> P2 = 0xff; //關(guān)閉顯示</p><p
38、><b> }</b></p><p> /*****顯示溫度子程序*****/</p><p> Disp_Temperature() //顯示溫度</p><p> { P2 = 0xf7;</p><p> P0 =0x39; //顯示C</p><p>
39、 Delay(300);</p><p> P2 = 0xfb;</p><p> P0 =LEDData[n]; //顯示個(gè)位</p><p> Delay(300);</p><p> P2 = 0xfd;</p><p> P0 =LEDData[m%10]; //顯示十位</p&g
40、t;<p> DIAN = 1; //顯示小數(shù)點(diǎn)</p><p> Delay(300);</p><p> P2 = 0xfe;</p><p> P0 =LEDData[m/10]; //顯示百位</p><p> Delay(300);</p><p> P2 =
41、0xff; //關(guān)閉顯示</p><p><b> }</b></p><p> /*****顯示報(bào)警溫度子程序*****/</p><p> Disp_alarm(uchar baojing)</p><p> {P2 = 0xf7;</p><p> P0 =0x39
42、; //顯示C</p><p> Delay(200);</p><p> P2 = 0xfb;</p><p> P0 =LEDData[baojing%10]; //顯示十位</p><p> Delay(200);</p><p> P2 = 0xfd;</p><p>
43、; P0 =LEDData[baojing/10]; //顯示百位</p><p> Delay(200);</p><p> P2 = 0xfe;</p><p> if(set_st==1)P0 =0x76;</p><p> else if(set_st==2)P0 =0x38; //上限H、下限L標(biāo)示</p>
44、<p> Delay(200);</p><p> P2 = 0xff; //關(guān)閉顯示</p><p><b> }</b></p><p> /*****報(bào)警子程序*****/</p><p> void Alarm()</p><p> { uns
45、igned int i;</p><p><b> { </b></p><p> for(i=0;i<200;i++)//喇叭發(fā)聲的時(shí)間循環(huán),改變大小可以改變發(fā)聲時(shí)間長(zhǎng)短</p><p><b> {</b></p><p> Delay(80);//參數(shù)決定發(fā)聲的頻率,估算值&l
46、t;/p><p> BEEP=!BEEP;</p><p><b> }</b></p><p> BEEP=1; //喇叭停止工作,間歇的時(shí)間,可更改</p><p> Delay(20000);</p><p><b> }</b></p>
47、<p><b> }</b></p><p> /*****主函數(shù)*****/</p><p> void main(void)</p><p><b> {</b></p><p><b> uint z;</b></p><p&g
48、t; InitTimer(); //初始化定時(shí)器</p><p> EA=1; //全局中斷開(kāi)關(guān)</p><p><b> TR0=1;</b></p><p> ET0=1; //開(kāi)啟定時(shí)器0</p><p> IT0=1; </p><p>&
49、lt;b> IT1=1;</b></p><p> check_wendu();</p><p> check_wendu();</p><p> for(z=0;z<300;z++)</p><p><b> {</b></p><p> Disp_init(
50、); </p><p><b> }</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> if(SET==0)</p><p><b> {</b&g
51、t;</p><p> Delay(2000);</p><p> do{}while(SET==0);</p><p> set_st++;x=0;shanshuo_st=1;</p><p> if(set_st>2)set_st=0;</p><p><b> }</b>&l
52、t;/p><p> if(set_st==0)</p><p><b> {</b></p><p> EX0=0; //關(guān)閉外部中斷0</p><p> EX1=0; //關(guān)閉外部中斷1</p><p> check_wendu();</p><p>
53、 Disp_Temperature();</p><p> if(m>=shangxian)</p><p><b> P1_0=1;</b></p><p><b> else </b></p><p><b> P1_0=0;</b></p>&
54、lt;p> if(m<xiaxian)</p><p><b> P1_1=1;</b></p><p><b> else </b></p><p><b> P1_1=0;</b></p><p> if((m>=shangxian)||(m&l
55、t;xiaxian))</p><p><b> {</b></p><p> Alarm(); //報(bào)警檢測(cè)</p><p><b> }</b></p><p><b> }</b></p><p> else if(set_st==1
56、)</p><p><b> {</b></p><p> BEEP=1; //關(guān)閉蜂鳴器</p><p> EX0=1; //開(kāi)啟外部中斷0</p><p> EX1=1; //開(kāi)啟外部中斷1</p><p> if(x>=10){shanshuo_st=~sh
57、anshuo_st;x=0;}</p><p> if(shanshuo_st) {Disp_alarm(shangxian);}</p><p><b> }</b></p><p> else if(set_st==2)</p><p><b> {</b></p><
58、;p> BEEP=1; //關(guān)閉蜂鳴器</p><p> EX0=1; //開(kāi)啟外部中斷0</p><p> EX1=1; //開(kāi)啟外部中斷1</p><p> if(x>=10){shanshuo_st=~shanshuo_st;x=0;}</p><p> if(shanshuo_st) {Disp
59、_alarm(xiaxian);}</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*****END*****/</p><p><b> 附2:系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89s52單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)畢業(yè)論文
- 單片機(jī)課程設(shè)計(jì)-- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于at89s52單片機(jī)的溫度控制系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---基于at89s52 單片機(jī)的溫度控制系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制的數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字顯示溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)——數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
評(píng)論
0/150
提交評(píng)論