版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)</p><p> 專 業(yè): 電氣工程及其自動(dòng)化 </p><p> 班 級(jí): 電氣 </p><p> 姓 名: </p><p> 學(xué) 號(hào): <
2、;/p><p> 指導(dǎo)教師: </p><p> 2012年 7月 1日</p><p><b> 1 引言</b></p><p> 本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,該設(shè)計(jì)控
3、制器使用單片機(jī)AT89C51,測(cè)溫傳感器使用DS18B20,用4位共陽極LCD串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。</p><p><b> 2 設(shè)計(jì)方案及原理</b></p><p><b> 2.1 設(shè)計(jì)方案</b></p><p> 選用AT89C51型單片機(jī)作為主控制器件,DS18B20作為測(cè)溫傳
4、感器,通過4個(gè)共陽極LCD串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示。通過DS18B20直接讀取被測(cè)溫度值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該器件的物理化學(xué)性能穩(wěn)定,線性度較好,在-30℃~150℃最大誤差小于正負(fù)0.5℃。該器件可直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。另外,該溫度計(jì)還能直接采用測(cè)溫器件測(cè)量溫度,從而簡化數(shù)據(jù)傳輸與處理過程。 </p><p><b> 2.2 設(shè)計(jì)原理</b></p>
5、<p> 溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì):控制器采用單片機(jī)AT89C51,溫度傳感采用DS18B20;用LCD實(shí)現(xiàn)溫度顯示。</p><p> 模擬溫度值經(jīng)過DS18B20處理后轉(zhuǎn)換為數(shù)字值,然后送到單片機(jī)中進(jìn)行數(shù)據(jù)處理,處理后的數(shù)據(jù)送到LCD中顯示。</p><p> 3 系統(tǒng)硬件軟件設(shè)計(jì)</p><p><b> 3.1 硬件設(shè)計(jì)<
6、/b></p><p> 3.1.1 主板電路</p><p> 包括AT89C51單片機(jī)、時(shí)鐘電路和復(fù)位電路、發(fā)光二極管、按鍵設(shè)置報(bào)警電路、液晶顯示模塊、上拉電阻、蜂鳴器、DS18B20溫度傳感器。DS18B20有4個(gè)獨(dú)立鍵按鍵,可以分別調(diào)整溫度計(jì)的上下限報(bào)警設(shè)置,當(dāng)被測(cè)溫度不在上下限范圍時(shí),蜂鳴器就會(huì)發(fā)出報(bào)警聲音,LCD顯示屏可以顯示測(cè)出的溫度值;按鍵復(fù)位電路是上電加手動(dòng)復(fù)位
7、,使用比較方便。具體連接電路如圖1所示。</p><p> 3.1.2 復(fù)位信號(hào)及外部復(fù)位電路</p><p> 單片機(jī)的端口是看門狗電路中喂狗信號(hào)的P1.6 MAX813輸入端即單片機(jī)每執(zhí)行一次程序就設(shè)置一次喂狗信號(hào),清零看門狗器件。若程序出現(xiàn)異常單片機(jī)引腳將出現(xiàn)兩個(gè)機(jī)器周RST期以上的高電平,使其復(fù)位。該復(fù)位信號(hào)高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩脈沖周期即兩個(gè)機(jī)器周期以上。若使
8、用頻率為12MHz的晶體振蕩器,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過2us才完成復(fù)位操作。 </p><p> 圖1 具體電路連接圖</p><p> 3.1.3 溫度傳感器與單片機(jī)的連接</p><p> 溫度傳感器的單總線(1-Wire)與單片機(jī)的P2.0連接,P2.0是單片機(jī)的高位地址線A8。P2端口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O,其輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸
9、出電流)4個(gè)TTL邏輯門電路。</p><p> 3.1.4 溫度控制及超溫和超溫警報(bào)單元</p><p> 當(dāng)由于環(huán)境溫度變化太劇烈或由于加熱或降溫設(shè)備出現(xiàn)故障,或者溫度傳感頭出現(xiàn)故障導(dǎo)致在一段時(shí)間內(nèi)不能將環(huán)境溫度調(diào)整到規(guī)定的溫度限內(nèi)的時(shí)候,單片機(jī)通過三極管驅(qū)動(dòng)揚(yáng)聲器發(fā)出警笛聲。</p><p> 3.1.5 液晶顯示電路</p><p&
10、gt; 在液晶顯示的電路設(shè)計(jì)中選擇具有單向輸出數(shù)據(jù)功能的PO端口向液晶顯示模塊提供數(shù)據(jù),P2.5、P2.6、P2.7口作為液晶顯示模塊的端口,在PO口上需要外加上拉電阻,才可以是液晶顯示模塊正常顯示。</p><p><b> 3.2 軟件設(shè)計(jì)</b></p><p> 3.2.1 主程序 </p><p> 主程序的主要功能是負(fù)責(zé)溫度
11、的實(shí)時(shí)顯示、讀出并處理DS18B20測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。其程序流程見圖3所示。源程序見附錄1。</p><p><b> 圖3 主程序流程圖</b></p><p> 3.2.2 讀出溫度子程序</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn)。校驗(yàn)有錯(cuò)時(shí),不進(jìn)溫度數(shù)據(jù)的改寫
12、。其程序流程圖如圖4所示。</p><p><b> 圖4 讀溫度流程圖</b></p><p> 3.2.3 顯示數(shù)據(jù)子程序</p><p> 顯示數(shù)據(jù)子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行操作。當(dāng)最高顯示位為0時(shí),將符號(hào)顯示位移入下一位,程序流程圖如圖5所示。</p><p> 通過以上軟件硬件的設(shè)計(jì),可
13、在PROTEUS中畫出數(shù)字溫度計(jì)的仿真圖如圖6(見附錄2)所示。</p><p><b> 5 總結(jié)</b></p><p> 本設(shè)計(jì)利用89S52芯片控制溫度傳感器DS18B20,在輔之以部分外圍電路實(shí)現(xiàn)對(duì)環(huán)境溫度的測(cè)控。用PROTUES仿真時(shí)我發(fā)現(xiàn)溫度警報(bào)器不起作用,當(dāng)溫度超過30度或低于10度都不能報(bào)警。剛開始以為是程序問題,經(jīng)過檢查簡化了報(bào)警電路,才發(fā)現(xiàn)是
14、電路及喇叭的電壓不正確。由于DS18B20是基于帶隙結(jié)構(gòu)的數(shù)字溫度傳感器,PN結(jié)增量電壓正比于IC絕對(duì)溫度,他的測(cè)溫精度較高,但存在一定誤差,不過,其誤差在時(shí)間和外部環(huán)境變化的條件下,保持相當(dāng)高的穩(wěn)定性。他充分利用監(jiān)控計(jì)算機(jī)的處理能力,在監(jiān)控計(jì)算機(jī)上用線性插補(bǔ)的數(shù)學(xué)方法對(duì)其進(jìn)行誤差技術(shù)校正補(bǔ)償,能輕易地將其提高其精度。</p><p> 圖5 數(shù)據(jù)顯示流程圖</p><p><b&
15、gt; 參考文獻(xiàn)</b></p><p> [1] 錢培怡,楊柏林.電子電路實(shí)驗(yàn)與課程設(shè)計(jì)[M].北京:地震出版社,2002.6.</p><p> [2] 陳大欽,羅杰.電子電路實(shí)驗(yàn)設(shè)計(jì)及現(xiàn)代EDA技術(shù)[M].北京:高等教育出版社,2008.6</p><p> [3] 陳明義.電子技術(shù)課程設(shè)計(jì)實(shí)用教程[M].長沙:中南大學(xué)出版社,2010.&
16、lt;/p><p><b> 附錄1 源程序</b></p><p> //數(shù)字溫度計(jì)的設(shè)置:上電或按鍵復(fù)位后,顯示系統(tǒng)提示符ZB090303;當(dāng)K2(P1.0口)鍵按下后,顯示即時(shí)溫度;P0口為段控口,P2口為位控口,P1口為按鍵控制口,P3口控制流水燈</p><p> #include<reg52.h> //包含單
17、片機(jī)寄存器的頭文件</p><p> #include<intrins.h> //包含_nop_()函數(shù)定義的頭文件</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> Uchar duan[16]={0x
18、C0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 0x8c,0xce,0x86,0xAB,0xA1,0xff};</p><p> uchar wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};</p><p> char find_code[8]={3,0,3,0,9,0,8,2};<
19、/p><p> /*******************************************************************</p><p> 函數(shù)功能:做好讀溫度的準(zhǔn)備</p><p> ******************************************************************/ void R
20、eadyReadTemp(void)*</p><p> { Init_DS18B20(); //將DS18B20初始化</p><p> WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換 </p><p> for
21、(time=0;time<100;time++)</p><p> S ; //溫度轉(zhuǎn)換需要一點(diǎn)時(shí)間</p><p> Init_D18B20(); //將DS18B20初始化</p><p> WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p> Wri
22、teOneChar(0xBE); //讀取溫度寄存器,前兩個(gè)分別是溫度的低位和高位</p><p><b> }</b></p><p> /*******************************************************************</p><p><b> 延時(shí)函數(shù)</b
23、></p><p> *******************************************************************/</p><p> void display_delay(void)</p><p> { unsigned int time1=100;</p><p> w
24、hile(time1) time1-- ; </p><p><b> }</b></p><p> /*******************************************************************</p><p><b> 延時(shí)1ms函數(shù)</b></p><
25、;p> *******************************************************************/</p><p> void DelayX1ms(uint count) </p><p><b> { uint j;</b></p><p> while(count--!=
26、0) </p><p> { for(j=0;j<80;j++);</p><p> } </p><p><b> }</b></p><p> /*************************************************************
27、****</p><p><b> 顯示溫度程序</b></p><p> *****************************************************************/</p><p> void display(uchar gewei,uchar shiwei ,uchar baiwei,ucha
28、r shi,uchar bai,uchar qian,uchar wan)</p><p> { P0=duan[wan]; //萬分位</p><p> P2=wei[6]; </p><p> display_delay();</p><p><b> P2=0xff;</b>&
29、lt;/p><p> P0=duan[qian]; //千分位</p><p> P2=wei[5]; </p><p> display_delay();</p><p><b> P2=0xff;</b></p><p> P0=duan[bai]; //
30、百分位</p><p> P2=wei[4]; </p><p> display_delay();</p><p><b> P2=0xff;</b></p><p> P0=duan[shi]; //十分位</p><p> P2=wei[3]; </p&g
31、t;<p> display_delay();</p><p><b> P2=0xff;</b></p><p> P0=duan[gewei]&0x7f; //個(gè)位</p><p> P2=wei[2]; </p><p> display_delay();</p>
32、<p><b> P2=0xff;</b></p><p> P0=duan[shiwei]; //十位</p><p> P2=wei[1]; </p><p> display_delay();</p><p><b> P2=0xff;</b></p&g
33、t;<p> P0=duan[baiwei]; //百位</p><p> P2=wei[0]; </p><p> display_delay();</p><p><b> P2=0xff;</b></p><p> P0=0xff; </p><p&g
34、t;<b> } </b></p><p> /*******************************************************************</p><p><b> 主函數(shù)</b></p><p> ************************************
35、*******************************/</p><p> void main(void)</p><p> { uchar TL,TH,TD,TN;</p><p> uchar gewei,shiwei,baiwei,shi,bai,qian,wan;</p><p> unsigned int xiaos
36、hu;</p><p><b> uchar m;</b></p><p><b> DQ=1;</b></p><p><b> m=key();</b></p><p><b> while(1)</b></p><p>
37、;<b> { disp();</b></p><p><b> m=key();</b></p><p> if(m==0x01)</p><p> { while(1)</p><p> { w:ReadyReadTemp(); </p><p> TL=R
38、eadOneChar(); //先讀的是溫度值低位</p><p> TH=ReadOneChar(); //接著讀的是溫度值高位</p><p> TN=TH*16+TL/16; //實(shí)際溫度值=(TH*256+TL)/16,即:TH*16+TL/16</p><p> TD=(TL&0x0f);</p><p&g
39、t; xiaoshu=625*TD;</p><p> gewei=TN%10;</p><p> shiwei=(TN/10)%10;</p><p> baiwei=TN/100;</p><p> if(baiwei==0) baiwei=15; //滅</p><p> if
40、(baiwei==15&&shiwei==0) shiwei=15;//滅</p><p> shi=(xiaoshu/1000)%10;</p><p> bai=(xiaoshu/100)%10; </p><p> qian=(xiaoshu/10)%10;</p><p> wan=xia
41、oshu%10; </p><p> Display (gewei, shiwei, baiwei, shi,bai,qian,wan);</p><p> if(TN>=20 )</p><p><b> bz=0;</b></p><p> else bz=1; </p>&l
42、t;p><b> m=key();</b></p><p> if(m==0x02)</p><p><b> { for(;;)</b></p><p><b> { disp();</b></p><p><b> m=key();</b&g
43、t;</p><p> if(m==0x01)</p><p><b> goto w;</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(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ì)
- 數(shù)字溫度計(jì)--單片機(jī)課程設(shè)計(jì)
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)設(shè)計(jì)
- 溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字顯示溫度計(jì)
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告數(shù)字溫度計(jì)
評(píng)論
0/150
提交評(píng)論