單片機溫度監(jiān)控報警系統(tǒng).doc_第1頁
單片機溫度監(jiān)控報警系統(tǒng).doc_第2頁
單片機溫度監(jiān)控報警系統(tǒng).doc_第3頁
單片機溫度監(jiān)控報警系統(tǒng).doc_第4頁
單片機溫度監(jiān)控報警系統(tǒng).doc_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科生開放實驗報告實 驗 項 目:單片機實時溫度監(jiān)控報警系統(tǒng)學(xué) 生 姓 名: 韋銳濤 學(xué) 號: 2009051138 學(xué) 院: 信息科學(xué)技術(shù)學(xué)院 學(xué) 系: 電子工程系 專 業(yè): 電子科學(xué)與技術(shù) 指 導(dǎo) 教 師: 黃偉英、潘小萍 暨南大學(xué)教務(wù)處2010 年 12月 25日單片機實時溫度監(jiān)控報警系統(tǒng)摘要:本著熟悉單片機編程,系統(tǒng)設(shè)計的目的,增強動手合作能力,選擇了做單片機實時溫度監(jiān)控報警系統(tǒng)這個實驗項目。本開放性實驗主要由AT89S52芯片、1602液晶顯示器、DS18B20數(shù)字式溫度傳感器、HK4100繼電器、蜂鳴器等組成。通過編程,利用單片機芯片自身的定時器和中斷做一個實時時鐘,可以記下發(fā)生事故時間,通過溫度傳感器實時采集環(huán)境溫度顯示在液晶屏上,并經(jīng)過單片機處理,設(shè)置兩個上限溫度報警值,經(jīng)過繼電器控制外圍線路。本系統(tǒng)可用于智能家居溫控報警,車間溫控等,具有一定推廣價值。關(guān)鍵字:溫度報警 溫度上下限 AT89S52單片機 液晶LCD1602 溫度傳感器DS18B20 目錄一、課程任務(wù)1.1功能說明二、整體設(shè)計方案2.1整體框架及各模塊功能三、硬件電路主要模塊設(shè)計3.1 各模塊設(shè)計3.1.1傳感器的選擇3.1.2單片機的選擇3.1.3液晶的選擇3.2各模塊分析3.2.1 單片機89S52管腳圖3.2.2 DS18B20引腳及管腳功能介紹3.2.3 LCD1602液晶顯示介紹四、控制軟件主要模塊設(shè)計及電路圖4.1 單片機模塊電路圖及分析4.2液晶顯示模塊電路圖及分析4.3溫度傳感器模塊電路圖及分析五、系統(tǒng)調(diào)試及所遇到問題六、個人總結(jié)七、參考文獻八、附錄 一 課程設(shè)計任務(wù)1.1功能說明1. 完成溫度進行測量,理論測量范圍0C+125C2. 可以通過按鍵進行溫度上限兩個報警值設(shè)定并實現(xiàn)功能;3. 將溫度測量值和上限兩個溫度在LCD液晶顯示模塊顯示;4. 當溫度大于上限的較小值時會亮綠燈燈并長聲報警,大于較大值時會亮紅綠燈并自動斷開繼電器所控制回路。5. 通過定時器編一個時鐘實時顯示當前時間,在繼電器斷開外圍電路時會停止時間,記下事故發(fā)生時間。二 整體設(shè)計方案2.1整體框架及各模塊功能本系統(tǒng)共分為七個模塊。1、單片機模塊,這部分主要實現(xiàn)數(shù)據(jù)的處理,輸出執(zhí)行,報警設(shè)置功能(主要模塊)2、液晶顯示模塊可以分別顯示實時溫度值,溫度上下限。(主要模塊)3、溫度傳感模塊的主要功能是通過DS18B20的強大功能實現(xiàn)對溫度的采集。(主要模塊)4、繼電器模塊可以控制外圍其他線路,如家居電線總開關(guān)。5、蜂鳴器模塊可以發(fā)出報警聲。6、LED燈模塊可以顯示報警信號7、按鍵可以設(shè)置時間和上限的兩個溫度值溫度讀取液晶顯示繼電器控制AT89S52控制器鍵盤掃描并設(shè)置蜂鳴器LED燈 圖1 整體框圖 圖2 溫度報警器總電路圖開始液晶、定時器、變量初始化鍵盤掃描、按鍵處理時鐘顯示、溫度轉(zhuǎn)化并顯示Yes溫度小于較低溫度值正常工作NoYes溫度大于較低且小于溫度值綠燈亮,有長報警聲No溫度大于較高溫度值紅綠燈亮,有短報警聲,繼電器控制開關(guān)斷開,停止時鐘YesNo結(jié)束單片機溫度實時監(jiān)控報警系統(tǒng)流程圖三 硬件電路設(shè)計(由于繼電器、蜂鳴器、LED燈、按鍵模塊結(jié)果和線路較為簡單,下面主要以單片機控制、液晶顯示、溫度采集模塊為主來分析)3.1各模塊設(shè)計3.1.1傳感器的選擇采用DALLAS最新單線數(shù)字溫度傳感器DS18B20。新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20“一線總線”數(shù)字化溫度傳感器也支持“一線總線”接口,測量溫度范圍為 -55C+125C,在-10+85C范圍內(nèi),精度為0.5C。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。DS18B20的特性:DS18B20可以程序設(shè)定912位的分辨率,精度為0.5C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色!繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟的測溫系統(tǒng)。3.1.2單片機的選擇AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。3.1.3液晶的選擇采用LCD1602液晶顯示模塊,有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點,在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。目前字符型液晶顯示模塊已經(jīng)是單片機應(yīng)用設(shè)計中最常用的信息顯示器件。它可以顯示兩行,每行16個字符,采用單5V電源供電,外圍電路配置簡單,價格便宜,具有很高的性價比。3.2各模塊分析3.2.1單片機89S52管腳圖注:引腳說明:電源引腳Vcc(40腳):典型值5V。Vss(20腳):接低電平。外部晶振X1、X2分別與晶體兩端相連接。當采用外部時鐘信號時,X2接振蕩信號,X1接地。輸入輸出口引腳:P0口:I/O雙向口。作輸入口時,應(yīng)先軟件置“ 1”。P1口:I/O雙向口。作輸入口時,應(yīng)先軟件置“ 1”。P2口:I/O雙向口。作輸入口時,應(yīng)先軟件置“ 1”。P3口:I/O雙向口。作輸入口時,應(yīng)先軟件置“ 1”??刂埔_:RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp組成了MSC-51的控制總線。RST/Vpd(9腳):復(fù)位信號輸入端(高電平有效)。第二功能:加+5V備用電源,可以實現(xiàn)掉電保護RAM信息不丟失。ALE/-PROG(30腳):地址鎖存信號輸出端。第二功能:編程脈沖輸入。-PSEN(29腳):外部程序存儲器讀選通信號。-EA/Vpp(31腳):外部程序存儲器使能端。第二功能:編程電壓輸入端(+21V)。3.2.2 DS18B20引腳及管腳功能介紹注DQ:數(shù)字信號輸入輸出端。GND:電源地端。VDD:外接供電電源輸入端(在寄生電源接線時此腳應(yīng)接地)。3.2.3 LCD1602液晶顯示介紹管腳功能1602采用標準的16腳接口第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。 第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 第6腳:E(或EN)端為使能(enable)端。 第714腳:D0D7為8位雙向數(shù)據(jù)端。 第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。四 控制軟件主要模塊設(shè)計及電路圖4.1單片機模塊電路圖及分析 圖3 單片機接線圖P0接液晶數(shù)據(jù)口,P2.2和P2.3接2個發(fā)光二極管,P3接8個按鈕,P2.4接蜂鳴器,P2.5接繼電器,P2.6接液晶的RS,P2.7接液晶的EN,P1.2接溫度傳感器,其他按單片機最小系統(tǒng)連接。4.2液晶顯示模塊電路圖及分析 圖3 液晶接線圖液晶顯示模塊的子程序:void write_com(uchar com)/寫液晶命令函數(shù)rs=0;lcden=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uchar date)/寫液晶數(shù)據(jù)函數(shù)rs=1;lcden=0;P0=date;delay(3);lcden=1;delay(3);lcden=0;void write_sfm(uchar add,char date)/1602液晶刷新時分秒函數(shù)1為時,4為分,7為秒 char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);void write_nyr(uchar add,char date)/1602液晶刷新年月日函數(shù)3為年,6為分,9為秒char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0xc0+add);write_date(0x30+shiwei);write_date(0x30+gewei);4.3溫度傳感器模塊電路圖及分析 圖4溫度傳感器接線圖溫度傳感器讀取溫度以及顯示溫度的子程序:void dsreset(void) /18B20復(fù)位,初始化函數(shù) uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-;bit tempreadbit(void) /讀1位函數(shù) uint i; bit dat; ds=0;i+; /i+ 起延時作用 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat);uchar tempread(void) /讀1個字節(jié) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20寫一個字節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0; /寫 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwritebyte(0x44); / 寫溫度轉(zhuǎn)換指令uint get_temp() /讀取寄存器中存儲的溫度數(shù)據(jù) uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); 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+0.5; /加0.5是四舍五入 return temp; /temp是浮點型 五 系統(tǒng)調(diào)試及遇到的問題開始我們只是做溫度報警,因為溫度傳感器選擇的是數(shù)字式溫度傳感器,感覺這樣做下來比較簡單,所以我們就增加了按鍵可以調(diào)整上下限溫度值,聽取了老師的建設(shè),如果能改進了下,可以做智能家居溫度報警,這樣就要外加一個繼電器,可以控制家里的線路,但是如果我們有事出外,有時發(fā)生事故,我們還希望記下發(fā)生事故的時間,所以就增加了用定時做一個時鐘的功能,這樣,就構(gòu)成了今天這個課題的內(nèi)容啦。以下是我們在調(diào)試過程序遇到的問題以及解決方案:1、由于沒有去仔細看實驗?zāi)脕淼娜饨涌诘姆庋b,以為和我自己買的單片機板上的是一樣的,導(dǎo)致我們做出來的板焊盤和實際的管腳根本就對不是,幸好我畫的是三個口的,而那個實際封裝比較大,用了外面兩個口,這樣就只能控制一路線,本來設(shè)計是可以控制兩路的。2、雖然我對單片機的原理算是比較熟悉的,但是真正當我自己去做一個系統(tǒng)的時候,有些細節(jié)性的地方就沒有注意到啦,比如說LED燈的控制,它的正向應(yīng)該是接電源的,因為單片機IO口是弱上拉的,當有驅(qū)動負載的時候,它就會變成低電平,達不到驅(qū)動LED燈的效果,而且還要接一個1K的電阻,但是我就直接把正向接到IO口啦,這樣調(diào)試的時候燈總是不亮,找了好久才找到原因。3、1620的顯示程序,我本來是有放在中斷服務(wù)程序一部分,而在主程序有溫度的顯示程序,但是實際上溫度的轉(zhuǎn)換時間和時鐘的顯示時間有很大差別,導(dǎo)致液晶屏上存在亂碼現(xiàn)象,這個花了我一個上午的時間還沒有找出來,最后我干脆把溫度顯示也放在中斷程序里面,這樣問題就解決啦。六 個人小結(jié)剛開始的時候我altium designer一點都不會,可是要畫這么復(fù)雜的電路圖,有些封裝還要自己畫,擱了很久都沒有做,借了一些關(guān)于altiumDesigner 的書也沒怎么看,可以前幾周老師突然說要結(jié)題啦,才拼命地學(xué),看來人的潛力真的是逼出來,通過本次實驗,學(xué)會很多東西,一個系統(tǒng)從畫圖到做板到完成調(diào)試。還有很多東西看似很簡單,但是理論與實際總是存著差距,只有在實踐中你才能發(fā)現(xiàn)很多細節(jié)的問題,才能不斷地進步。七 參考文獻1. 單片機C語言程序設(shè)計實訓(xùn)100例 編著 彭 偉2. 流行單片機實用子程序及應(yīng)用實例 編著 楊振江 杜鐵軍 李 群 3. C51基礎(chǔ)與應(yīng)用實例 編著 常喜茂 孔英會 付小寧4. 單片機原理與接口技術(shù) 編著 劉 軍5. 單片機原理與C51編程 編著 宋彩利 孫友倉 吳宏岐6. 51單片機開發(fā)入門與經(jīng)典實例 編著 王守中7. 51單片機C語言教程 編著 郭天祥8. 單片機程序設(shè)計及應(yīng)用 編著 楊將新 李華軍 劉東駿9. 51單片機應(yīng)用實例詳解 編著 楊 欣 王玉鳳 劉湘黔 張延強10. 百度文庫 八 附錄1、 實物圖和PCB圖2、器材清單名稱型號數(shù)量液晶顯示屏LCD1602c1數(shù)字溫度傳感器DS18B201單片機AT89S521二極管IN41481按鍵9電容110uF1發(fā)光二極管3電容230pF2電源開關(guān)1電位器20K1晶振12MHz1繼電器HK4100蜂鳴器1接口兩口1三極管S90122電阻11K5電阻2101電阻310k2排阻1電源接口13、總程序#define uchar unsigned char #define uint unsigned intsbit rs=P26;sbit lcden=P27;sbit jidianqi=P25;sbit s1=P30;/功能鍵sbit s2=P31;/增加鍵sbit s3=P33;/減小鍵sbit beep=P23;/蜂鳴器sbit led1=P21;sbit led2=P22;sbit ds=P12; /溫度傳感器uint warnl=35; /下限溫度uint warnh=40; /上限溫度uint temp;/整形溫度數(shù)據(jù)float f_temp;/浮點型溫度數(shù)據(jù)uchar count,stop,s1num,s2num;/其它變量定義char miao,shi,fen;uchar code table= : : T: ;/液晶固定顯示內(nèi)容uchar code table1= L: H: ;#include#includevoid delay(uint z)/延時函數(shù)uint x,y;for(x=z;x0;x-)for(y=124;y0;y-) ;void di() /蜂鳴器報警聲音beep=0;delay(100);beep=1; /*=液晶操作=*/void write_com(uchar com)/寫液晶命令函數(shù)rs=0;lcden=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uchar date)/寫液晶數(shù)據(jù)函數(shù)rs=1;lcden=0;P0=date;delay(3);lcden=1;delay(3);lcden=0;void write_sfm(uchar add,char date)/1602液晶刷新時分秒函數(shù)1為時,4為分,7為秒 char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);void write_nyr(uchar add,char date)/1602液晶刷新年月日函數(shù)3為年,6為分,9為秒char shiwei,gewei;shiwei=date/10;gewei=date%10;write_com(0xc0+add);write_date(0x30+shiwei);write_date(0x30+gewei);/*=*/*=ds18B20程序=*/void dsreset(void) /18B20復(fù)位,初始化函數(shù) uint i; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-;bit tempreadbit(void) /讀1位函數(shù) uint i; bit dat; ds=0;i+; /i+ 起延時作用 ds=1;i+;i+; dat=ds; i=8;while(i0)i-; return (dat);uchar tempread(void) /讀1個字節(jié) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20寫一個字節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i0)i-; else ds=0; /寫 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwritebyte(0x44); / 寫溫度轉(zhuǎn)換指令uint get_temp() /讀取寄存器中存儲的溫度數(shù)據(jù) uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; tempwarnh)jidianqi=0;TR0=0;led1=0;di();delay(200);di();delay(100); if (twarnl&t=warnh)led2=0;di();delay(400);di();

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論