基于-單片機(jī)超溫報(bào)警設(shè)計(jì)_第1頁
基于-單片機(jī)超溫報(bào)警設(shè)計(jì)_第2頁
基于-單片機(jī)超溫報(bào)警設(shè)計(jì)_第3頁
基于-單片機(jī)超溫報(bào)警設(shè)計(jì)_第4頁
基于-單片機(jī)超溫報(bào)警設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-PAGE . z.學(xué)校代碼: 序 號(hào):本 科 畢 業(yè) 論文題目:基于單片機(jī)的超溫報(bào)警設(shè)計(jì)學(xué) 院:姓 名:學(xué) 號(hào):專 業(yè):電子信息工程 年 級(jí):指導(dǎo)教師:二O 年 月-. z基于單片機(jī)的超溫報(bào)警設(shè)計(jì)摘要本設(shè)計(jì)設(shè)計(jì)了一款以AT89S52、DS18B20芯片為核心的溫度數(shù)字顯示報(bào)警系統(tǒng)。系統(tǒng)采用AT89S52單片機(jī)進(jìn)展智能控制,利用DS18B20芯片實(shí)現(xiàn)對(duì)溫度的測(cè)量,通過單片機(jī)處理進(jìn)展報(bào)警點(diǎn)的設(shè)置,用液晶顯示器LCD1602顯示以串口傳送數(shù)據(jù),顯示實(shí)時(shí)溫度,通過三個(gè)按鍵的按鍵次數(shù)來決定溫度閾值,按鍵1按一次設(shè)置上限溫度,按鍵1按兩次設(shè)置下限溫度,按鍵1按三次溫度設(shè)置完成,按鍵2按下是當(dāng)前溫度值加1

2、,按鍵3按下是當(dāng)時(shí)溫度減1。當(dāng)DS18B20測(cè)量的溫度值不在設(shè)定溫度閾值圍,單片機(jī)將驅(qū)動(dòng)蜂鳴器報(bào)警。關(guān)鍵詞:AT89S52,超溫報(bào)警,DS18B20,LCD顯示器Microcontroller-based over-temperature alarm designAbstractThe design designs to AT89S52 and DS18B20 chip as the core temperature digital display and alarm system.The system uses the AT8952 microcontroller for intellige

3、nt control,using DS18B20 chip implement temperature measurement,setting the alarm pointbymicrocontroller,using with theLCD1602 displaysdata with serial transmission,andLCD1602 displaysthe real-time temperature,number of times by three keys to determine temperature threshold,setting the ma*imum tempe

4、rature by keying Button 1 once,setting the minimum temperature Key Button 1 twice, pleting the setment of temperature by key Button 1 three times.when the button 2 key once,the temperature value plus 1;when the button 3 key once,the current temperature value minus 1.when the measured temperature by

5、DS18B20 is not within the value of the temperature threshold,the microcontroller will drive the buzzer alarm.Key words:AT89S52,Over-temperature alarm,DS18B20,LCD Monitor目錄TOC o 1-2 h z uHYPERLINK l _Toc2553719101概述 PAGEREF _Toc255371910 h 1HYPERLINK l _Toc2553719112 系統(tǒng)原理設(shè)計(jì) PAGEREF _Toc255371911 h 2H

6、YPERLINK l _Toc2553719122.1 超溫報(bào)警控制原理 PAGEREF _Toc255371912 h 2HYPERLINK l _Toc2553719132.2 系統(tǒng)功能方框圖 PAGEREF _Toc255371913 h 2HYPERLINK l _Toc2553719143 系統(tǒng)硬件原理及其設(shè)計(jì) PAGEREF _Toc255371914 h 3HYPERLINK l _Toc2553719153.1 單片機(jī)與各模塊連接工作原理 PAGEREF _Toc255371915 h 3HYPERLINK l _Toc2553719163.2 復(fù)位電路 PAGEREF _To

7、c255371916 h 8HYPERLINK l _Toc2553719173.3 晶振電路 PAGEREF _Toc255371917 h 8HYPERLINK l _Toc2553719183.4 DS18B20數(shù)據(jù)采集電路 PAGEREF _Toc255371918 h 9HYPERLINK l _Toc2553719193.5 溫度顯示模塊 PAGEREF _Toc255371919 h 10HYPERLINK l _Toc2553719203.6 報(bào)警模塊 PAGEREF _Toc255371920 h 11HYPERLINK l _Toc2553719213.7 溫度設(shè)置模塊 P

8、AGEREF _Toc255371921 h 11HYPERLINK l _Toc2553719224 系統(tǒng)軟件設(shè)計(jì) PAGEREF _Toc255371922 h 12HYPERLINK l _Toc2553719234.1 程序流程圖 PAGEREF _Toc255371923 h 12HYPERLINK l _Toc2553719244.2 程序 PAGEREF _Toc255371924 h 12HYPERLINK l _Toc2553719255 結(jié)論 PAGEREF _Toc255371925 h 26HYPERLINK l _Toc255371926參考文獻(xiàn) PAGEREF _T

9、oc255371926 h 27HYPERLINK l _Toc255371927致 PAGEREF _Toc255371927 h 28HYPERLINK l _Toc255371928附錄:超溫報(bào)警系統(tǒng)總圖 PAGEREF _Toc255371928 h 29-. z概述溫度是一種最根本的環(huán)境參數(shù),人們的生活環(huán)境與溫度息息相關(guān),溫度測(cè)量也被人們所異常關(guān)注因此,研究溫度的測(cè)量方法和裝置具有重要意義,溫度測(cè)控技術(shù)也在各個(gè)領(lǐng)域應(yīng)用越來越廣泛采用單片機(jī)對(duì)溫度進(jìn)展控制,不僅具有控制方便和組態(tài)簡(jiǎn)單的優(yōu)點(diǎn),而且可以提高被控溫度的技術(shù)指標(biāo)。本設(shè)計(jì)介紹了一款由單片機(jī)AT89S52和新型的智能集成溫度傳感器D

10、S18B20以及LCD1602顯示器等部件實(shí)現(xiàn)的溫度測(cè)量及報(bào)警系統(tǒng)同時(shí)在設(shè)計(jì)方面做了功能的擴(kuò)展,開關(guān)按鍵是用來調(diào)節(jié)溫度,功能較強(qiáng),可以設(shè)置上下限報(bào)警溫度,且測(cè)量準(zhǔn)確誤差小,單片機(jī)可把由DS18B20讀來的數(shù)據(jù)利用軟件來進(jìn)展處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊,實(shí)現(xiàn)實(shí)時(shí)溫度顯示,還有語音報(bào)警功能對(duì)溫度實(shí)施監(jiān)測(cè),即當(dāng)溫度超過設(shè)置的最高溫度或者低于給定的最低溫度時(shí),系統(tǒng)將驅(qū)動(dòng)蜂鳴器發(fā)聲報(bào)警。2系統(tǒng)原理設(shè)計(jì)2.1 超溫報(bào)警控制原理系統(tǒng)是對(duì)溫度的監(jiān)控。首先,用戶預(yù)先通過溫度設(shè)定模塊按鍵輸入溫度報(bào)警值到程序中,該值作為系統(tǒng)閾值。溫度傳感器DS18B20將監(jiān)測(cè)值傳輸給AT89S52單片機(jī),單片機(jī)將DS18B20測(cè)

11、量的溫度值與預(yù)先設(shè)定的溫度值T進(jìn)展比擬,當(dāng)單片機(jī)比擬監(jiān)測(cè)到的數(shù)值超出所設(shè)定閾值時(shí),驅(qū)動(dòng)蜂鳴器報(bào)警。2.2 系統(tǒng)功能方框圖超溫報(bào)警器原理框圖如圖2-1所示。整個(gè)系統(tǒng)由AT89S52單片機(jī)、溫度設(shè)置模塊、溫度顯示模塊、DS18B20數(shù)據(jù)采集模塊、報(bào)警器模塊組成。單片機(jī)主要負(fù)責(zé)承受來自DS18B20數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)展比照處理,通過單片機(jī)處理控制溫度顯示模塊和報(bào)警器模塊。溫度顯示模塊和報(bào)警器模塊是執(zhí)行來自單片機(jī)指令并反應(yīng)結(jié)果給用戶。單 片 機(jī)溫度設(shè)置模塊DS18B20溫度顯示報(bào)警器圖2-1原理框圖3系統(tǒng)硬件原理及其設(shè)計(jì)3.1 單片機(jī)與各模塊連接工作原理3.1.1AT89S52單片機(jī)1. 主要性能與MCS

12、-51單片機(jī)產(chǎn)品兼容、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、1000次擦寫周期、全靜態(tài)操作:0Hz33Hz、三級(jí)加密程序存儲(chǔ)器、32個(gè)可編程I/O口線、三個(gè)16位定時(shí)器/計(jì)數(shù)器八個(gè)中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時(shí)器、雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符。圖3-1 AT89S52雙列直插封裝方式引腳圖2. 功能特性描述AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單

13、芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷構(gòu)造,全雙工串行口,片晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停頓工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停頓,直到下一個(gè)中斷或硬件復(fù)位為止。8位微控制器8K字節(jié)在系統(tǒng)可編

14、程Flash。1P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫1時(shí),引腳用作高阻抗輸入。當(dāng)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有部上拉電阻。在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 2P1口:P1口是一個(gè)具有部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL 邏輯電平。對(duì)P1端口寫1時(shí),部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于部電阻的原因,將輸出電流IIL。此外,P1.0和P1.2

15、分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入P1.0/T2和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入P1.1/T2E*,具體如下所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 引腳號(hào)第二功能 P1.0 T2定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入,時(shí)鐘輸出 P1.1 T2E*定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制 P1.5 MOSI在系統(tǒng)編程用 P1.6 MISO在系統(tǒng)編程用 P1.7 SCK在系統(tǒng)編程用 3P2口:P2口是一個(gè)具有部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫1時(shí),部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于部電

16、阻的原因,將輸出電流IIL。在外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器例如執(zhí)行MOV* DPTR時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的部上拉發(fā)送1。在使用8位地址如MOV* RI外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。 4P3口:P3口是一個(gè)具有部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫1時(shí),部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于部電阻的原因,將輸出電流IIL。P3口亦作為AT89S52特殊功能第二功能使用,如下所示

17、。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 端口引腳第二功能P3.0 R*D(串行輸入口)P3.1 T*D(串行輸出口)P3.2 INTO(外中斷0)P3.3 INT1(外中斷1)P3.4 TO(定時(shí)/計(jì)數(shù)器0)P3.5 T1(定時(shí)/計(jì)數(shù)器1)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。5RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。6ALE/PROG當(dāng)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE地址鎖存允許輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,A

18、LE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖PROG。如有必要,可通過對(duì)特殊功能存放器SFR區(qū)中的8EH單元的D0位置位,可制止ALE操作。該位置位后,只有一條MOV*和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE制止位無效。7PSEN程序儲(chǔ)存允許PSEN輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S52由外部程序存儲(chǔ)器取指令或數(shù)據(jù)時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)外部數(shù)據(jù)存儲(chǔ)

19、器,將跳過兩次PSEN信號(hào)。8EA/VPP外部允許,欲使CPU僅外部程序存儲(chǔ)器地址為0000H-FFFFH,EA端必須保持低電平接地。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平接Vcc端,CPU則執(zhí)行部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。9電源引腳Vcc和Vss引腳。Vcc接+5V電源,Vss接地。10時(shí)鐘引腳*TAL1和*TAL2引腳。*TAL1接外部晶體的1個(gè)引腳,該引腳部是1個(gè)反相放大器的輸入端,這個(gè)反相放大器構(gòu)成了片振蕩器,如果采用外接晶體振蕩器時(shí),此引腳應(yīng)接

20、地。*TAL2接外部晶體的另一端,該引腳部接至部反相放大器的輸出端,假設(shè)采用外部時(shí)鐘振蕩時(shí),該引腳接收時(shí)鐘振蕩的信號(hào),即把此信號(hào)直接接到部時(shí)鐘發(fā)生器的輸入端。 單片機(jī)與各模塊連接AT89S52單片機(jī)P3.7引腳與溫度傳感器DS18B20的DQ引腳相連,作為溫度信號(hào)的輸入/輸出,其P2.0引腳與報(bào)警電路的連接進(jìn)展信號(hào)的通訊,其P0.0P0.7引腳與顯示電路的主芯片1602的D0D7數(shù)據(jù)線相連來控制LED顯示,其P1.0與P1.1引腳與溫度設(shè)置模塊相連接,以便用來控制系統(tǒng)的溫度設(shè)置。系統(tǒng)原理圖如圖3-2所示。圖3-2 系統(tǒng)原理圖3.2復(fù)位電路復(fù)位電路的根本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電

21、源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。本系統(tǒng)的復(fù)會(huì)電路電平方式的按鍵手動(dòng)復(fù)位方式,是通過RST端經(jīng)電阻與電源Vcc接通而實(shí)現(xiàn)的。C取10uF,R取10K。其復(fù)位電路與單片機(jī)連接圖如圖3-3所示。圖3-3復(fù)位電路3.3 晶振電路AT89S52部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳*TAL1,輸出端為引腳*TAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自己振蕩器,如圖3-4所示是AT89S52部時(shí)鐘方式的振蕩器電路。取C1=C2=30pF,晶振

22、為12MHz。圖3-4晶振電路3.4DS18B20數(shù)據(jù)采集電路DS18B20是由美國DALLAS半導(dǎo)體公司生產(chǎn)最新單線數(shù)字式溫度傳感器,主要特性如下:可實(shí)現(xiàn)對(duì)-55到+125圍的溫度測(cè)量,并且測(cè)量溫度的誤差在0.5,實(shí)際系統(tǒng)的分辨率可單獨(dú)設(shè)定,并且保存在EEPROM中,即使斷電也能夠保存;現(xiàn)場(chǎng)溫度的測(cè)量值通過串行通信的方式傳輸,即單線總線的數(shù)字方式傳輸;系統(tǒng)供電電壓容許圍大,可在3V到5.5V的圍波動(dòng)。DS18B20總共三個(gè)引腳,一個(gè)引腳為電源地GND,另一個(gè)為外接電源端VDD,剩下一個(gè)DQ為數(shù)字信號(hào)輸入/輸出端。DS18B20的部構(gòu)造如圖3-5所示,主要包括寄生電源電路、64位只讀存儲(chǔ)器RO

23、M和單線接口、存儲(chǔ)器和控制邏輯、存放中間數(shù)據(jù)的高速暫存存儲(chǔ)器、溫度傳感器、報(bào)警上限存放器TH、報(bào)警下限存放器TL、配置存放器和8位CRC循環(huán)冗余校驗(yàn)碼發(fā)生器。圖3-5DS18B20根本組成與傳統(tǒng)的熱敏電阻相比,DS18B20能過直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要去通過簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。可以分別在93.75ms和750ms完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需一個(gè)口線單線接口讀寫。溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可是系統(tǒng)構(gòu)造更趨簡(jiǎn)單,可靠性更高。由于D

24、S18B20采用單總線接口方式,所以它與單片機(jī)只需一根接口線即可,即只需要把DS18B20的DQ線與單片機(jī)的一根接口線即可,系統(tǒng)DQ線與單片機(jī)P3.7口連接。3.5溫度顯示模塊選用1602字符型液晶模塊,它是目前功控系統(tǒng)中使用最為廣泛的液晶屏之一。1602字符型液晶模塊是點(diǎn)陣型液晶,驅(qū)動(dòng)方便,經(jīng)編碼后顯示容多樣化。系統(tǒng)的輸入模塊采用中斷掃描44矩陣鍵盤,相比定時(shí)掃描方式,提高了MCU的使用效率。液晶顯示模塊具有體積小、功耗低、顯示容豐富、超薄輕巧等優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。目前字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件。LCD1602液晶顯示模塊可以

25、顯示兩行,每16個(gè)字符,采用單+SV電源供電,外圍電路配置簡(jiǎn)單,價(jià)格廉價(jià),具有很高的性價(jià)比。表3-1 LCD1602的主要技術(shù)參數(shù):顯示容量162個(gè)字符芯片工作電壓4.55.5V工作電流2.0mA(5.0V)模塊最正確工作電壓5.0V字符尺寸2.954.35(W*H)mm表3-2 LCD1602接口信號(hào)說明:編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1VSS電源地9D2Data I/O2VDD電源正極10D3Data I/O3VL液晶顯示偏壓信號(hào)11D4Data I/O4RS數(shù)據(jù)/命令選擇端H/L12D5Data I/O5R/W讀/寫選擇端H/L13D6Data I/O6E使能信號(hào)14D7Data I/

26、O7D0Data I/O15BLA背光源正極8D1Data I/O16BLK背光源負(fù)極D0D7為1602的數(shù)據(jù)線,它與單片機(jī)的P0口相連,R6R13為上拉電阻,R14為L(zhǎng)CD比照度調(diào)節(jié)電阻。RS、R/W、E為控制口線,分別與AT89S52的P2.4、P2.3、P2.2相連接,實(shí)時(shí)顯示溫度。3.6 報(bào)警模塊本設(shè)計(jì)中所設(shè)計(jì)的報(bào)警電路較為簡(jiǎn)單,由一個(gè)自我震蕩型蜂鳴器和PNP型晶體管組成。蜂鳴器額定電流IB30mA,而對(duì)于AT89S52單片機(jī),P2.0口的灌電流為1.6mA,拉電流為60A,由此可見,僅靠單片機(jī)的P2.0口電流是不能驅(qū)動(dòng)蜂鳴器的,必須使用集晶體管放大電路,為了使單片機(jī)消耗的功率更小,所

27、以使用PNP型晶體管9012。3.7 溫度設(shè)置模塊為了使系統(tǒng)更具有通用性,系統(tǒng)通過溫度設(shè)置模塊設(shè)定用戶所需要的報(bào)警上限和下限報(bào)警溫度值,其原理是通過三個(gè)按鍵的按鍵次數(shù)來決定溫度值,當(dāng)S1按下時(shí),系統(tǒng)開場(chǎng)設(shè)置溫度,當(dāng)S2按下一次則使報(bào)警溫度值加1,直到用戶所需的溫度值為止,S3的作用與S2相反,它用于設(shè)置下限報(bào)警溫度值。4系統(tǒng)軟件設(shè)計(jì)4.1 程序流程圖程序啟動(dòng)后,首先調(diào)用DS18B20和LCD1602模塊初始化程序,然后調(diào)用溫度采集模塊,借用DS18B20部模數(shù)轉(zhuǎn)換的時(shí)間,調(diào)用溫度值轉(zhuǎn)換模塊,將溫度值轉(zhuǎn)換成BCD碼,送入AT89S52單片機(jī)處理,驅(qū)動(dòng)LCD實(shí)時(shí)顯示溫度和超溫報(bào)警。程序流程圖如圖4

28、-1所示。開場(chǎng)LCD1602初始化DS18B20初始化溫度采集送AT89S52處理LED顯示報(bào)警是否超溫NY圖4-1程序流程圖4.2 程序*include /包含reg52.h文件*include /包含intrins.h文件*define uchar unsigned char /定義uchar代替unsigned char*define uint unsigned int /定義uint代替unsigned intsbit DQ=P37;/DQ定義為P3口位7sbit lcden=P22;/lcden定義為P2口位2sbit lcdrs=P24;/lcdrs定義為P2口位4sbit lcd

29、rw=P23;/lcdrw定義為P2口位3sbit beep=P20;/beep定義為P2口位0sbit set=P10;/set定義為P1口位0sbit up=P11;/up定義為P1口位1sbit down=P12;/down定義為P1口位2uint temp,a,b;/定義temp,a,b為無符號(hào)整型uchar num;/定義num為無符號(hào)字符型uchar key=0;/定義key為無符號(hào)字符型,key的初始值為0uchar g;/定義g為無符號(hào)字符型uchar bai,shi,ge,ma*shi,ma*ge,minshi,minge;/定義變量uchar data temp_data2

30、=0*00,0*00;/讀出溫度暫放uchar data display5=0*00,0*00,0*00,0*00,0*00;/顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用uchar code ditab16=0*00,0*01,0*01,0*02,0*03,0*03,0*04,0*04,0*05,0*06,0*06,0*07,0*08,0*08,0*09,0*09;/定義數(shù)組ditab16uint data data12=0*32,0*00/無符號(hào)數(shù)組uint data1 被定義為data存儲(chǔ)類型uchar code table1 = WEN KONG ;/定義數(shù)組table1 uchar cod

31、e table2 = WENDU: . C ;/定義數(shù)組table2 uchar code table3 =Set Temperature ;/定義數(shù)組table3 uchar code table4=SANG*IAN: . C ;/定義數(shù)組table4 uchar code table5=*IA*IAN: . C ;/定義數(shù)組table5 uchar code warn=WARNING WARNING ; /定義數(shù)組table6 /*11us延時(shí)函數(shù)*/void delay(uint t) for(;t0;t-);/*1ms延時(shí)函數(shù)*/void delaylcd(uint z)uint *,

32、y;for(*=z;*0;*-)for(y=110;y0;y-);void write_(uchar ) /定義函數(shù)write_,給LCD寫命令lcdrs=0; /低電平寫命令P0=; /寫入命令delaylcd(2); /延時(shí)2mslcden=1; /LCD使能端置高電平delaylcd(2); /延時(shí)2mslcden=0; /LCD使能端置低電平void write_data(uchar date) /定義函數(shù)write_data,寫LCD數(shù)據(jù)lcdrs=1; /高電平寫數(shù)據(jù)P0=date; /寫入數(shù)據(jù)delaylcd(2); /延時(shí)2mslcden=1; /LCD使能端置高電平delay

33、lcd(2); /延時(shí)2mslcden=0; /LCD使能端置低電平void displayminma*() /定義函數(shù)displayminma*,第1行顯示溫度上下閾值uchar i;write_(0*80); /設(shè)置光標(biāo)位置為第1行第1位ma*shi=data10/10; / ma*shi為上限溫度十位ma*ge=data10%10; / ma*ge為上限溫度個(gè)位minshi=data11/10; / minshi為下限溫度十位minge=data11%10; / minge為下限溫度個(gè)位write_data(0*30+minshi); /顯示下限溫度的十位write_data(0*30+

34、minge); /顯示下限溫度的個(gè)位write_data(0*df); /顯示下限溫度上限溫度write_data(0*43);write_data(0*2d);write_data(0*2d);write_data(0*2d);write_data(0*3e);write_data(0*30+ma*shi); /顯示上限溫度的十位write_data(0*30+ma*ge); /顯示上限溫度的個(gè)位write_data(0*df);write_data(0*43);for(i=0;i4;i+)write_data(0*20); /顯示四個(gè)空格void initdisplay() /定義函數(shù)in

35、itdisplay,顯示2行字符displayminma*(); /調(diào)用displayminma*函數(shù)write_(0*80+0*40); /設(shè)置光標(biāo)位置,從第2行第1位開場(chǎng)寫for(num=0;num0;i-) /從18B20移出一個(gè)字節(jié) DQ=1;_nop_();_nop_(); /從高拉到低 DQ=0;_nop_();_nop_();_nop_();_nop_();/延時(shí)5 us DQ=val&0*01;/最低位移出,向其間寫一位 delay(6);/延時(shí)66 us val=val/2;/右移1位,準(zhǔn)備寫下一位數(shù)據(jù) DQ=1; delay(1);/*DS18B20讀1字節(jié)函數(shù)*/從總線上

36、取1個(gè)字節(jié)uchar read_byte(void) /讀DS18B20的字節(jié)uchar i;uchar value=0;for(i=8;i0;i-) DQ=1;_nop_();_nop_();/2us value=1; /移位,準(zhǔn)備存放下一次數(shù)據(jù) DQ=0;_nop_();_nop_();_nop_();_nop_();/4 us DQ=1;_nop_();_nop_();_nop_();_nop_();/4 us if(DQ)/讀取數(shù)據(jù) value|=0*80; /讀取到的數(shù)據(jù)為1 delay(6); /66 usDQ=1;return(value); /返回value值/*讀出溫度函數(shù)*

37、/read_temp() /DS18B20讀取溫度 ow_reset(); /總線復(fù)位 delay(200); /延時(shí)220us write_byte(0*cc); /發(fā)命令,跳過讀序列號(hào)的操作 write_byte(0*44); /發(fā)轉(zhuǎn)換命令, 啟動(dòng)溫度轉(zhuǎn)換 ow_reset(); /復(fù)位 delay(1); /延時(shí) write_byte(0*cc); /發(fā)命令 write_byte(0*be); /讀取溫度存放器等共可讀9個(gè)存放器前兩個(gè)就是溫度 temp_data0=read_byte(); /讀溫度值的低字節(jié) temp_data1=read_byte(); /讀溫度值的高字節(jié) temp=

38、temp_data1; temp6348) /溫度值正負(fù)判斷 tem=65536-tem;n=1; /負(fù)溫度求補(bǔ)碼,標(biāo)志位置1 display4=tem&0*0f; /取小數(shù)局部的值 display0=ditabdisplay4; /存入小數(shù)局部顯示值 display4=tem4;/ 取中間八位,即整數(shù)局部的值 display3=display4/100; / 取百位數(shù)據(jù)暫存 display1=display4%100; / 取后兩位數(shù)據(jù)暫存 display2=display1/10; / 取十位數(shù)據(jù)暫存 display1=display1%10; / 取各位數(shù)據(jù)暫存void write_16

39、02() /溫度寫給LCD1602write_(0*80+0*40+8); /設(shè)置光標(biāo)位置,第2行第9位if(display3=1) /假設(shè)百位數(shù)為1則顯示百位write_data(0*30+display3); else write_(0*80+0*40+9);/否則設(shè)置光標(biāo)位置為第2行第10位write_data(0*30+display2);/寫十位數(shù)據(jù)write_data(0*30+display1);/寫個(gè)位數(shù)據(jù)write_(0*80+0*40+12);/設(shè)置光標(biāo)位置,第2行第13位write_data(0*30+display0);/寫小數(shù)display1(uchar date)

40、/顯示實(shí)際溫度,用于溫度設(shè)置的時(shí)候a=date; /令a為date數(shù)據(jù)bai=a/100;/令bai為date數(shù)據(jù)的百位shi=a%100/10;/令shi為data數(shù)據(jù)的十位ge=a%100%10; /令ge為data數(shù)據(jù)的個(gè)位write_(0*80+0*40+8);/設(shè)置光標(biāo)位置,第2行第9位if(bai!=0)/假設(shè)bai!=0則寫百位write_data(0*30+bai);else /否則設(shè)置光標(biāo)位置為第2行第10位write_(0*80+0*40+9);write_data(0*30+bai); /顯示bai數(shù)據(jù)write_data(0*30+shi);/顯示shi數(shù)據(jù)write_

41、(0*80+0*40+12);/設(shè)置光標(biāo)位置,第2行第13位write_data(0*30+0); /顯示小數(shù)數(shù)據(jù)為0void keyscan() /溫度設(shè)置函數(shù)P0=0*ff;/P0=0if(set=0) /假設(shè)set=1delaylcd(5); /延時(shí)if(set=0) /假設(shè)set=0key+; /key=key+1while(!set); /當(dāng)key=0時(shí),跳出if(key=1) /設(shè)置溫度上限write_(0*80); /設(shè)置光標(biāo)位置,第1行第1位for(num=0;num15;num+) /顯示table3num中的容,即Set Temperaturewrite_data(tabl

42、e3num); delaylcd(1); write_(0*80+0*40); /設(shè)置光標(biāo)位置,第2行第1位for(num=0;num16;num+) /顯示table4num中的容,即SANG*IAN: . C write_data(table4num); delaylcd(1);b=data10; /令b為上閾值溫度display1(b); /顯示b的值if(up=0) /假設(shè)up=0,上閾值溫度+1delaylcd(5);if(up=0)b=b+1;data10=b;while(!up);display1(b);if(down=0) /假設(shè)down=0,下閾值溫度-1delaylcd(5);if(down=0)b=b-1;data10=b;while(!down);display1(b); if(key=2)/設(shè)置溫度下限 write_(0*80); /設(shè)置光標(biāo)位置,第1行第1位for(num=0;num

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論