簡易溫度計設(shè)計_第1頁
簡易溫度計設(shè)計_第2頁
簡易溫度計設(shè)計_第3頁
簡易溫度計設(shè)計_第4頁
簡易溫度計設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、信息與電氣工程學(xué)院課程設(shè)計說明書(2014 /2015學(xué)年第 二 學(xué)期)課程名稱 :單片機(jī)原理及應(yīng)用課程設(shè)計 題 目 : 簡易溫度計設(shè)計 專業(yè)班級 : 學(xué)生姓名 : 學(xué) 號: 指導(dǎo)教師 : 設(shè)計周數(shù) : 2周 設(shè)計成績 : 年月日1、 實驗?zāi)康脑O(shè)計并制作出一個以單片機(jī)為核心的簡易溫度計系統(tǒng)2、 主要任務(wù)1、 確定整體設(shè)計方案;2、 設(shè)計鍵盤輸入電路;3、 設(shè)計顯示電路;4、 合理分配地址,編寫系統(tǒng)程序;5、 采用Proteus進(jìn)行仿真,軟硬件聯(lián)機(jī)調(diào)試。3、 技術(shù)要求(1)以MCS-51單片機(jī)為核心,18b20為敏感元件,設(shè)計出一簡易溫度計;(2)使用三位數(shù)碼管顯示溫度,并能進(jìn)行溫度設(shè)置;4、以

2、MCS-51單片機(jī)為核心設(shè)計簡易溫度計的簡介 傳統(tǒng)的溫度檢測以熱敏電阻為溫度敏感元件,需要后續(xù)信號處理電路,而且可靠性相對較差,測溫準(zhǔn)確度低,檢測系統(tǒng)也有一定誤差。以MCS-51為核心,18b20為測溫傳感器,通過3位共陽極LED數(shù)碼管傳送數(shù)據(jù),實現(xiàn)溫度顯示。具有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,可靠性高等特點(diǎn)。5、程序流程圖開始初始化獲取當(dāng)前溫度否是顯示當(dāng)前溫度獲取設(shè)定溫度比較當(dāng)前溫度與設(shè)定溫度并處理設(shè)定當(dāng)前溫度是否設(shè)定當(dāng)前溫度6、 系統(tǒng)硬件電路原理圖 6.1 時鐘電路晶振電路由一個晶振與兩個電容連接組成,與單片機(jī)的18、19管腳相連,另一端接地,電路圖為: 電容大小沒有固定值,一般

3、5到30pf,晶振是給單片機(jī)提供工作信號脈沖的。這個脈沖就是單片機(jī)的工作速度。一般用內(nèi)部振蕩方式,這種方式比較穩(wěn)定。晶振頻率為12MHZ,單片機(jī)工作速度就是每秒 12M。單片機(jī)的工作頻率是有范圍的,不能太大,一般 24M就不上去了,不然不穩(wěn)定。6.2 復(fù)位電路復(fù)位電路由一個有極性電容、一個電阻與一個按鍵連接而成,一端連單片機(jī)的RST端,另一端接電源,電源另一端接單片機(jī)的EA。其中電容是通過充放電來實現(xiàn)維持一段時間的高電平,電容充電時間與R C的值成正比,當(dāng)按下按鍵時,由于電容充電,RST維持一段時間高電平以達(dá)到復(fù)位的目的。一般情況下,選擇大小為10到30uF的電容,而電阻一般選用1到10K的。

4、電路圖為: 6.3 DS18b20溫度傳感電路 此部分電路負(fù)責(zé)溫度信號的采集、將溫度信號轉(zhuǎn)換成數(shù)字代碼儲存在溫度控制寄存器中,向單片機(jī)發(fā)送溫度數(shù)據(jù)等重要功能,主要由DS18b20芯片來完成,該電路的電路圖為: 其中DQ為DS18b20的數(shù)據(jù)輸入/輸出端引腳,與單片機(jī)的P3.5口相連,單片機(jī)通過P3.5口向DS18b20發(fā)出各種命令,并讀取其轉(zhuǎn)換后的溫度數(shù)據(jù)。 由于DS18B20單線通信功能是分時完成的,所以有嚴(yán)格的時隙概念,讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。6.4顯示電路7、源程

5、序代碼#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar wei;/18b20接口sbit DS=P35; /define interface/sbit dula=P2;/定義數(shù)碼管位選sbit wei1=P15;/定義數(shù)碼管位選sbit wei2=P16;/定義數(shù)碼管位選sbit wei3=P17;/定義按鍵sbit k1=P10;/定義按鍵sbit k2=P11;/定義按鍵sbit k3=P12;/定義led指示燈sbit led1=P13;/定義led指示燈sbit led2=

6、P14;/共陽極數(shù)碼管編碼unsigned char code tb=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; 0x87,0xff,0xef;/延時函數(shù)void delay(uint count) /delayuint i;while(count) i=200; while(i>0) i-; count-; /18b20復(fù)位初始化函數(shù)void dsreset(void) /send reset and initialization commanduint i;DS=0;i=103;while(i>0)i-;DS=1;i=4

7、;while(i>0)i-;/18b20底層函數(shù),讀一位bit tmpreadbit(void) /read a bituint i;bit dat;DS=0;i+; /i+ for delayDS=1;i+;i+;dat=DS;i=8;while(i>0)i-;return (dat);/18b20底層函數(shù),讀一個字節(jié)uchar tmpread(void) /read a byte dateuchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tmpreadbit();dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位

8、在最前面,這樣剛好一個字節(jié)在DAT里return(dat);/18b20底層函數(shù),寫一個字節(jié)void tmpwritebyte(uchar dat) /write a byte to ds18b20uint i;uchar j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb) /write 1DS=0;i+;i+;DS=1; i=8;while(i>0)i-;else DS=0; /write 0i=8;while(i>0)i-;DS=1;i+;i+;/18b20底層函數(shù),開始轉(zhuǎn)換溫

9、度void tmpchange(void) /DS18B20 begin changedsreset();delay(1);tmpwritebyte(0xcc); / address all drivers on bustmpwritebyte(0x44); / initiates a single temperature conversion/18b20底層函數(shù),獲取當(dāng)前溫度uint tmp() /get the temperaturefloat tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=t

10、mpread();b=tmpread();temp=b;temp<<=8; /two byte compose a int variabletemp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;/數(shù)碼管顯示子程序void display(uint temp)/顯示程序/dula=0;P2=tbtemp/100;/顯示百位wei1=0;wei2=1;wei3=1;delay(10);wei1=1;wei2=1;wei3=1;P2=0x7f&tbtemp%100/10;/顯示十位wei1=1;wei2=0;wei3=1;de

11、lay(10);wei1=1;wei2=1;wei3=1;P2=tbtemp%10;/顯示個位wei1=1;wei2=1;wei3=0;delay(10);wei1=1;wei2=1;wei3=1;/主函數(shù)void main()/定義變量存儲當(dāng)前溫度int tp=0;/定義變量存儲設(shè)定溫度int set=300;/定義變量存儲顯示模式,顯示當(dāng)前溫度還是顯示設(shè)定溫度int mode;do/開始轉(zhuǎn)化溫度tmpchange();/獲取當(dāng)前溫度tp=tmp();/根據(jù)mode變量顯示設(shè)定溫度或者當(dāng)前溫度if(mode=0)display(set);else display(tp); /設(shè)定溫度增加if

12、(k1=0&&mode=0)delay(50);if(k1=0)set+;/設(shè)定溫度降低if(k2=0&&mode=0)delay(50);if(k2=0)set-;/改變顯示的內(nèi)容(當(dāng)前溫度還是設(shè)定溫度)if(k3=0)delay(50);if(k3=0)mode+;if(mode>2)mode=0;/如果當(dāng)前溫度大于設(shè)定溫度提示報警if(tp>set)led1=1;led2=0;else if(tp<set)/如果當(dāng)前溫度小于設(shè)定溫度提示加熱led1=0;led2=1;else /如果當(dāng)前溫度等于設(shè)定溫度不執(zhí)行動作led1=1;led2=1

13、; while(1);8、心得體會 本次的簡易溫度計課程設(shè)計不僅使我們進(jìn)一步鞏固了書本上的知識,做到了學(xué)以致用,還學(xué)到了許多課本上學(xué)不到的知識。我還學(xué)到了做事必須嚴(yán)謹(jǐn)?shù)牡木?,尤其是我們學(xué)工科的同學(xué),不嚴(yán)謹(jǐn)結(jié)果就要有很大的偏差,就得不到想要的結(jié)果。通過自己動手設(shè)計的電路和系統(tǒng)仿真軟件protues和keil軟件,使我們進(jìn)一步了解了單片機(jī)的設(shè)計制作過程,其中軟件部分,即編程部分,我們上網(wǎng)找了好多資料,雖然經(jīng)過自己的修改,但還是有很多功能不能實現(xiàn)。由于protues并不是很熟練,在使用的過程中有很多原件的名稱不知道,從而花費(fèi)了大量的時間在網(wǎng)上查找,今后應(yīng)該在這方面多多努力??偨Y(jié)經(jīng)驗的時候我們得出這樣的結(jié)論,學(xué)習(xí)應(yīng)該學(xué)以致用,有目的的去學(xué)習(xí),如果學(xué)了不用等于沒學(xué)。在課設(shè)中學(xué)會了又問題請教別人與一起討論,因為以后很多東西的工程量都是很大的,單靠個人力量要實現(xiàn)是很困難的,而且時間有限,這就要求我們必須學(xué)會具有團(tuán)隊精神,相互學(xué)習(xí),因為很多困擾你的問題在討論中便

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論