環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)_第1頁(yè)
環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)_第2頁(yè)
環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)_第3頁(yè)
環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)_第4頁(yè)
環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 大學(xué)生電子競(jìng)賽設(shè)計(jì)報(bào)告項(xiàng)目名稱: 環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)組 長(zhǎng): 王偉濤 組 員: 王塨、張峰 系 別: 物理系 專 業(yè): 光電器件及其應(yīng)用方向指導(dǎo)教師: 李清貴 完成時(shí)間: 2015年7月25日 摘要:本著熟悉單片機(jī)編程,系統(tǒng)設(shè)計(jì)的目的,增強(qiáng)動(dòng)手合作能力,選擇了做單片機(jī)實(shí)時(shí)溫度監(jiān)控報(bào)警系統(tǒng)這個(gè)實(shí)驗(yàn)項(xiàng)目。本開放性實(shí)驗(yàn)主要由AT89C52芯片、1602液晶顯示器、DS18B20數(shù)字式溫度傳感器、蜂鳴器等組成。通過溫度傳感器實(shí)時(shí)采集環(huán)境溫度顯示在液晶屏上,并經(jīng)過單片機(jī)處理,設(shè)置兩個(gè)上限溫度報(bào)警值,本系統(tǒng)可用于智能家居溫控報(bào)警,車間溫控等,具有一定推廣價(jià)值。關(guān)鍵字:溫度報(bào)警 溫度上下限 AT89C5

2、2單片機(jī) 液晶LCD1602 溫度傳感器DS18B20 Abstract: In the design of the single chip microcomputer programming, system design, enhance the ability to work, the choice of real-time temperature monitoring and control system of single-chip microcomputer. This open experiment is mainly made up of AT89C52 chip, 1602 L

3、CD, DS18B20 digital temperature sensor, buzzer and so on. Through the temperature sensors to collect the environmental temperature display on the LCD screen, and through the SCM processing, set two upper limit temperature alarm value, the system can be used for the intelligent home control alarm, wo

4、rkshop temperature control, with certain value of popularization.Key words: temperature alarm Upper and lower limits of temperature temperatureAT89C52 microcontroller LCD LCD1602 temperature sensor DS18B20一、課程設(shè)計(jì)任務(wù)11.1、功能介紹1二、系統(tǒng)整體設(shè)計(jì)方案12.1、系統(tǒng)組成及功能12.2、系統(tǒng)框架2三、硬件電路設(shè)計(jì)23.1、單片機(jī)模塊33.1.1、AT89C52簡(jiǎn)介33.1.2、AT89

5、C52的資源:43.1.3、引腳說(shuō)明43.1.4、單片機(jī)模塊電路設(shè)計(jì)73.2傳感器模塊73.2.1、DS18B20簡(jiǎn)介73.2.2、DS18B20引腳說(shuō)明83.3、液晶顯示模塊93.3.1、1602LCD液晶顯示屏簡(jiǎn)介93.3.2、1602引腳說(shuō)明93.3.3、1602電路設(shè)計(jì)10四、軟件模塊設(shè)計(jì)104.1、主程序流程框圖104.2、顯示模塊124.2.1程序編寫說(shuō)明124.2.2、顯示子程序124.3、溫度傳感器模塊134.3.1、程序編寫說(shuō)明134.3.2、溫度傳感器讀取溫度以及顯示溫度的子程序:15五、結(jié)論18六、致謝20七、參考文獻(xiàn)21八、附錄228.1、實(shí)物圖228.2、仿真圖238

6、.3、總程序24一、課程設(shè)計(jì)任務(wù)1.1、功能介紹本環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)以STC89C52單片機(jī)為核心,通過單線數(shù)字溫度傳感器DS18B20來(lái)進(jìn)行收集當(dāng)前環(huán)境溫度,用矩陣鍵盤輸入設(shè)置兩個(gè)上線環(huán)境溫度值,用1602液晶顯示屏顯示當(dāng)前溫度值和設(shè)置好的兩個(gè)上線環(huán)境溫度值,用蜂鳴器和LED燈作為警報(bào),從而可以實(shí)現(xiàn)以下功能:(1)可以對(duì)當(dāng)前環(huán)境溫度進(jìn)行測(cè)量溫度測(cè)量范圍:090攝氏度,誤差0.1攝氏度(2)可通過1602LCD液晶顯示屏顯示出來(lái)當(dāng)前環(huán)境溫度值和設(shè)置的兩個(gè)上線溫度值,并且數(shù)值可以達(dá)到小數(shù)點(diǎn)后一位。(3)可以通過矩陣鍵盤實(shí)時(shí)對(duì)兩個(gè)上線環(huán)境溫度值調(diào)控(4)當(dāng)環(huán)境溫度大于上限的較小值時(shí)會(huì)亮綠燈并且蜂

7、鳴器會(huì)做頻率較低的長(zhǎng)聲報(bào)警,當(dāng)大于較大值時(shí)兩燈都會(huì)亮并且蜂鳴器會(huì)做頻率較高的報(bào)警。(5)通過定時(shí)器編一個(gè)時(shí)鐘實(shí)時(shí)顯示當(dāng)前時(shí)間,當(dāng)環(huán)境溫度大于上限溫度時(shí)會(huì)停止時(shí)間,記下事故發(fā)生時(shí)間。二、系統(tǒng)整體設(shè)計(jì)方案2.1、系統(tǒng)組成及功能 本系統(tǒng)共分為六個(gè)模塊。(1)單片機(jī)模塊,這部分主要實(shí)現(xiàn)數(shù)據(jù)的處理,輸出執(zhí)行,報(bào)警設(shè)置功能(主要模塊)(2)液晶顯示模塊可以分別顯示實(shí)時(shí)溫度值,溫度上下限。(主要模塊)(3)溫度傳感模塊的主要功能是通過DS18B20的強(qiáng)大功能實(shí)現(xiàn)對(duì)溫度的采集。(主要模塊)(4)蜂鳴器模塊可以發(fā)出報(bào)警聲。(5)按鍵可以設(shè)置時(shí)間和上限的兩個(gè)溫度值(6)LED燈模塊可以顯示報(bào)警信號(hào)2.2、系統(tǒng)框架

8、溫度讀取液晶顯示AT89C52控制器鍵盤掃描并設(shè)置蜂鳴器LED燈 圖1三、硬件電路設(shè)計(jì)本系統(tǒng)由溫度傳感器DS18B20模塊、單片機(jī)AT89C52模塊、LCD液晶顯示1602模塊、蜂鳴器模塊、LED燈模塊、鍵盤模塊六大模塊組成,3.1、單片機(jī)模塊3.1.1、AT89C52簡(jiǎn)介該環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)所用的單片機(jī)是AT89C52單片機(jī),又圖2為AT89C52單片機(jī)引腳圖,AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),

9、兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,該型號(hào)的單片機(jī)是應(yīng)用量最多最普遍的單片機(jī),它具有性能穩(wěn)定、抗干擾能力強(qiáng)、性價(jià)比高、適應(yīng)溫度范圍廣、功耗低、體積小的特點(diǎn)廣泛應(yīng)用于各種復(fù)雜環(huán)境及各電子行業(yè)中。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2 個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash存儲(chǔ)器可有效地降低開發(fā)成本因此我們選擇了AT89C52單片機(jī)。3.1.2、AT

10、89C52的資源:(1)兼容MCS51指令系統(tǒng)(2)8kB可反復(fù)擦寫(大于1000次)Flash ROM;(3)32個(gè)雙向I/O口;(4)256x8bit內(nèi)部RAM;(5)3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷; 圖2(6)時(shí)鐘頻率0-24MHz;(7)2個(gè)串行中斷,可編程UART串行通道;(8)2個(gè)外部中斷源,共8個(gè)中斷源;(9)2個(gè)讀寫中斷口線,3級(jí)加密位;(10)低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能;(11)有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。3.1.3、引腳說(shuō)明(1)P0口P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用

11、口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8 個(gè)TTL邏輯門電路,對(duì)端口P0 寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。(2)P1口P1 是一個(gè)帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流

12、(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX)。(3)P2口P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問外部程序存儲(chǔ)器或16 位地?cái)?shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行

13、MOVXRI 指令)時(shí),P2 口輸出P2鎖存器的內(nèi)容。(4)P3口P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)P3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL),P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能,P3 口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。(5)RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位.(6)ALE/PROG當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(

14、地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE 脈沖。(7)PSEN程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。(8)EA/VPP外部訪問允許。欲使CPU 僅訪問外部程序存儲(chǔ)器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1

15、被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。(9)XTAL1振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。(10)XTAL2振蕩器反相放大器的輸出端。 圖33.1.4、單片機(jī)模塊電路設(shè)計(jì)AT89C52單片機(jī)接線圖如下圖2P0接液晶數(shù)據(jù)口,P2.2和P2.3接2個(gè)發(fā)光二極管,P3接8個(gè)按鈕,P2.4接蜂鳴器,P2.5接繼電器,P2.6接液晶的RS,P2.7接液晶的EN,P1.2接溫度傳感器,其他按單片機(jī)最小系統(tǒng)連接。3.2傳感器

16、模塊3.2.1、DS18B20簡(jiǎn)介采用DALLAS最新單線數(shù)字溫度傳感器DS18B20。新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18B20“一線總線”數(shù)字化溫度傳感器也支持“一線總線”接口,測(cè)量溫度范圍為 -55°C+125°C,在-10+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。DS18B20的特性:D

17、S18B20可以程序設(shè)定912位的分辨率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的 圖4報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色!繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng)。3.2.2、DS18B20引腳說(shuō)明DQ:數(shù)字信號(hào)輸入輸出端。GND:電源地端。VDD:外接供電電源輸入端(在寄生電源接線時(shí)此腳應(yīng)接地)。3.2.3 DS18B20引腳電路設(shè)計(jì) 圖5

18、3.3、液晶顯示模塊 3.3.1、1602LCD液晶顯示屏簡(jiǎn)介 采用LCD1602液晶顯示模塊,有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得 圖6到廣泛的應(yīng)用。目前字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件。它可以顯示兩行,每行16個(gè)字符,采用單5V電源供電,外圍電路配置簡(jiǎn)單,價(jià)格便宜,具有很高的性價(jià)比。3.3.2、1602引腳說(shuō)明1602采用標(biāo)準(zhǔn)的16腳接口(1)第1腳:VSS為電源地(2)第2腳:VDD接5V電源正極(3)第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正極時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高。 (4)第4腳:RS為寄存器選擇,高

19、電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。 (5)第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。 (6)第6腳:E(或EN)端為使能(enable)端。 (7)第714腳:D0D7為8位雙向數(shù)據(jù)端。 (8)第1516腳:空腳或背光電源,15腳背光正極,16腳背光負(fù)極。3.3.3、1602電路設(shè)計(jì) 圖7四、軟件模塊設(shè)計(jì)4.1、主程序流程框圖開始液晶、定時(shí)器、變量初始化鍵盤掃描、按鍵處理時(shí)鐘顯示、溫度轉(zhuǎn)化并顯示Yes溫度小于較低溫度值正常工作NoYes溫度大于較低且小于溫度值綠燈亮,有長(zhǎng)報(bào)警聲No溫度大于較高溫度值紅綠燈亮,有短報(bào)警聲,繼電器控制開關(guān)斷開,停

20、止時(shí)鐘YesNo結(jié)束單片機(jī)溫度實(shí)時(shí)監(jiān)控報(bào)警系統(tǒng)流程圖 圖84.2、顯示模塊4.2.1程序編寫說(shuō)明寄 圖9 圖10 寄存器選擇控制表RSR/W操作說(shuō)明00寫入指令寄存器(清除屏等)01讀busy flag(DB7),以及讀取位址計(jì)數(shù)器(DB0DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)注:關(guān)于E=H脈沖開始時(shí)初始化E為0,然后置E為1,再清0.4.2.2、顯示子程序void write_com(uchar com)/寫液晶命令函數(shù)rs=0;lcden=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;void write_date(uc

21、har 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í)分秒函數(shù)1為時(shí),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為年,

22、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.3.1、程序編寫說(shuō)明 圖11 圖12初始化(1) 先將數(shù)據(jù)線置高電平“1”。(2) 延時(shí)(該時(shí)間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn))(3) 數(shù)據(jù)線拉到低電平“0”。(4) 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。(5) 數(shù)據(jù)線拉到高電平“1”。(6) 延時(shí)等待(如果初始化成功則在15到60微秒時(shí)間之內(nèi)產(chǎn)生一個(gè)

23、由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來(lái)確定它的存在,但是應(yīng)注意不能無(wú)限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制)。(7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。(8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。寫操作(1) 數(shù)據(jù)線先置低電平“0”。(2) 延時(shí)確定的時(shí)間為15微秒。(3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。(4) 延時(shí)時(shí)間為45微秒。(5) 將數(shù)據(jù)線拉到高電平。(6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。(7) 最后將數(shù)據(jù)線拉高。讀操作

24、(1)將數(shù)據(jù)線拉高“1”。(2)延時(shí)2微秒。(3)將數(shù)據(jù)線拉低“0”。(4)延時(shí)3微秒。(5)將數(shù)據(jù)線拉高“1”。(6)延時(shí)5微秒。(7)讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。(8)延時(shí)60微秒。4.3.2、溫度傳感器讀取溫度以及顯示溫度的子程序:void dsreset(void) /18B20復(fù)位,初始化函數(shù) uint i; ds=0; i=103; while(i>0)i-; ds=1; i=4; while(i>0)i-;bit tempreadbit(void) /讀1位函數(shù) uint i; bit dat; ds=0;i+; /i+ 起延時(shí)作用 ds=1;i+;

25、i+; dat=ds; i=8;while(i>0)i-; return (dat);uchar tempread(void) /讀1個(gè)字節(jié) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個(gè)字節(jié)在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20寫一個(gè)字節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j<=8;j+) t

26、estb=dat&0x01; dat=dat>>1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /寫 0 i=8;while(i>0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwritebyte(0x44); / 寫溫度轉(zhuǎn)換指令uint get_temp() /讀取寄存器中存儲(chǔ)的溫度數(shù)據(jù) uc

27、har a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp<<=8; /兩個(gè)字節(jié)組合為1個(gè)字 temp=temp|a; f_temp=temp*0.0625; /溫度在寄存器中為12位 分辨率位0.0625° temp=f_temp+0.5; /加0.5是四舍五入 return temp; /temp是浮點(diǎn)型五、結(jié)論緊緊張張的電子大賽培訓(xùn)也有一周之久了,首先給我們的感覺就是有好多東西都

28、不懂,但這未必是一件壞事,就像王老師說(shuō)的一樣,你越是不懂就說(shuō)明你要學(xué)的東西很多,你的提升空間也就越大。我們組每天都是起早貪黑的工作者早上7:40準(zhǔn)時(shí)在實(shí)驗(yàn)室坐著中午不休息一直到晚上10:40才回去,因?yàn)樵偻砘氐剿奚峋鸵P(guān)門了,當(dāng)東西做不完時(shí)我們都有一種沖動(dòng)晚上不回了,正是因?yàn)檫@種執(zhí)著拼搏的精神使我們收獲很多,每天我們都會(huì)感覺腦子里都是滿滿的不管是懂得的收獲還是不懂得煩惱。從剛開始的什么也不懂到現(xiàn)在的protel畫電路圖、proteus仿真、腐蝕、打板,焊接、調(diào)試等一些東西基本上動(dòng)能很好的掌握了,可以說(shuō)這是一個(gè)巨大的進(jìn)步,調(diào)試是一個(gè)復(fù)雜而漫長(zhǎng)的過程,需要我們不斷地去做,有一次我們的仿真也做出來(lái)了

29、,但是在實(shí)物上就是不行,結(jié)果總是不對(duì),經(jīng)過一上午的檢查調(diào)試終于知道了是我們的一根線接反了,開始的時(shí)候我們還以為是在焊接時(shí)由于高溫而把與器件燒了呢,于是我們有萬(wàn)能表一個(gè)一個(gè)的檢查電路。從這可以看出這是一個(gè)看似簡(jiǎn)單而最容易出錯(cuò)的過程,需要我們的耐心和細(xì)心?,F(xiàn)在我們的環(huán)境溫度監(jiān)控報(bào)警系統(tǒng)已經(jīng)做出來(lái)了,它可以收集環(huán)境的溫度并在顯示屏上顯示出來(lái),我們可以用矩陣鍵盤設(shè)置兩個(gè)上線溫度值,當(dāng)檢測(cè)到的環(huán)境溫度值大于最小上線溫度時(shí)二極管會(huì)閃爍并且蜂鳴器會(huì)做頻率較低的報(bào)警,當(dāng)環(huán)境溫度大于較大上線溫度值時(shí)二極管會(huì)閃爍并且蜂鳴器會(huì)做頻率較高的報(bào)警。它具有一定的使用價(jià)值可以用于倉(cāng)庫(kù)、實(shí)驗(yàn)室、機(jī)房以及軍事等設(shè)備上。該系統(tǒng)的

30、整體設(shè)計(jì)還是有很大的提升空間的,比如讓它也可以監(jiān)控低溫,當(dāng)溫度低于設(shè)置溫度值時(shí)也能夠做出一些指示報(bào)警。另一方面,該系統(tǒng)只是報(bào)警這是不夠的,最終還是需要人去做出反應(yīng),我們可以讓它自動(dòng)切斷電源,從而保護(hù)設(shè)備,這樣使其更具有自動(dòng)化,從而會(huì)有更大的推廣應(yīng)用范圍。六、致謝本次項(xiàng)目從開始設(shè)計(jì)到最后完工涉及到大量的知識(shí)應(yīng)用,我們的指導(dǎo)老師李清貴老師一直孜孜不倦的指導(dǎo)我們,給我們提供幫助,特別是當(dāng)遇到單片機(jī)上的問題。在此我們感謝李清貴老師。在項(xiàng)目設(shè)計(jì)的過程中有楊彥偉老師、李浩平老師和王曉軍老師的監(jiān)督管理以及在知識(shí)、器材、元件方便對(duì)我們的幫助,在此我們一并表示致謝!對(duì)當(dāng)我們遇到問題時(shí)給我們提供幫助的同學(xué)們?cè)诖宋?/p>

31、們同樣便是感謝。感謝一路上有你們的陪伴,真心的感謝你們!七、參考文獻(xiàn)1、唐穎.單片機(jī)技術(shù)及C51程序設(shè)計(jì).電子工業(yè)出版社.20122、黃智偉.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽訓(xùn)練教程.電子工業(yè)出版社.20103、郭天祥.51單片機(jī)C語(yǔ)言教程.電子工業(yè)出版社.20094 李朝清.單片機(jī)原理及接口技術(shù).北京航空航天大學(xué)出版社,1996.85 于永權(quán).89系列(MCS-51兼容)Flash單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社,19976 百度文庫(kù)7 宋文續(xù),揚(yáng)帆.傳感器與檢測(cè)技術(shù).北京:高等教育出版社,2005.48 常健生.檢測(cè)與轉(zhuǎn)換技術(shù).北京:機(jī)械工業(yè)出版社,2004.69 凌志浩.智能儀表原理與設(shè)計(jì)技

32、術(shù).上海:華東理工大學(xué)出版社,2003.8八、附錄8.1、實(shí)物圖8.2、仿真圖8.3、總程序#include<reg51.h>#define uchar unsigned char #define uint unsigned intsbit rs=P26;sbit lcden=P27;sbit jidianqi=P25;sbit s1=P30;/功能鍵sbit s2=P31;/增加鍵sbit s3=P32;/減小鍵sbit beep=P15;/蜂鳴器sbit led1=P10;sbit led2=P11;sbit ds=P37; /溫度傳感器uint warnl=33; /下限溫度

33、uint warnh=35; /上限溫度uint temp;/整形溫度數(shù)據(jù)float f_temp;/浮點(diǎn)型溫度數(shù)據(jù)uchar count,stop,s1num,s2num;/其它變量定義char miao,shi,fen;uchar code table=" : : "/液晶固定顯示內(nèi)容uchar code table1=" L H: "void delay(uint z)/延時(shí)函數(shù)uint x,y;for(x=z;x>0;x-)for(y=124;y>0;y-); void di() /蜂鳴器報(bào)警聲音beep=0;delay(100);b

34、eep=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í)分秒函數(shù)1為時(shí),4為分,7為秒 char shiwei,gewei;shiwei=date/10;gewei=date%1

35、0;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);void write_sfm1(uchar add,int temp)char shiwei,gewei,xswei;shiwei=temp/100;gewei=temp%100/10;xswei=temp%100%10;write_com(0x80+add);write_date(0x30+shiwei);write_date(0x30+gewei);write_date(0x2e);write_date(0x30+xswei);void write_ny

36、r(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(i>0)i-; ds=1; i=4; while(i>0)i-;bit tempreadbit(void

37、) /讀1位函數(shù) uint i; bit dat; ds=0;i+; /i+ 起延時(shí)作用 ds=1;i+;i+; dat=ds; i=8;while(i>0)i-; return (dat);uchar tempread(void) /讀1個(gè)字節(jié) uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tempreadbit(); dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個(gè)字節(jié)在DAT里 return(dat);void tempwritebyte(uchar dat) /向18B20寫一個(gè)字

38、節(jié)數(shù)據(jù) uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) /寫 1 ds=0; i+;i+; ds=1; i=8;while(i>0)i-; else ds=0; /寫 0 i=8;while(i>0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 開始獲取溫度并轉(zhuǎn)換 dsreset(); delay(1); tempwritebyte(0xcc); / 寫跳過讀ROM指令 tempwriteb

39、yte(0x44); / 寫溫度轉(zhuǎn)換指令uint get_temp() /讀取寄存器中存儲(chǔ)的溫度數(shù)據(jù) uchar a,b; dsreset(); delay(1); tempwritebyte(0xcc); tempwritebyte(0xbe); a=tempread(); /讀低8位 b=tempread(); /讀高8位 temp=b; temp<<=8; /兩個(gè)字節(jié)組合為1個(gè)字 temp=temp|a; f_temp=temp*0.625; /溫度在寄存器中為12位 分辨率位0.0625° temp=f_temp+0.5; /加0.5是四舍五入 return te

40、mp; /temp是浮點(diǎn)型 /*=*/*=溫度處理=*/void deal(uint t)if (t>warnh*10)jidianqi=1;TR0=0;led1=0;delay(100);led1=1;delay(100);led2=0;delay(100);led2=1;delay(100);di();delay(150);di();delay(100); if (t>warnl*10&&t<=warnh*10)led2=0;delay(100);led2=1;delay(100);di();delay(400);di();delay(100);/*=液晶

41、處理=*/ void init()/初始化函數(shù)uchar num;s1num=0;count=0;fen=0;miao=0;shi=0;lcden=0;jidianqi=1;led1=1;led2=1;write_com(0x38);/1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num+)/寫入液晶固定部分顯示write_date(tablenum);delay(1);write_sfm(6,miao);/分別送去液晶顯示write_sfm(3,fen)

42、;write_sfm(0,shi);write_com(0x8e);write_date(0xdf);write_date(0x43);write_com(0x80+0x40);for(num=0;num<15;num+)write_date(table1num);delay(1);write_com(0xc5);write_date(0xdf);write_date(0x43);write_com(0xcd);write_date(0xdf);write_date(0x43);TMOD=0x01;/設(shè)置定時(shí)器0工作模式1TH0=(65536-50000)/256;/定時(shí)器裝初值TL0=

43、(65536-50000)%256;EA=1;/開總中斷ET0=1;/開定時(shí)器0中斷TR0=1;/啟動(dòng)定時(shí)器0/*=按鍵處理=*/void keyscan()/按鍵掃描函數(shù)if(s1=0)delay(5);if(s1=0)/確認(rèn)功能鍵被按下s1num+;/功能鍵按下次數(shù)記錄while(!s1);/釋放確認(rèn)di();/每當(dāng)有按鍵釋放蜂鳴器發(fā)出滴聲if(s1num=1)/第一次被按下時(shí)TR0=0; /關(guān)閉定時(shí)器write_com(0x80+6);/光標(biāo)定位到秒位置write_com(0x0f); /光標(biāo)開始閃爍if(s1num=2)/第二次按下光標(biāo)閃爍定位到分鐘位置write_com(0x80+3

44、);if(s1num=3)/第三次按下光標(biāo)閃爍定位到小時(shí)位置write_com(0x80+0);if(s1num=4) write_com(0xc0+3);if(s1num=5) write_com(0xc0+11);if(s1num=6)/第四次按下s1num=0;/記錄按鍵數(shù)清零write_com(0x0c);/取消光標(biāo)閃爍TR0=1;/啟動(dòng)定時(shí)器使時(shí)鐘開始走if(s1num!=0)/只有功能鍵被按下后,增加和減小鍵才有效if(s2=0)delay(5);if(s2=0)/增加鍵確認(rèn)被按下while(!s2);/按鍵釋放di();/每當(dāng)有按鍵釋放蜂鳴器發(fā)出滴聲if(s1num=1)/若功能鍵第一次按下miao+; /則調(diào)整秒加1if(miao=60)/若滿60后將清零miao=0;write_sfm(6,miao);/每調(diào)節(jié)一次送液晶顯示一下wri

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論