版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于51單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)一課題選擇隨著時代的發(fā)展,控制智能化,儀器小型化,功耗微量化得到廣泛關(guān)注。單片機(jī)控制系統(tǒng)無疑在這方面起到了舉足輕重的作用。單片機(jī)的應(yīng)用系統(tǒng)設(shè)計(jì)業(yè)已成為新的技術(shù)熱點(diǎn),其中數(shù)字溫度計(jì)就是一個典型的例子,它可廣泛應(yīng)用與生產(chǎn)生活的各個方面,具有巨大的市場前景。二設(shè)計(jì)目的1. 理解掌握51單片機(jī)的功能和實(shí)際應(yīng)用。2. 掌握仿真開發(fā)軟件的使用。3. 掌握數(shù)字式溫度計(jì)電路的設(shè)計(jì)、組裝與調(diào)試方法。三實(shí)驗(yàn)要求1. 以51系列單片機(jī)為核心器件,組成一個數(shù)字式溫度計(jì)。2. 采用數(shù)字式溫度傳感器為檢測器件,進(jìn)行單點(diǎn)溫度檢測。3. 溫度顯示采用4位LED數(shù)碼管顯示
2、,三位整數(shù),一位小數(shù)。四設(shè)計(jì)思路1. 根據(jù)設(shè)計(jì)要求,選擇STC89C51RC單片機(jī)為核心器件。2. 溫度檢測采用DS18B20數(shù)字式溫度傳感器。與單片機(jī)的接口為P3.6引腳。3. 采用usb數(shù)據(jù)線連接充電寶供電,接電后由按鈕開關(guān)控制電路供電。硬件電路設(shè)計(jì)總體框圖為圖1:五系統(tǒng)的硬件構(gòu)成及功能1. 主控制器單片機(jī)STC89C51RC具有低電壓供電和體積小等特點(diǎn),有40個引腳,其仿真圖像如下圖所示:2. 顯示電路顯示電路采用4位共陽LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。LED數(shù)碼管在仿真軟件中如下圖所示:3. 溫度傳感器DS18B20是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能
3、溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:1. 獨(dú)特的單線接口僅需一個端口引腳進(jìn)行通訊。2. 簡單的多點(diǎn)分布應(yīng)用。3. 無需外部器件。4. 可通過數(shù)據(jù)線供電。5. 零待機(jī)功耗。6. 測溫范圍-55+125攝氏度。其電路圖如下圖所示:在仿真軟件中如下圖所示:DS18B20的測溫原理圖如下圖所示:在正常測溫情況下,DS18B20的測溫分辨力為0.5攝氏度,可采用下述方法獲得高分辨率的溫度測量結(jié)果。:首先用DS18B20提供的讀暫存器指令(BEH)讀出以0.5攝氏度為分辨率的溫度測量結(jié)
4、果,然后切去測量結(jié)果中的最低有效位(LSB),得到所測實(shí)際溫度的整數(shù)部分Tz,然后再利用BEH指令取計(jì)數(shù)器1的計(jì)數(shù)剩余值Cs和每度計(jì)數(shù)值CD??紤]到DS18B20測量溫度的整數(shù)部分以0.25、0.75攝氏度為進(jìn)位界限的關(guān)系,實(shí)際溫度Ts可以用下式計(jì)算:Ts=(Tz-0.25)+(CD-Cs)/CD六系統(tǒng)整體硬件電路根據(jù)設(shè)計(jì)要求與設(shè)計(jì)思路,硬件電路設(shè)計(jì)框圖如下圖所示,在仿真軟件Proteus上完成,其中LED數(shù)碼管以動態(tài)掃描法實(shí)現(xiàn)溫度顯示,由四個PNP型晶體管Q2,Q3,Q4,Q5和8個電阻組成?;鶚O與單片機(jī)的P1.0,P1.1,P1.2連接,DS18B20的數(shù)據(jù)I/O端與單片機(jī)P3.6引腳連接
5、。外部晶振為12MHZ。七系統(tǒng)程序設(shè)計(jì)數(shù)字式溫度計(jì)的應(yīng)用程序主要包括主程序,溫度檢測程序,溫度轉(zhuǎn)換程序,LED顯示程序等。其思路如下圖所示:八測量及其結(jié)果分析1. Proteus仿真結(jié)果軟件方面,在Proteus編譯下進(jìn)行,源程序編譯及仿真調(diào)試。在軟件中選定傳感器后可對其進(jìn)行環(huán)境溫度設(shè)置,如下圖,將環(huán)境溫度設(shè)為34.9.2. 硬件測試結(jié)果在硬件測試方面,檢查電路板及焊接的質(zhì)量情況,在焊接無誤后通電檢查LED顯示器。其中成品圖如圖所示:通電后,室溫下LED的示數(shù)如圖所示九設(shè)計(jì)心得體會本次實(shí)驗(yàn)對我們組來說是一次難得的經(jīng)歷,首先是第一次接觸了仿真軟件Proteus,在使用時經(jīng)歷了很多次失敗,因?yàn)檫@款
6、軟件與以前使用過的軟件有很大不同,使用時不停出錯,接線時由于原件放置不合理而接的雜亂無章,輸入源程序時還算順利,顯示結(jié)果比較滿意。其次是程序設(shè)計(jì),我們在參考別人成功先例的基礎(chǔ)上根據(jù)自己設(shè)計(jì)的需要進(jìn)行編程,其中經(jīng)歷了不少曲折,最后我的收獲是編程一定要細(xì)心,針對每一個細(xì)節(jié),稍有疏忽程序就不能正常運(yùn)行。在這次的實(shí)踐與學(xué)習(xí)中,盡管期間困難重重,但我們還是從中學(xué)習(xí)了不少新的知識和技能,也體會到了經(jīng)歷失敗最終成功的喜悅??傊?,通過這次電工電子綜合設(shè)計(jì),我收獲了很多,我希望自己在今后的各項(xiàng)研究工作中也堅(jiān)持這種精神。十附錄 源程序#include<reg52.h>#include <intr
7、ins.h>#define uchar unsigned char #define uint unsigned intsbit DATA = P11; /DS18B20接入口uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共陰極字型碼int temp; /溫度值int
8、 ss; /中間的一個變量int dd;int j;uchar data b;/定時器中斷次數(shù)uchar data buf4;/字型顯示中間變量int alarmH=320; /默認(rèn)報(bào)警值int alarmL=100;/定義開關(guān)的接入口sbit k1=P25;/+sbit k2=P26;/-sbit k3=P27;/確認(rèn)sbit
9、160;k4=P24; /切換sbit bell=P10; /蜂鳴器sbit HLight=P12; /正溫指示燈sbit LLight=P13; /負(fù)溫度指示燈sbit warn=P14; /報(bào)警指示燈sbit Red=P16; /溫度上限設(shè)置指示燈sbit Green=P17; /溫度下限設(shè)置指示燈bit set=0; &
10、#160; /初始化bit Flag=0; /設(shè)置標(biāo)志int n;/函數(shù)的聲明區(qū)void key_to1();void key_to2();void delay(uint); void key();void Show();/函數(shù)的定義區(qū)/*延時子函數(shù)*/void delay(uint num) while(num-) ;/DS18b20溫度傳感器所需函數(shù),分為初始化,讀寫字節(jié),讀取溫度4個函數(shù)Init_DS18B20(void)
11、160; /傳感器初始化 uchar x=0; DATA = 1; /DQ復(fù)位 delay(10); /稍做延時 DATA = 0; /單片機(jī)將DQ拉低 delay(80); /精確延時
12、大于 480us /450 DATA = 1; /拉高總線 delay(20); x=DATA; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(30);ReadOneChar(void) /讀一個字節(jié)
13、0; uchar i=0; uchar dat = 0; for (i=8;i>0;i-) DATA = 0; / 給脈沖信號 dat>>
14、;=1; DATA = 1; / 給脈沖信號 if(DATA) dat|=0x80;
15、160; delay(8); return(dat);WriteOneChar(unsigned char dat) /寫一個字節(jié) uchar i=0; for (i=8; i>0; i-)
16、; DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat>>=1;
17、 delay(8);int ReadTemperature(void) /讀取溫度 uchar a=0; uchar b=0; int t=0; float tt=0; Init_DS18B20();
18、160; WriteOneChar(0xCC); / 跳過讀序號列號的操作 WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=
19、ReadOneChar();/低位 b=ReadOneChar();/高位 t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; return(t);void
20、 display00() /*顯示負(fù)值子函數(shù) dd=-(temp-1); buf1=dd/100; buf2=dd/100; buf3=dd%100/10; buf0=dd%10; /動態(tài)顯示
21、 for(j=0;j<5;j+) P2=0xff; / 初始燈為滅的 P0=0x00; P2=0xfd; /顯示小數(shù)點(diǎn) &
22、#160; P0=0x80; /顯示小數(shù)點(diǎn) delay(100); P2=0xff; / 初始燈為滅的 P0=0x00; P2=0xf7; /片選LCD1 P0=0x40; delay(100); &
23、#160; P2=0xff; P0=0x00; P2=0xfb; /片選LCD2 P0=tablebuf2; delay(100); P2=0xff; P0=0x00; P2=0Xfd;/片選LCD3 P0=tablebuf3; &
24、#160; delay(100); P2=0xff; P0=0x00; P2=0Xfe; P0=tablebuf0; /片選LCD4 del
25、ay(100); P2=0xff; /顯示正值子函數(shù)void display() buf1=temp/1000;/顯示百位 buf2=temp/100%10;/顯示十位 buf3=temp%100/
26、10;/顯示個位 buf0=temp%10; /小數(shù)位 for(j=0;j<3;j+) P2=0xff;
27、;/ 初始燈為滅的 P0=0x00; P2=0xfd; /顯示小數(shù)點(diǎn) P0=0x80; /顯示小數(shù)點(diǎn) delay(300); P2=0xff;
28、; / 初始燈為滅的 P0=0x00; P2=0xf7; /片選LCD1 P0=tablebu
29、f1; delay(300); P2=0xff; P0=0x00; P2=0xfb; /片選LCD2 P0=tablebuf2;
30、60; delay(300); P2=0xff; P0=0x00; P2=0Xfd; /片選LCD3 P0=tablebuf3; delay(300); P2=0xff;
31、 P0=0x00; P2=0Xfe; P0=tablebuf0; /片選LCD4 delay(300); P2=0xff;
32、160; void key() /按鍵掃描子程序 if(k1!=1) delay(20); if(k1!=1) w
33、hile(k1!=1) key_to1(); for(n=0;n<8;n+) Show();
34、0; if(k2!=1) delay(20); if(k
35、2!=1) while(k2!=1) key_to2(); &
36、#160; for(n=0;n<8;n+) Show();
37、 if(k3!=1) TR0=1; /復(fù)位,開定時 temp=ReadTemperature();
38、160; if(k4!=1) delay(20); if(k4!=1) while(k4!=1); set=!set; &
39、#160; if(set=0) Red=0;Green=1; else Green=0;Red=1;
40、60; void key_to1() TR0=0; /關(guān)定時器 temp+=10; if(temp>=1100)
41、160; temp=-550; if(set=0) alarmH=temp; else alarmL=temp; void ke
42、y_to2() TR0=0; /關(guān)定時器 temp-=10; if(temp<=-550) tem
43、p=1100; if(set=0) alarmH=temp; else alarmL=temp;void alarm(void) if(temp>alarmH|temp<alarmL)
44、/bell=1; /delay(50); /bell=0; Flag=1; else Flag=0;logo()/開機(jī)的Logo P0=0x40; P2=0
45、xf7; delay(50); P2=0xfb; delay(50); P2=0Xfd; delay(50); P2=0Xfe; delay(50); P1 = 0xff;
46、 /關(guān)閉顯示void Show() /顯示函數(shù),分別表示溫度正負(fù)值 if(temp>=0) HLight=1;LLight=0;display(); if(temp<0) HLight=0;LLight=1;display00();void main() TC
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《營業(yè)稅課件》課件
- 《統(tǒng)計(jì)調(diào)查技能模塊》課件
- 《認(rèn)識寶島臺灣》課件
- 《王老吉的市場營銷》課件
- 《網(wǎng)頁設(shè)計(jì)與鑒賞》課件
- 2025年中考語文文言文總復(fù)習(xí)-教師版-專題01:文言文閱讀之理解實(shí)詞含義(講義)
- 鞋業(yè)生產(chǎn)線采購招標(biāo)合同三篇
- 教育機(jī)構(gòu)話務(wù)員工作總結(jié)
- 藥品醫(yī)療器械銷售心得分享
- 兒童感染科護(hù)理工作總結(jié)
- 新蘇教版五年級上冊科學(xué)全冊期末復(fù)習(xí)知識點(diǎn)(彩版)
- 部編版小學(xué)一年級上冊道德與法治教學(xué)設(shè)計(jì)(第三、第四單元)
- CJJT 164-2011 盾構(gòu)隧道管片質(zhì)量檢測技術(shù)標(biāo)準(zhǔn)
- 2023年甘肅省定西市中考政治真題 (含解析)
- 中醫(yī)科診療指南及技術(shù)操作規(guī)范學(xué)習(xí)試題
- 胃腸減壓的護(hù)理措施要點(diǎn)課件
- 6.2《青紗帳-甘蔗林》教學(xué)設(shè)計(jì)-【中職專用】高一語文(高教版2023·基礎(chǔ)模塊下冊)
- 25王戎不取道旁李公開課一等獎創(chuàng)新教學(xué)設(shè)計(jì)
- 科室患者投訴處理管理制度
- 中國歷史文化知識競賽100題(含答案)
- 學(xué)前兒童健康教育活動設(shè)計(jì)智慧樹知到期末考試答案章節(jié)答案2024年云南國防工業(yè)職業(yè)技術(shù)學(xué)院
評論
0/150
提交評論