畢業(yè)設(shè)計溫度顯示報警設(shè)計_第1頁
畢業(yè)設(shè)計溫度顯示報警設(shè)計_第2頁
畢業(yè)設(shè)計溫度顯示報警設(shè)計_第3頁
畢業(yè)設(shè)計溫度顯示報警設(shè)計_第4頁
畢業(yè)設(shè)計溫度顯示報警設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計說明書題目:溫度顯示報警器產(chǎn)品設(shè)計工藝設(shè)計方案設(shè)計√類型:學(xué)生姓名:學(xué)號:學(xué)院:電子信息工程專業(yè):應(yīng)用電子班級:學(xué)校指導(dǎo)教師:2016年5月3日 摘要該畢業(yè)設(shè)計的作品是利用DS18B20溫度傳感器、單片機STC89C51、按鍵輸入電路、報警電路、顯示電路制作一個溫度顯示器,并有報警功能。當(dāng)實際測量溫度高于設(shè)定的高溫36度時報警,當(dāng)實際測量溫度或低于設(shè)定的低溫15度時報警。當(dāng)環(huán)境溫度在高溫與低溫之間時,顯示器顯示實際測量的溫度值。關(guān)鍵詞:單片機STC89C51;DS18B20;報警模塊 目錄1.引言 42.DS18B20優(yōu)缺點 43.系統(tǒng)電路分析 43.1

單片機最小系統(tǒng) 53.2

數(shù)碼顯示電路 53.3

DS18B20測量電路 63.4

報警電路 64.程序設(shè)計部分 74.1報警程序 74.2溫度測量程序 74.3數(shù)字顯示程序 104.4主程序模塊 125、總結(jié)和體會 12參考文獻 12附1;作品展示圖 14附2:程序代碼 151.引言長沙的天氣說變就變,有時因添加衣服不及時就容易感冒。畢業(yè)設(shè)計選題時我就選做一個具有溫度顯示報警器,它對環(huán)境溫度有一種監(jiān)控作用以及顯示出實際測量的溫度值,將它放在環(huán)境下,在數(shù)碼管上顯示出環(huán)境的溫度是多少,并且當(dāng)溫度超過36°或小于15°時它會發(fā)出報警,它有一個電源開關(guān),一個調(diào)節(jié)溫度設(shè)定值按鍵。它的工作原理是通過溫度傳感器DS18B20將環(huán)境中的溫度直接轉(zhuǎn)換成數(shù)字信號送到單片機中,通過單片機處理,然后將信息分別傳送到顯示模塊,并根據(jù)實際情況決定是否進行報警。2.DS18B20優(yōu)缺點使用數(shù)字溫度芯片DS18B20溫度傳感器模塊,DS18B20溫度傳感器模塊有三個引腳與外電路相連接,一個接電源的正,一個接電源負,另一個接單片機I/O端口,采用一根數(shù)據(jù)傳輸信號,由數(shù)字溫度DS18B20傳感器模塊與單片機STC89C51直接構(gòu)成的溫度測量裝置,不需要復(fù)雜的外圍電路。這樣測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大,方便被單片機處理以及控制。DS18B20外形如圖2.1所示。圖

2.1DS18B20溫度外形圖3.系統(tǒng)電路分析本畢業(yè)設(shè)統(tǒng)中采用單片機STC89C51為系統(tǒng)的控制中心,它由四部分電路組成,第一部部分為單片機最小系統(tǒng)模塊,第二部分為報警模塊,第三部分為溫度測量模塊,第四部分為數(shù)碼管顯示模塊。單片機中的P0控制數(shù)碼管段,P1.0~P1.3通過8550三極管的基極控制數(shù)碼管的位,P2.4作為溫度傳感器輸入端,P2.7為報警模塊控制端。對于單片機上采用上電復(fù)位和按鍵控制復(fù)位。系統(tǒng)仿真圖如圖3.0所示。圖

3.0系統(tǒng)仿真圖3.1

單片機最小系統(tǒng)單片機工作的最小系統(tǒng)是由復(fù)位電路、振蕩電路、P0口上拉電阻及31腳接電源,40引腳接電源,20引腳接地組成。單片機最小系統(tǒng)電路圖如圖3.1所示。圖

3.1單片機最小系統(tǒng)電路圖3.2

數(shù)碼顯示電路本畢業(yè)設(shè)計溫度顯示報警系統(tǒng)采用四位一體共陽數(shù)碼管顯示,數(shù)碼管的段碼接單片的P0端口,數(shù)碼管的位碼通過三極管8550與單片機的P1.0~P1.3端口相連。四個數(shù)碼管的段是公共的,通過選擇不同的位來控制不同位的數(shù)碼管,顯示采用定時器中斷顯示。數(shù)碼管顯示電路圖如圖3.2所示。圖

3.2數(shù)碼管顯示電路圖3.3

DS18B20測量電路DS18B20溫度傳感器模塊有三個引腳與外電路相連接,一個接電源的正,一個接電源負,另一個接單片機I/O端口,采用一根數(shù)據(jù)傳輸信號,由數(shù)字溫度DS18B20傳感器模塊與單片機STC89C51直接構(gòu)成的溫度測量裝置,不需要復(fù)雜的外圍電路。DS18B20測量電路如圖3.3所示。圖

3.3DS18B20測量電路圖3.4

報警電路當(dāng)實際測量溫度高于設(shè)定的36度時,報警器工作;當(dāng)實際測溫度低于設(shè)定的15度時,報警器工作,報警電路通一個三極管8550與單片機的P2.7相連,由單片機P2.7引腳輸出低電平控制三極管導(dǎo)通,揚聲器工作,從而達到報警的目的。報警電路的原理圖如圖3.4所示。圖

3.4報警電路圖4.程序設(shè)計部分4.1報警程序voidalarm(){ inti; if(tempshi>shi_high||tempshi<shi_law){ for(i=0;i<100;i++) { speak=0; delay(500); speak=1; delay(500); }}}4.2溫度測量程序溫度測量程序模塊包括開始獲取溫度并轉(zhuǎn)換函數(shù)、讀取寄存器中的溫度數(shù)據(jù)函數(shù)。其中開始獲取溫度并轉(zhuǎn)換函數(shù)又包括DS18B20初始化函數(shù)、延時2毫秒、向18b20寫一個字節(jié)的函數(shù);讀取寄存器中的溫度數(shù)據(jù)函數(shù)包括啟動溫度轉(zhuǎn)換、DS18B20初始化函數(shù)、延時2毫秒、向18b20寫一個字節(jié)的函數(shù)、讀一個字節(jié)函數(shù)。voidtempchange()//開始獲取溫度并轉(zhuǎn)換函數(shù){ dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳過ROM指令 tempwritebyte(0x44); //0X44是溫度轉(zhuǎn)換啟動指令}uintget_temp() //讀取寄存器中的溫度數(shù)據(jù){ uchara,b;//定義局部變量 tempchange();//啟動溫度轉(zhuǎn)換 dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳過ROM指令 tempwritebyte(0xbe); //0X44是溫度轉(zhuǎn)換啟動指令 a=tempread(); b=tempread(); if(b>0x7f)//最高位為1時溫度是負{a=~a+1;b=~b;//補碼轉(zhuǎn)換,取反加一fg=0;//讀取溫度為負時fg=0}temp=b; temp<<=8; temp=temp|a; returntemp;}voidtempwritebyte(uchardat)//向18b20寫一個字節(jié)的函數(shù){ uinti;//定義局部變量 ucharj;//定義局部變量 bittestb;//定義局部變量 for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; } }}voiddsreset() //DS18B20初始化函數(shù){uinti;//定義局部變量ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}voiddelay18b20(uintz)//帶形參的延時模塊{uintx,y;//定義局部變量for(x=z;x>0;x--) for(y=110;y>0;y--);}bittempreadbit() //讀一位數(shù)據(jù)函數(shù){uinti;//定義局部變量bitdat=0;//定義局部變量 ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread() //讀一個字節(jié)函數(shù){ uchari,j,dat;//定義局部變量 dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}4.3數(shù)字顯示程序voiddisplay18b20(uinttemp){ ucharm1,m2,m3;//定義局部變量 f_temp=temp*0.0625; temp=f_temp*10+0.5; m1=temp/100; m2=temp%100/10; m3=temp%10; if(fg==0)//溫度為正時顯示負號{ P2=~0xfe; P0=~suma[fg]; delay18b20(50); P2=0xff; P2=~0xfd; P0=~table[m1]; delay18b20(5); P0=0xff; P2=~0xfb; P0=~table[m2]-0x80; delay18b20(2); P0=0xff; P2=~0xf7; P0=~table[m3]; delay18b20(2); P0=0xff; } if(fg==1) //負{ P2=~0xfe; P0=suma[fg]; delay18b20(10); P2=0xff; P2=~0xfd; P0=~table[m1]; delay18b20(5); P0=0xff; P2=~0xfb; P0=~table[m2]-0x80; delay18b20(2); P0=0xff; P2=~0xf7; P0=~table[m3]; delay18b20(2); P0=0xff; }}4.4主程序模塊主函數(shù)部分很簡單,這種方法編寫的程序結(jié)構(gòu)簡單,易讀易懂。主函數(shù)只讀用了帶參的顯示函數(shù)模塊,就能實現(xiàn)溫度的讀取和顯示。#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitds=P3^7;floatf_temp;uinttemp;ucharfg=1;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodesuma[]={0x40,0xff};//主函數(shù)模塊voidmain(){while(1){ display18b20(get_temp()); alarm();}}5、總結(jié)和體會通過本次的畢業(yè)作品設(shè)計,學(xué)會了DS18B20的使用,學(xué)會做事要細心,要多請教同學(xué)和老師。在這次的畢業(yè)設(shè)計中也發(fā)現(xiàn)了一些自己的不足,我平時沒有怎么用功,通有過這次設(shè)計真正學(xué)會了怎樣去獨立學(xué)習(xí)。參考文獻譚博學(xué)等.集成電路原理及應(yīng)用[M].北京:電子工業(yè)出版社,2003黃智偉等.基于NImultisim的電子電路計算機仿真設(shè)計與分析[M].北京:電子工業(yè)出版社,2007黃智偉.印制電路板(PCB)設(shè)計技術(shù)與實踐[M].北京:電子工業(yè)出版社,2009高吉祥等.電子技術(shù)基礎(chǔ)實驗與課程設(shè)計[M].北京:電子工業(yè)出版社,2002吳運昌.模擬集成電路原理與應(yīng)用[M].廣州:華南理工大學(xué)出版社,2001譚博學(xué)等.集成電路原理及應(yīng)用[M].北京:電子工業(yè)出版社,2003魏立軍.CMOS4000系列60種常用集成電路的應(yīng)用[M].北京:人民郵電出版社,1993 致謝 大學(xué)三年結(jié)束了,在這三年學(xué)會了很多,在學(xué)習(xí)方面學(xué)會了很多的知識,培養(yǎng)了自己的動手能力。并且學(xué)會了怎么去學(xué)習(xí),在以后的職場上有了一定的理論知識,并且找到了自己大概的方向。通過這次的畢業(yè)設(shè)計也找到了自己的一些不足,會在以后工作中積極的改進,在這里謝謝老師們在這三年里的辛苦教導(dǎo),在以后的時間里我一定會將在學(xué)校學(xué)到的東西學(xué)以致用。附1;作品展示圖附2:程序代碼#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitds=P3^7;floatf_temp;uinttemp;ucharfg=1;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodesuma[]={0x40,0xff};voiddelay18b20(uintz){uintx,y;for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddsreset() //DS18B20初始化函數(shù){uinti;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bittempreadbit() //讀一位數(shù)據(jù)函數(shù){uinti;bitdat=0; ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread() //讀一個字節(jié)函數(shù){ uchari,j,dat; dat=0; for(i=1;i<=8;i++) { j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}voidtempwritebyte(uchardat)//向18b20寫一個字節(jié)的函數(shù){ uinti; ucharj; bittestb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--; } else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; } }}voidtempchange()//開始獲取溫度并轉(zhuǎn)換函數(shù){ dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳過ROM指令 tempwritebyte(0x44); //0X44是溫度轉(zhuǎn)換啟動指令}uintget_temp() //讀取寄存器中的溫度數(shù)據(jù){ uchara,b; tempchange();//啟動溫度轉(zhuǎn)換 dsreset(); delay18b20(2); tempwritebyte(0xcc); //0XCC是跳過ROM指令 tempwritebyte(0xbe); //0X44是溫度轉(zhuǎn)換啟動指令 a=tempread(); b=tempread(); if(b>0x7f)

溫馨提示

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

評論

0/150

提交評論