![51單片機(jī)溫度報警器畢業(yè)設(shè)計說明書_第1頁](http://file4.renrendoc.com/view/ad4089bea99e498c88202e460bcbeb5d/ad4089bea99e498c88202e460bcbeb5d1.gif)
![51單片機(jī)溫度報警器畢業(yè)設(shè)計說明書_第2頁](http://file4.renrendoc.com/view/ad4089bea99e498c88202e460bcbeb5d/ad4089bea99e498c88202e460bcbeb5d2.gif)
![51單片機(jī)溫度報警器畢業(yè)設(shè)計說明書_第3頁](http://file4.renrendoc.com/view/ad4089bea99e498c88202e460bcbeb5d/ad4089bea99e498c88202e460bcbeb5d3.gif)
![51單片機(jī)溫度報警器畢業(yè)設(shè)計說明書_第4頁](http://file4.renrendoc.com/view/ad4089bea99e498c88202e460bcbeb5d/ad4089bea99e498c88202e460bcbeb5d4.gif)
![51單片機(jī)溫度報警器畢業(yè)設(shè)計說明書_第5頁](http://file4.renrendoc.com/view/ad4089bea99e498c88202e460bcbeb5d/ad4089bea99e498c88202e460bcbeb5d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計說明書題目:51單片機(jī)溫度報警器產(chǎn)品設(shè)計工藝設(shè)計方案設(shè)計√類型:學(xué)生姓名:學(xué)號:學(xué)院:電子信息工程學(xué)院專業(yè):應(yīng)用電子班級:電子1331班學(xué)校指導(dǎo)教師:企業(yè)指導(dǎo)教師:2016年4月16日
摘要該畢業(yè)設(shè)計是利用是單片機(jī)STC89C51和溫度傳感器DS18B20以及數(shù)碼管制作一個基本51單片機(jī)溫度報警器。溫度是一個很重要的物理量,它與人類的生活息息相關(guān),溫度傳感器DS18B20它是一種直接數(shù)字的溫度傳感器,使用方便。設(shè)計溫度報警器具有顯示溫度功能和高溫報警及低溫報警功能。溫度報警器還有一個省電功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM里,進(jìn)入設(shè)置界面后,如果沒有鍵被按下時,系統(tǒng)在15秒后自動退出設(shè)置界面。關(guān)鍵詞:溫度報警;STC89C51;DS18B20;數(shù)碼管目錄1.引言 32.方案設(shè)計 32.1單片機(jī)的最小系統(tǒng) 42.2溫度測量 42.3溫度設(shè)置 52.4模塊顯示 53.系統(tǒng)軟件設(shè)計 54.1程序結(jié)構(gòu)分析 64.2系統(tǒng)程序框架圖 65.安裝步驟 66.結(jié)論 6參考文獻(xiàn) 6致謝 7附錄:部分源程序 71.引言溫度是一個很重要的物理量,它與人類的生活息息相關(guān),利用單片機(jī)實(shí)時對溫度傳感器DS18B20進(jìn)行檢測,并進(jìn)行數(shù)據(jù)處理。將測量實(shí)際環(huán)境溫度通過數(shù)碼管顯示,通過按鍵可以設(shè)置高、低報警值,當(dāng)檢測溫度高于設(shè)定的報警值時,蜂鳴器報警,報警紅燈閃爍;當(dāng)檢測溫度低于設(shè)定的報警值時,蜂鳴器報警,報警黃燈閃爍。溫度報警器還有一個省電功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM里,進(jìn)入設(shè)置界面后,如果沒有鍵被按下時,系統(tǒng)在15秒后自動退出設(shè)置界面。2.方案設(shè)計該系統(tǒng)主要由四部分組成:DS18B20溫度測量、按鍵溫度設(shè)置、測量溫度顯示及單片機(jī)最小系統(tǒng)。系統(tǒng)方框圖如圖2.0所示。圖2.0溫度報警器系統(tǒng)方框圖2.1單片機(jī)的最小系統(tǒng)使用STC89C51單片機(jī)作為整個系統(tǒng)的核心,它的最小系統(tǒng)是由單片機(jī)、復(fù)位電路、振蕩電路、P0口的上拉電阻、電源和地組成。單片機(jī)的最小系統(tǒng)原理圖如圖2.1所示。圖2.1溫度報警器單片機(jī)最小系統(tǒng)電路圖2.2溫度測量使用數(shù)字溫度芯片DS18B20測量實(shí)際溫度,輸出信號全數(shù)字化,便于單片機(jī)控制處理,省去了傳統(tǒng)測量很多外圍電路的溫度監(jiān)測方法。溫度傳感DS18B20有三個引腳,一個接電源正,一個接電源的負(fù),另一個與單片機(jī)進(jìn)行通訊。DS18B20接線圖如圖2.2所示。圖
2.2DS18B20測量電路圖2.3溫度設(shè)置溫度設(shè)置是通過鍵盤輸入設(shè)定報警溫度值,鍵盤輸入由四個按鈕組成,一個重置按鈕,一個確認(rèn)鍵,一個加,一個減按鈕。按鍵與單片機(jī)的P2.0、P2.1、P2.2、P2.3相連接。接線原理圖如圖2.3所示。圖
2.3按鍵與單片機(jī)接線電路圖2.4模塊顯示溫度報警器的實(shí)際測量溫度采用數(shù)碼管顯示,數(shù)碼管的位通過PNP三極管基極與P3.0、P3.1、P3.2、P3.3相連,數(shù)碼管的段與單片機(jī)的P1端口相連。顯示接線電路圖如圖2.4所示。圖2.4溫度報警器顯示電路圖3.系統(tǒng)軟件設(shè)計4.1程序結(jié)構(gòu)分析4.2系統(tǒng)程序框架圖5.安裝步驟1.檢查元件的好壞布局、焊接各元件焊完后編程調(diào)試6.結(jié)論溫度報警,通過實(shí)時檢測溫度傳感器DS18B20信號送到單片機(jī),單片機(jī)對DS18B20的數(shù)據(jù)處理。通過按鈕可以設(shè)置高、低報警值,當(dāng)檢測到的溫度高于設(shè)定的報警值時,蜂鳴器報警,報警紅燈閃爍;當(dāng)檢測到的溫度低于設(shè)定的報警值時,蜂鳴器報警,報警黃燈閃爍,具有斷電保存功能,和數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM,同時還有省電功能,進(jìn)入設(shè)置界面,如果15秒沒有鍵按下,系統(tǒng)自動退出設(shè)置界面。設(shè)計功能基本完成。參考文獻(xiàn)[1]曹巧媛主編.單片機(jī)原理及應(yīng)用(第二版).北京:電子工業(yè)出版社,2002[2]全國大學(xué)生電子設(shè)計競賽組委會編.第五屆全國大學(xué)生電子設(shè)計競賽獲獎作品選編(2001),北京:北京理工大學(xué)出版社,2003[3]何力民編.單片機(jī)高級教程.北京:北京航空大學(xué)出版社,2000[4]金發(fā)慶等編.傳感器技術(shù)與應(yīng)用.北京機(jī)械工業(yè)出版社,2002[5]劉坤、宋戈、趙洪波、張憲棟編.51單片機(jī)C語言應(yīng)用開發(fā)技術(shù)大全,北京:人民郵電出版社,2008[6]譚浩強(qiáng)著.C程序設(shè)計.北京:清華大學(xué)出版社,2007;[7]王忠飛,胥芳.MCS-51單片機(jī)原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.P268-273[8]PeterVanDerLinden著,徐波譯.C專家編程,人民郵電出版社,2003致謝在說明書的寫作過程中遇到了無數(shù)的困難和障礙,都在同學(xué)的幫助和老師的指導(dǎo)下克服了困難。尤其要強(qiáng)烈感謝我的畢業(yè)設(shè)計指導(dǎo)老師—李桂平老師,她對我進(jìn)行了無私的指導(dǎo)和幫助,不厭其煩的幫助進(jìn)行說明書的修改和改進(jìn)。感謝我的同學(xué)和朋友,在我寫設(shè)計說明書的過程中給予我了很多素材,還在此撰寫和排版的過程中提供熱情的幫助。感謝民政職業(yè)技術(shù)學(xué)院三年來對我的培養(yǎng)和教育。感謝電子學(xué)院所有的專業(yè)老師。附錄:部分源程序#include<reg52.h>#include"eepom52.h"#defineucharunsignedchar#defineuintunsignedint//數(shù)碼管段選定義012345 6 7 8 9 ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=3;//顯示數(shù)碼管的個位數(shù)sbitdq=P2^4; //18b20IO口的定義sbitbeep=P2^5;//蜂鳴器IO口定義uchara_a;uinttemperature;//bitflag_300ms;ucharkey_can; //按鍵值的變量ucharmenu_1;//菜單設(shè)計的變量uintt_high=300,t_low=100;bitflag_lj_en; //按鍵連加使能bitflag_lj_3_en; //按鍵連3次連加后使能加的數(shù)就越大了ucharkey_time,flag_value;//用做連加的中間變量bitkey_500ms;ucharflag_clock;ucharzd_break_en,zd_break_value;//自動退出設(shè)置界面/***********************1ms延時函數(shù)*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************小延時函數(shù)*****************************/voiddelay_uint(uintq){ while(q--);}/***********************數(shù)碼顯示函數(shù)*****************************/voiddisplay(){ uchari; for(i=0;i<smg_i;i++) { P3=smg_we[i]; //位選 P1=dis_smg[i]; //段選 delay_1ms(1); P3=0xff; //位選 P1=0xff; //消隱 } }/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eepom中******************/voidwrite_eepom(){ SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); }/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來*****************/voidread_eepom(){ t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);}/***********************18b20初始化函數(shù)*****************************/voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(20); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把總線拿低讀時間隙開始 value>>=1; //讀數(shù)據(jù)是低位開始 dq=1; //釋放總線 if(dq==1) //開始讀寫數(shù)據(jù) value|=0x80; delay_uint(5); //60us 讀一個時間隙最少要保持60us的時間 } returnvalue; //返回數(shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp(){ uintvalue; ucharlow; //在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序 init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉(zhuǎn)換命令 delay_uint(50); //500us init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 EA=0; low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}/*************定時器0初始化程序***************/voidtime_init() { EA=1; //開總中斷 TMOD=0X01; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時}/****************獨(dú)立按鍵處理函數(shù)************************/voidkey(){ staticucharkey_new=0,key_old=0,key_value=0; if(key_new==0) { //按鍵松開的時候做松手檢測 if((P2&0x0f)==0x0f) key_value++; else key_value=0; if(key_value>=10) { write_eepom(); key_value=0; key_new=1; flag_lj_en=0; //關(guān)閉連加使能 flag_lj_3_en=0; //關(guān)閉3秒后使能 flag_value=0; //清零 } } else { if((P2&0x0f)!=0x0f) key_value++;//按鍵按下的時候 else key_value=0; if(key_value>=7) { key_value=0; key_new=0; flag_lj_en=1; //連加使能 zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 } } key_can=20; if(key_500ms==1) { key_500ms=0; zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 key_new=0; key_old=1; } if((key_new==0)&&(key_old==1)) { switch(P2&0x0f) { case0x0e:key_can=4;break; //得到k1鍵值 case0x0d:key_can=3;break; //得到k2鍵值 case0x0b:key_can=2;break; //得到k3鍵值 case0x07:key_can=1;break; //得到k4鍵值 } } key_old=key_new; }/****************按鍵處理數(shù)碼管顯示函數(shù)***************/voidkey_with(){ if(key_can==4) { menu_1++; if(menu_1>=3) { menu_1=0; } if(menu_1==0) { dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 smg_i=3; } if(menu_1==1) { dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取low十位顯示 dis_smg[3]=0x89; smg_i=4; } if(menu_1==2) { dis_smg[0]=smg_du[t_low%10]; //取low小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; smg_i=4; } } if(menu_1==1) //設(shè)置高溫報警 { if(key_can==3) { if(flag_lj_3_en==0) t_high++; //按鍵按下未松開自動加三次 else t_high+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_high>990) t_high=990; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H } if(key_can==1) { if(flag_lj_3_en==0) t_high--; //按鍵按下未松開自動加三次 else t_high-=10; //按鍵按下未松開自動減三次之后每次自動減10 if(t_high<=t_low) t_high=t_low+1; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H }// write_eepom(); } if(menu_1==2) //設(shè)置低溫報警 { if(key_can==3) { if(flag_lj_3_en==0) t_low++; else t_low+=10; if(t_low>=t_high) t_low=t_high-1; dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; //L } if(key_can==1) { if(flag_lj_3_en==0) t_low--; else t_low-=10; if(t_low<=10) t_low=10; dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; //L }// write_eepom(); } }/****************報警函數(shù)***************/voidclock_h_l(){ if((temperature<=t_low)||(temperature>=t_high)) { flag_clock=1; } else { flag_clock=0; beep=1; } }voidmain(){ temperature=read_temp(); //先讀出溫度的值 time_init();//初始化定時器 read_eepom(); if(a_a==0xff) //新的單片機(jī)初始單片機(jī)內(nèi)問EEPOM { t_high=300; t_low=100; a_a=1; write_eepom(); } delay_1ms(650); temperature=read_temp(); //先讀出溫度的值 dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 w
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 2 (單元整體教學(xué)設(shè)計)-2024-2025學(xué)年外研版(三起)英語六年級上冊
- Unit 6 The power of plants 第6課時Presenting ideas +Reflection教學(xué)設(shè)計 -2024-2025學(xué)年外研版英語(2024)七年級上冊
- 5魯濱遜漂流記(節(jié)選)教學(xué)設(shè)計-2023-2024學(xué)年六年級下冊語文統(tǒng)編版
- 12家鄉(xiāng)的喜與憂(教學(xué)設(shè)計)-統(tǒng)編版道德與法治四年級下冊
- 辦公樓裝修改造項目經(jīng)濟(jì)效益分析
- 2025年貝瓷餐具項目合作計劃書
- 2025年度企業(yè)員工家屬食宿優(yōu)惠服務(wù)協(xié)議
- 2025-2030年中國茶咖啡堿行業(yè)深度研究分析報告
- 2025年度知識產(chǎn)權(quán)戰(zhàn)略規(guī)劃與執(zhí)行顧問聘用協(xié)議
- 廣告行業(yè)合作居間協(xié)議
- 《婦幼保健學(xué)》課件-第一章 緒論
- 10S505 柔性接口給水管道支墩
- 移動寬帶注銷委托書模板需要a4紙
- 初一下冊期末模擬物理質(zhì)量檢測試卷解析1
- 《教育向美而生-》讀書分享課件
- 中海地產(chǎn)總部-員工考核手冊
- 左卡尼汀在減輕高原反應(yīng)中的應(yīng)用
- 《烹飪美學(xué)》課件-項目二 烹飪色彩
- 青海省西寧市選調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題匯編
- 2024年上海民航職業(yè)技術(shù)學(xué)院高職單招歷年職業(yè)技能測驗高頻考點(diǎn)試題含答案解析
- 夏枯草口服液相關(guān)項目實(shí)施方案
評論
0/150
提交評論