版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘要隨著技術(shù)的進(jìn)步,單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛,并且在很多電子產(chǎn)品中也將其用到溫度檢測和溫度控制。本次設(shè)計是一個基于at89c51單片機(jī)的測溫系統(tǒng),該系統(tǒng)使用了美國dallas公司生產(chǎn)的ds18b20作為溫度傳感器,利用液晶12864進(jìn)行顯示,使用鍵盤進(jìn)行上下限報警溫度的設(shè)置,實現(xiàn)了最簡單的溫度檢測系統(tǒng)。該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。關(guān)鍵詞: 單片機(jī) ds18b20 溫度傳感器 目錄1課程設(shè)計意義-2方案論證-1.1方案1- 1.2方案2-3單片機(jī)溫度控制系統(tǒng)總體設(shè)計及原理-2.1系統(tǒng)的主要功能-2.2系統(tǒng)的工作原理-2.3系統(tǒng)的
2、總原理圖-2.3系統(tǒng)的主要技術(shù)指標(biāo)-4溫度控制系統(tǒng)的硬件設(shè)計-3.1溫度采集模塊電路-3.11 數(shù)字溫度傳感器18b20的工作原理-3.12數(shù)字溫度傳感器18b20的工作電路- 3.2顯示電路-3.3控制電路-3.4報警電路-5溫度控制系統(tǒng)的軟件設(shè)計-4.1主程序流程圖-4.2讀出溫度子程序-4.3溫度轉(zhuǎn)換命令子程序-4.4計算溫度子程序-4.5顯示子程序-4.51顯示當(dāng)前溫度子程序-4.52顯示上下限溫度子程序-4.6鍵盤掃描控制子程序-6總結(jié)與體會-7致謝-8參考文獻(xiàn)-附:總程序1課程設(shè)計意義本次課程設(shè)計是在我們學(xué)過單片機(jī)后的一次實習(xí),可增加我們的動手能力。特別是對單片機(jī)的系統(tǒng)設(shè)計有很大幫
3、助。本課程設(shè)計由一個人完成,在鍛煉了自己的同時也增強(qiáng)了自己的獨立科學(xué)創(chuàng)新的精神。2方案論證 2.1方案一由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行a/d轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到a/d轉(zhuǎn)換電路,其中還涉及到電阻與溫度的對應(yīng)值的計算,感溫電路比較麻煩。而且在對采集的信號進(jìn)行放大時容易受溫度的影響出現(xiàn)較大的偏差。2.2 方案二 進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器ds18b20,此傳感器,
4、可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,電路簡單,精度高,軟硬件都以實現(xiàn),而且使用單片機(jī)的接口便于系統(tǒng)的再擴(kuò)展,滿足設(shè)計要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費用較低,可靠性高,軟件設(shè)計也比較簡單,故采用了方案二。3單片機(jī)溫度控制系統(tǒng)總體設(shè)計及原理3.1系統(tǒng)的主要功能控制器采用單片機(jī)at89c51,溫度傳感器采用ds18b20,用3位led液晶12864以并口傳送數(shù)據(jù)實現(xiàn)溫度顯示,增加四個獨立鍵盤調(diào)節(jié)溫度上下限,報警采用蜂鳴器。3.2系統(tǒng)的工作原理at89s51led顯示ds18b20溫 度 傳 感 器單片機(jī)復(fù)位時鐘振蕩報警溫度調(diào)整鍵蜂鳴器,指示燈3.3系統(tǒng)的總原理圖3.
5、4系統(tǒng)的主要技術(shù)指標(biāo)1、基本測溫范圍55c +125c (67f +257f)。2、測溫精度誤差小于0.5c。 3、三位led液晶12864溫度顯示范圍0c +125c。4、上下限報警溫度顯示精度為1c。3溫度控制系統(tǒng)的硬件設(shè)計3.1溫度采集模塊電路3.11 數(shù)字溫度傳感器18b20的工作原理1.ds18b20的主要特性(1)電壓范圍:3.05.5v(2)獨特的單線接口方式。(3)ds18b20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)(4)溫范圍55125,在-10+85時精度為0.5(5)可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.2
6、5、0.125和0.0625,可實現(xiàn)高精度測溫(6)測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給cpu,同時可傳送crc校驗碼,具有極強(qiáng)的抗干擾糾錯能力2. ds18b20的外形和內(nèi)部結(jié)構(gòu)ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器。 3 高速暫存存儲器高速暫存存儲器由9個字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。4.ds18b20暫存寄存器分布寄存器內(nèi)容字節(jié)地址溫度值低位 (ls
7、 byte)0溫度值高位 (ms byte)1高溫限值(th)2低溫限值(tl)3配置寄存器4保留5保留6保留7crc校驗值8rom指令表指 令約定代碼功 能讀rom33h讀ds1820溫度傳感器rom中的編碼(即64位地址)符合 rom55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問單總線上與該編碼相對應(yīng)的 ds1820 使之作出響應(yīng),為下一步對該 ds1820 的讀寫作準(zhǔn)備。搜索 rom0foh用于確定掛接在同一總線上 ds1820 的個數(shù)和識別 64 位 rom 地址。為操作各器件作好準(zhǔn)備。跳過 rom0cch忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令
8、。適用于單片工作。告警搜索命令0ech執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。表6: ram指令表指 令約定代碼功 能溫度變換44h啟動ds1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時最長為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)ram中。讀暫存器0beh讀內(nèi)部ram中9字節(jié)的內(nèi)容寫暫存器4eh發(fā)出向內(nèi)部ram的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器48h將ram中第3 、4字節(jié)的內(nèi)容復(fù)制到eeprom中。重調(diào) eeprom0b8h將eeprom中內(nèi)容恢復(fù)到ram中的第3 、4字節(jié)。讀供電方式0b4h讀ds1820的供電模式。寄生供電時
9、ds1820發(fā)送“ 0 ”,外接電源供電 ds1820發(fā)送“ 1 ”。3.12數(shù)字溫度傳感器18b20的工作電路在總圖中,由ds18b20,電阻組成,ds18b20的1引腳接地,2引腳通過電阻接vcc,3引腳與p3.2相連。3.2顯示電路在總圖中,通過三個液晶12864進(jìn)行溫度顯示,為了節(jié)約i/0端口,利用鎖存器進(jìn)行片選,鎖存器的輸入端數(shù)據(jù)來自p0口。3.3控制電路在總圖中,由四個獨立鍵盤進(jìn)行上下限溫度的控制,鍵3按下一次顯示上限溫度,再按下一次顯示當(dāng)前溫度;鍵4按下一次顯示下限溫度,再按一次顯示當(dāng)前溫度;在鍵3按下的前提下,鍵1按下表示上限溫度加1,鍵2按下表示下限溫度減1;在鍵4按下的前提
10、下,鍵1按下表示上限溫度加1,鍵2按下表示下限溫度減13.4報警電路在總圖中,在利用蜂鳴器報警,輸入引腳為p2.3,低電平時蜂鳴器叫,且led閃爍。4溫度控制系統(tǒng)的軟件設(shè)計4.1主程序流程圖中斷服務(wù)程序流程圖定時器初值裝入調(diào)用鍵盤掃描子程序返回主程序流程圖ynyn初始化判斷是否有鍵按下讀取溫度控制報警比較調(diào)用顯示上下限溫度子程序調(diào)用報警電路調(diào)用顯示溫度子程序結(jié)束開始始4.2讀出溫度子程序uint get_temp() /讀取寄存器中存儲的溫度數(shù)據(jù) uchar a,b;/uint temp;float f_temp; dsreset(); delay(1); tempwritebyte(0xcc
11、); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp=8; /兩個字節(jié)組合為1個字 temp=temp|a; f_temp=temp*0.0625; /溫度在寄存器中為12位 分辨率位0.0625 temp=f_temp*10+0.5; /乘以10表示小數(shù)點后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; return temp; /temp是整型4.3溫度轉(zhuǎn)換命令子程序void tempchange(void) / dsreset(); delay(1); tempwr
12、itebyte(0xcc); / 寫跳過讀rom指令 tempwritebyte(0x44); / 寫溫度轉(zhuǎn)換指令4.4計算溫度子程序uint get_temp() /讀取寄存器中存儲的溫度數(shù)據(jù) uchar a,b;float f_temp; dsreset(); delay(1); tempwritebyte(0xcc);/向ds18b20寫入一個字節(jié)的函數(shù) tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp=8; /兩個字節(jié)組合為1個字 temp=temp|a; f_temp=temp*0.06
13、25; /溫度在寄存器中為12位 分辨率位0.0625 temp=f_temp*10+0.5; /乘以10表示小數(shù)點后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; return temp; /temp是整型4.5顯示子程序顯示當(dāng)前溫度和上下限溫度的顯示函數(shù)之所以不同是因為當(dāng)前溫度值精確到0.5攝氏度,而上下限溫度精確到1度。4.51顯示當(dāng)前溫度子程序void display(uchar num,uchar dat) uchar i; dula=0; p0=tabledat; dula=1; dula=0; p1=0xff; wela=0; i=0xff; i=i&(0
14、x01)(num); p0=i;void dis_tempnow(uint t) uchar i; i=t/100; display(0,i); delay(6); i=t%100/10; display(1,i+10);delay(6); i=t%100%10; display(2,i); delay(4);4.52顯示上下限溫度子程序void display(uchar num,uchar dat) uchar i; dula=0; p0=tabledat; dula=1; dula=0; p1=0xff; wela=0; i=0xff; i=i&(0x01)(num); p0=i;voi
15、d dis_temp(uchar t) uchar i; i=t/100; display(0,i); delay(6); i=t%100/10; display(1,i); delay(6); i=t%100%10; display(2,i); delay(4);flag=0flag=1key3再次按下key3按下key4按下set=0key再次按下set=14.6鍵盤掃描控制子程序void keyscan() if(key3=0) delay(10); if(key3=0) flag=!(flag);while(!key3);!flag!setgkey1按下ny高溫值加1低溫值加1 if(
16、key4=0)key2按下!flag!set高溫值減1低溫值減1 delay(10); if(key4=0) set=!(set); while(!key4); if(key1=0) delay(10); if(key1=0)&(flag=0) high+; if(key1=0)&(set=0) low+; while(!key1); if(key2=0) delay(10); if(key2=0)&(flag=0) high-; if(key2=0)&(set=0) low-; while(!key2); 6總結(jié)與體會在這次設(shè)計中,我學(xué)會了很多東西,例如如何使用數(shù)字溫度傳感器,如何進(jìn)行液晶1
17、2864掃描,以及鍵盤掃描。在設(shè)計的過程中,尤其是編程時,我也走了很多彎路,例如,在設(shè)置預(yù)報警溫度時,我曾試圖從ds18b20中的九字節(jié)ram中讀取和寫入上下限溫度,但效果不好且不穩(wěn)定,后來上網(wǎng)查并咨詢老師,才了解到這種方法并不適用。 所以,有時候遇到問題也應(yīng)及時與別人交流,這樣才能少走彎路,提高效率。7致謝謝謝在這次實訓(xùn)中無私提供幫助的各位老師以及提供好的想法的同學(xué)們。8參考文獻(xiàn)【1】數(shù)字電子技術(shù)基礎(chǔ),閻石主編【2】郭天祥視屏教程【3】馬忠梅,張凱,等. 單片機(jī)的c語言應(yīng)用程序設(shè)計(第四版) 北京航空航天大學(xué)出版社 附:總程序#include#define uchar unsigned ch
18、ar#define uint unsigned intuchar m;sbit lcdrs=p10;sbit lcdrw=p11;sbit lcden=p12;sbit buzzer=p34;sbit p07=p07;sbit p00=p00;sbit p01=p01;sbit p02=p02;sbit p03=p03;uchar code t0=wendu : ;uchar code t1=h: l: ;uchar code wendu=0123456789- ; /利用一個溫度表解決溫度顯示亂碼char i=15,j=0;uchar code duan=0x3f,0x06,0x5b,0x4
19、f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/此數(shù)組為 ! 19 !uchar code wei=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07;/溫度傳感器定義sbit dq = p33;/定義ds18b20總線iovoid delay1(int z)int x,y;for(x=10;x0;x-)for(y=z;y0;y-);void jianp()if(p00=0)delay1(5);if(p00=0)while(p00=0);i+;if(p01=0)delay1(5);if(p01=0)while(p01=0);i-;if(p02=0)
20、delay1(5);if(p02=0)while(p02=0);j+;if(p03=0)delay1(5);if(p03=0)while(p03=0);j-;/#液晶顯示模塊#/void delay(uchar z)uchar x,y;for(x=1000;x1;x-)for(y=z;y1;y-);void write_com(uchar com)lcdrs=0;p2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)lcdrs=1;p2=date;delay(5);lcden=1;delay(5);lcden=0
21、;void init_lcd()lcden=0;lcdrw=0;write_com(0x38);write_com(0x01);write_com(0x0c);write_com(0x06);write_com(0x80);for(m=0;m16;m+)write_date(t0m);delay(0);write_com(0x80+0x40);for(m=0;m0;i-)dq = 0; / 給脈沖信號dat=1;dq = 1; / 給脈沖信號if(dq)dat|=0x80;tmpdelay(4);return(dat);/*/void writeonechar(unsigned char dat)/寫一個字節(jié)unsigned char i=0;for (m=8; m0; m-)dq = 0;dq = dat&0x01;tmpdelay(5);dq = 1;dat=1;/*/unsigned int readtemp()/讀取溫度
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湘教新版第二冊生物下冊月考試卷
- 2025年外研版三年級起點選擇性必修3歷史上冊階段測試試卷
- 2025年粵教新版七年級生物下冊月考試卷
- 2025年度農(nóng)貿(mào)場農(nóng)產(chǎn)品質(zhì)量檢測中心建設(shè)合同4篇
- 2025年金融衍生品交易總合同2篇
- 2025年度牛只運輸車輛GPS定位與實時監(jiān)控服務(wù)合同4篇
- 2025版人工智能語音助手定制開發(fā)合同4篇
- 房屋出租委托代理合同(2篇)
- 2025年度學(xué)校教室窗簾更換項目承包合同4篇
- 二零二五版人工智能教育平臺合作合并合同2篇
- 2024版塑料購銷合同范本買賣
- 2024-2025學(xué)年人教新版高二(上)英語寒假作業(yè)(五)
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級下冊全冊教案
- 汽車噴漆勞務(wù)外包合同范本
- 微項目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(魯科版)
評論
0/150
提交評論