




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計題 目 上下限可調的溫度報警器設計 專 業 電子* 學 號 * 姓 名 周* 指導教師 * 2014年11月14日摘 要:單片機技術已經普及到我們生活,工作,科研,各個領域,已經成為一種比較成熟的技術,本文將介紹一種基于單片機控制的數字溫度器,本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以報警。隨著現代工農業技術的發展及人們對生活環境要求的提高,人們也迫切需要檢測與控制溫度。本文通過采用蜂鳴器作為電聲元件的溫度報警器的設計,闡明了該裝置進行設計與制作的具體過程及方法。這種溫度報警器結構簡單,可操作性強,應用廣泛。工作時,溫度測量范圍為1823
2、6;。當前環境溫度若超過設定的高溫臨界溫度,由單片機發出報警信號,從而防止帶來的不必要的損失。造成高溫火災有:電氣線路短路、過載、接觸電阻過大等引發高溫或火災;靜電產生高溫或或火災;雷電等強電侵入導致高溫或火災;最主要是機房內電腦、空調等用電設備長時間工作,導致設備老化,空調發生故障,而不能降溫;因此機房內所屬的電子產品發熱快,在短時間內機房溫度升高超出設備正常溫度,導致系統癱瘓或產生火災,這時溫度報警系統就會發揮應有的功能。關鍵詞STC89C51單片機,數字控制,溫度計,DS18B201 設計方案選擇1.1 系統基本方案選擇 1.1.1 單片機芯片的選擇方案方案一:采用STC89C51芯片作
3、為硬件核心。STC89C51內部具有8KB ROM 存儲空間,512字節數據存儲空間,帶有2K字節的EEPROM存儲空間,與MCS-51系列單片機完全兼容,STC89C51可以通過串口下載。方案二:采用AT89S51。AT89S51片內具有8K字節程序存儲空間,256字節的數據存儲空間沒有EEPROM存儲空間,也與MCS-51系列單片機完全兼容,具有在線編程可擦除技術。兩種單片機都完全能夠滿足設計需要,STC89C51相對ATS89C52價格便宜,且抗干擾能力強。考慮到成本因素,因此選用STC89C51。1.1.2 溫度傳感器設計方案方案一: 由于本設計是測溫電路,可以使用熱敏電阻之類的器件利
4、用其感溫效應,在將隨被測溫度變化 的電壓或電流采集過來,進行 A/D 轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到 A/D 轉換電路,感溫電路比較麻煩。方案二:進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器 DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。從以上兩種方案,兩種都完全能夠滿足設計需要,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。 綜上各方案所述,對此次作品的方案選定: 采用STC89C51單片機作
5、為主控制系統;采用DS18B20為傳感器;1.1.3顯示電路設計方案一:使用數碼管顯示,數碼管是由多個發光二極管封在在一起組成“8”字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。有共陰,共陽兩種。方案二:使用液晶顯示屏lcd1602,1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。 比較兩種方案將選用方案二,lcd1602操作簡單,可以直接對1602的引腳直接操作。2 主要元件
6、介紹2.1.1 STC89C51引腳介紹 主電源引腳(2根)VCC(Pin40):電源輸入,接5V電源GND(Pin20):接地線外接晶振引腳(2根)XTAL1(Pin19):片內振蕩電路的輸入端XTAL2(Pin20):片內振蕩電路的輸出端控制引腳(4根)RST/VPP(Pin9):復位引腳,引腳上出現2個機器周期的高電平將使單片機復位。ALE/PROG(Pin30):地址鎖存允許信號PSEN(Pin29):外部存儲器讀選通信號EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存儲器讀指令。可編程輸入/輸出引腳(32根)STC89C5
7、1單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。P0口(Pin39Pin32):8位雙向I/O口線,名稱為P0.0P0.7P1口(Pin1Pin8):8位準雙向I/O口線,名稱為P1.0P1.7 P2口(Pin21Pin28):8位準雙向I/O口線,名稱為P2.0P2.7 P3口(Pin10Pin17):8位準雙向I/O口線,名稱為P3.0P3.7圖1:STC89C51封裝圖2.1.2 單片機最小系統:當在STC89C51單片機的RST引腳引入高電平并保持2個機器周期時,單片機內部就執行復位操作,按鍵手動復位有電平方式和脈沖方式兩種。其中
8、電平復位是通過RST端經過電阻與電源VCC接通而實現的。最小系統如圖2圖2 單片機最小系統電路電路以STC89C51單片機最小系統為控制核心,測溫電路由DS18B20提供,輸入部分采用三個獨立式按鍵s0、s1、s2。具體電路連接,詳見附錄1。2.2 DS18B20傳感器介紹2.2.1 DS18B20概述DS18B20的性能特點如下:(1) 采用DALLAS公司獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊; (2)在使用中不需要任何外圍元件;(3)可用數據線供電,供電電壓范圍:+3.0V+5.5V;(4)測溫范圍:-55+125。固有
9、測溫分辨率為0.5。當在-10+85范圍內,可確保測量誤差不超過0.5,在-55+125范圍內,測量誤差也不超過2;(5)通過編程可實現912位的數字讀數方式;(6)用戶可自設定非易失性的報警上下限值;(7)支持多點的組網功能,多個DS18B20可以并聯在唯一的三線上,實現多點測溫(8)負壓特性,即具有電源反接保護電路。當電源電壓的極性反接時,能保護DS18B20不會因發熱而燒毀,但此時芯片無法正常工作;(9)DS18B20的轉換速率比較高,進行9位的溫度值轉換只需93.75ms;(10)適配各種單片機或系統;(11)內含64位激光修正的只讀存儲ROM,扣除8位產品系列號和8位循環冗余校驗碼(
10、CRC)之后,產品序號占48位。出廠前產品序號存入其ROM中。在構成大型溫控系統時,允許在單線總線上掛接多片DS18B20。2.3 LCD1602介紹引腳功能介紹第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者
11、顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。 第714腳:D0D7為8位雙向數據線。 第15腳:背光源正極。 第16腳:背光源負極。指令介紹1602液晶模塊的讀寫操作,屏幕和光標的操作都是通過指令編程來實現的。(說明1為高電平,0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置 指令2:光標復位,光標返回到地址00H 指令3:光標和顯示位置設置I/D,光標移動方向,高電平右移,低電平
12、左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無效。 指令4:顯示開關控制。D:控制整體的顯示開與關,高電平表示開顯示,低電平表示關顯示。C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C :高電平時顯示移動的文字,低電平時移動光標 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時為雙行顯示,F:低電平時顯示5X7的點陣字符,高電平時顯示5X10的顯示字符。
13、 指令7:字符發生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址 BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數據,如果為低電平表示不忙。使用lcd先根據液晶的使用手冊寫出液晶屏的驅動程序,后使用把信息顯示到液晶上時直接調用液晶子程序即可。3.程序流程圖圖6:程序流程圖4.設計總結本次設計功能基本實現,當溫度低于下限溫度或者高于上限溫度時蜂鳴器發出報警。設計電路有溫度上下限可調功能,按鍵按下由于不能再1602顯示光標只能使用led的亮滅和蜂鳴器來確定按鍵是否按下,并且最終能實現了該功能。獲取的溫度值通過1602顯示出
14、來。軟件調適通過使用protues進行仿真,開始只是讓1602顯示出數據,慢慢的加入按鍵,led指示燈和蜂鳴器。過程中遇到了很多問題,硬件方面:原理圖設計好51單片機最小系統再根據仿真軟件電路接入溫度采集電路,報警電路,顯示電路,指示電路,按鍵和電源接口。畫好原理圖導出PCB布線,由于對PCB布線規則不是很了解,粗略步好線打印印板、腐蝕、打孔、焊接,由于經過電子相關的實習,這些步驟還是完成得比較好。焊接好后第一步就是堅持電路是否短路或者是否有虛焊,多次對照PCB后沒有問題就將下載好程序的單片機插入電路開始調試。設計電路時預留了兩個IO口即增加了兩個擴展口,所以可以通過之前自己設計的STC串口下
15、載器對單片機程序的下載調試。實際軟件件調試也是和仿真一樣,先讓1602能夠顯示東西,再把整個程序下載到單片機中,由于仿真時電路要設計的功能基本都能實現了,所以程序下載成功后電路基本實現了功能。只是蜂鳴器在溫度沒有超出限制范圍內還是有小小的聲音產生,找蜂鳴器相關資料發現是因為蜂鳴器在不使用時要給它一個低電平或高電平(看電路,這里電路是給低電平),因為不限制蜂鳴器的初始值時電路會出現漏電現象,程序改動后漏電現象消除了。通過本次設計,我學到了很多我們在課堂上學不到的實踐能力,動手能力也得到了很大的提升,在書本所學到的知識得到了很大的實踐,讓我對書本上的知識有了更加深刻的理解。同時也感謝同學的幫助,在
16、我對電路相關知識不理解時給了我指點,讓我能清楚得理解,也通過這次的設計讓我電子電路設計有了很大興趣。參考文獻1 郭天祥.51單片機C語言教程.北京:電子工業出版,2009.2 譚浩強.C語言程序設計M.北京:清華大學出版社,1991.3 閻石.數字電子技術基礎M.北京:高等教育出版社,2006.4 童詩白.模擬電子技術基礎M.北京:高等教育出版社,2006.5 楊欣電子設計從零開始M.北京:清華大學出版社,2005.附錄1 系統原理圖PCB圖附錄2 C語言程序#include<reg51.h>#include"1602.h"#include"DS18B
17、20.h"#define uchar unsigned char#define uint unsigned intsbit BEEP=P14;sbit led=P10;sbit led0=P11;sbit led1=P12;sbit s0=P30;sbit s1=P31;sbit s2=P32;uchar code tab_0="Temp: "uchar code tab_1="TH:23 TL:18 "uchar TH,TL; / 定義高低溫度變量uchar num; /全局變量/*ms延時(非精確)*/void delay(uint z)
18、uint i,j;for(i=z;i>0;i-)for(j=120;j>0;j-); /*TH、TL的溫度符號*/void fuhao()write_com(0x80+5);write_dat(0xdf);write_dat(0x43);write_com(0x80+14);write_dat(0xdf);write_dat(0x43);/*初始化*/void init()/*上電顯示初始化*/uchar i;TH=23;TL=18;write_com(0x80);for(i=0;i<16;i+)write_dat(tab_1i);delay(5);write_com(0x8
19、0+0x40);for(i=0;i<5;i+)write_dat(tab_0i);delay(5);fuhao();/*定時器初始化*/ TMOD=0x01; /開定時器T0,方式1 TH0=(65536-50000)/256; /裝入初值 TL0=(65536-50000)%256; / EA=1; /開全局中斷 ET0=1; TR0=1; /打開定時器 /*報警函數*/void bi(uint t)int i,j;for(i=0;i<t;i+)for(j=0;j<50;j+);BEEP=BEEP; /按位取反BEEP/*TH、TL取十位個位送人顯示*/void write
20、T_HL(uchar add,uchar dat)uchar shi,ge;shi=dat/10;/十位ge=dat%10; /個位write_com(0x80+add);write_dat(shi+0x30);write_dat(ge+0x30);/*按鍵函數*/void keyscan()/*功能選擇*/ if(s0=0) num+; delay(2); if(s0=0) led=0;while(!s0);bi(300);led=1;/按一下燈亮一下聲音響一聲if(num=1) TR0=0;write_com(0x80+12);delay(10); /write_com(0x0f);if(
21、num=2) write_com(0x80+4); if(num=3) num=0;TR0=1; /*功能加*/ if(num!=0) if(s1=0) delay(2);if(s1=0) led0=0;while(!s1);bi(300);led0=1; /按一下燈亮一下聲音響一聲if(num=1) TH+;if(TH=100) TH=0;writeT_HL(3,TH);write_com(0x80+4);if(num=2) TL+;if(TL=100) TL=0;writeT_HL(12,TL);write_com(0x80+10); /*功能減*/ if(num!=0) if(s2=0)
22、 delay(2);if(s2=0) led1=0;while(!s2); bi(300);led1=1; /按一下燈亮一下聲音響一聲if(num=1) TH-;if(TH=-1) TH=99;writeT_HL(3,TH);write_com(0x80+4);if(num=2) TL-;if(TL=-1) TL=99;writeT_HL(12,TL);write_com(0x80+10); /*溫度報警函數*/void beep()uchar tem;tem=temp/10; /返回的溫度值temp放大了十倍,得除十還原if(TH<=tem) bi(500);if(TL>=tem
23、) bi(500);/*主函數*/ void main(void)Init_1602();init();while(1) BEEP=0;keyscan();ds1820disp();beep();/*定時器中斷函數*/void time() interrupt 1TH0=(65536-50000)/256; /重裝初值TL0=(65536-50000)%256;DS1802驅動程序#ifndef _DS18B20_H_#define _DS18B20_H_#define uchar unsigned char#define uint unsigned intsbit DQ = P13;ucha
24、r tab5;uint temp;/溫度值bit tflag;/*延時1微秒*/void delay_18B20(uint i) while(i-);/*ds1820復位*/void ds1820rst() uchar x=0;DQ=1; /DQ復位delay_18B20(8); /延時DQ=0; /DQ拉低delay_18B20(80); /精確延時大于480usDQ=1; /拉高delay_18B20(14);x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗while(!DQ);delay_18B20(20);/*讀一個字節*/ uchar ds1820rd() uch
25、ar i=0;uchar dat=0;for (i=8;i>0;i-) DQ=0; /給脈沖信號dat>>=1;DQ=1; /給脈沖信號if(DQ)dat|=0x80;delay_18B20(4);return(dat);/*寫一個字節*/void ds1820wr(uchar dat)uchar i=0;for (i=8;i>0;i-) DQ=0;DQ=dat&0x01;delay_18B20(5);DQ=1;dat>>=1;/*讀取溫度值并轉換*/ read_temp()uchar a,b; ds1820rst(); ds1820wr(0xcc)
26、;/跳過讀序列號 ds1820wr(0x44);/啟動溫度轉換delay_18B20(100); ds1820rst(); ds1820wr(0xcc);/跳過讀序列號 ds1820wr(0xbe);/讀取溫度 delay_18B20(100); a=ds1820rd(); b=ds1820rd(); temp=b; temp<<=8; temp=temp|a;if(temp<0x0fff) tflag=0; else temp=temp+1;tflag=1; temp=temp*(0.625);/溫度值擴大10倍,精確到1位小數 return(temp);/*溫度值顯示*/
27、void ds1820disp() uchar flagdat;read_temp();tab0=temp%1000/100+0x30; /十位數tab1=temp%100/10+0x30; /個位數tab2=temp%10+0x30; /小數位if(tflag=0) flagdat=0x20;/正溫度不顯示符號 else flagdat=0x2d;/負溫度顯示負號:- if(tab0=0x30) tab0=0x20; /如果十位為0,不顯示write_com(0x80+0x40+6);write_dat(flagdat); /顯示正負write_dat(tab0); /顯示十位 write_dat(tab1); /顯示個位write_dat(0x2e); /顯示小數點 write_dat(tab2); /顯示小數位write_dat(0xdf);write_dat(0x43);#endifLCD1602驅動程序#ifndef _1602_H_#define _1602_H_#define uint unsigned int#define uchar unsigned char#define LCD P0sbit RS=P24;sbit RW=P25;sbit EN=P26;voi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司洗白策劃方案
- 公司摸獎活動方案
- 公司聚合力活動方案
- 公司組織生日活動方案
- 公司老員工活動方案
- 公司法治維安年活動方案
- 2025年藝術史與理論重要考點試卷及答案
- 2025年信息技術應用能力測評考試試卷及答案
- 2025年消防工程師職業考試試卷及答案
- 2025年心理健康評估師資格考試試題及答案
- 黑龍江省2024年普通高校招生體育類本科批院校專業組投檔分數線(物理類)
- 2024年貴州貴州磷化有限責任公司招聘考試真題
- 我是小廚師(廚藝體驗)主題班會
- 2025年西師新版四年級英語下冊階段測試試卷
- 托管班學生托管合作協議書
- 信息安全保障體系構建與實施指南
- 國家開放大學本科《商務英語4》一平臺機考真題及答案(第五套)
- 包裝設計中的可持續性實踐考核試卷
- 農藝工中級試題庫與參考答案
- 原料藥儲存養護
- 【MOOC】計算機系統局限性-華東師范大學 中國大學慕課MOOC答案
評論
0/150
提交評論