基于單片機(jī)的煙霧報警系統(tǒng)——畢業(yè)論文
摘 要電子與信息工程學(xué)院本 科 畢 業(yè) 論 文論文題目 基于單片機(jī)的煙霧報警系統(tǒng) 學(xué)生姓名 學(xué) 號 專 業(yè) 電子信息科學(xué)與技術(shù) 班 級 指導(dǎo)教師 年 月摘 要本課題主要是做一個智能的煙霧報警系統(tǒng),主要功能是能夠自主的檢測外部環(huán)境的煙霧濃度和環(huán)境溫度,通過與預(yù)先設(shè)置的閾值進(jìn)行比較,從而使系統(tǒng)報警。由于系統(tǒng)所需完成的任務(wù)比較簡單,所以我選用的是AT89C51單片機(jī),加之51單片機(jī)成本也什么低,適合作為設(shè)計(jì)樣品的材料選擇。本文主要分幾個部分進(jìn)行介紹畢業(yè)設(shè)計(jì)作品,先介紹了煙霧報警系統(tǒng)的使用價值,然后介紹煙霧報警系統(tǒng)的幾個硬件部分的功能,主要包括按鍵功能、屏幕顯示功能、AD轉(zhuǎn)換功能等,每個部分都進(jìn)行了相關(guān)的硬件介紹,其中對ADC0832和LCD1602做了詳細(xì)的簡介。軟件部分主要是對作品的幾個工作流程進(jìn)行介紹,主要有主程序流程、數(shù)據(jù)采集流程、LCD顯示流程、ADC0832的數(shù)據(jù)轉(zhuǎn)換流程,最后使用Protues對整個系統(tǒng)進(jìn)行仿真,保證系統(tǒng)的運(yùn)行可靠性。關(guān)鍵詞:AT89C51單片機(jī);煙霧報警器;A/D轉(zhuǎn)換器;Proteus仿真湖北科技學(xué)院學(xué)士學(xué)位論文ABSTRACTThe main purpose of this paper is to make a smart smoke alarm system, the main function is independent of external environment can detect smoke concentration and ambient temperature, compared with the preset threshold, so that the alarm system.Because the system needs to complete the task is relatively simple, so I chose the AT89C51 microcontroller, coupled with the 51 microcontroller is also what the cost is low, suitable for the selection of materials as a design sample.This paper is mainly divided into several parts of the graduation design works, first introduced the smoke alarm system use value, then introduces several smoke alarm system hardware function, including the key function, the screen display, AD conversion function, each part of the related hardware, which made a detailed introduction of ADC0832 and LCD1602.The software part is mainly on several working process works are introduced, mainly include main program, data acquisition program, LCD display procedures, ADC0832 data conversion process, and finally use the Protues to simulate the whole system, to ensure the reliability of the system.KEY WORDS:AT89C51 Single-chip Microcomputer;smokealarm;A / D converter; Simulation by use Proteus目 錄目錄摘 要4ABSTRACT5目錄71 緒論11.1 研究的背景及意義11.2 本文研究的主要內(nèi)容12 煙霧報警系統(tǒng)總體設(shè)計(jì)方案23 硬件系統(tǒng)部分設(shè)計(jì)33.1 單片機(jī)最小系統(tǒng)43.2 A/D轉(zhuǎn)換電路53.2.1 ADC0832的引腳及功能63.2.2 單片機(jī)對ADC0832 的控制原理73.2.3 ADC0832連線圖83.3 LCD1602液晶顯示電路93.4 按鍵電路103.5聲光報警電路114 軟件系統(tǒng)部分設(shè)計(jì)124.1 編程軟件的介紹124.2 程序流程圖124.2.1 主程序流程圖124.2.2 數(shù)據(jù)采集子程序流程圖134.2.3 LCD程序流程圖144.3 軟件編譯154.4. Proteus仿真模擬165 實(shí)物的調(diào)試與檢測175.1 系統(tǒng)軟件調(diào)試185.2 系統(tǒng)硬件的調(diào)試185.3 實(shí)物展示與結(jié)論分析186 總結(jié)與展望196.1 論文工作總結(jié)196.2 今后的展望20致謝21參考文獻(xiàn)22附錄221 緒論1 緒論1.1 研究的背景及意義隨著中國經(jīng)濟(jì)的迅速發(fā)展和城市化進(jìn)程的加快, 在給人們帶來快捷與方便的同時,也帶來了不少麻煩。尤其是在人口稠密的城市,用火用電的密度大,火災(zāi)的防范就變得愈發(fā)困難。萬一突發(fā)大火,隨之而來的是對居民產(chǎn)生嚴(yán)重生命傷害和財物損害。而且由于很多犯罪分子利用大多數(shù)居民防盜觀念不強(qiáng)實(shí)施違法犯罪活動,這使得居民十分憂慮自身財物安全。單片微型計(jì)算機(jī)作為微型計(jì)算機(jī)的一個重要分支,它成為今天控制領(lǐng)域、通信設(shè)備、信息處理以及日常生活中最廣泛使用的計(jì)算機(jī),其中單片機(jī)用于電子產(chǎn)品的設(shè)計(jì)是非常方便的1。為了避免火災(zāi)帶來的損失,就必須對這些情況下的火災(zāi)情形進(jìn)行報警監(jiān)測。當(dāng)前人們亟待解決的一個重要問題是對住戶密度大的居民區(qū)的火情和盜情進(jìn)行即時探測和預(yù)防警報,以便防患于未然?;诖诵枨?,自動報警系統(tǒng)在日常生活中展現(xiàn)的重要性與日俱增。溫度和煙霧監(jiān)測及遠(yuǎn)程報警系統(tǒng)就是為了更好的為人類服務(wù)而研制開發(fā)的,并且順應(yīng)人們的需求,不斷地在功能、構(gòu)造、形式各方面來不斷地進(jìn)行完善。溫度和煙霧監(jiān)測及遠(yuǎn)程報警系統(tǒng)能將火災(zāi)現(xiàn)場的信息及時、準(zhǔn)確的采集到,并通過電信號將火警信息發(fā)送給監(jiān)控中心或監(jiān)測點(diǎn),能夠最大限度的保護(hù)人類的財產(chǎn)以及生命安全。1.2 本文研究的主要內(nèi)容 本實(shí)驗(yàn)室數(shù)據(jù)采集系統(tǒng)由六個大模塊組成,它們是單片機(jī)、煙霧傳感器、溫度傳感器、鍵盤電路、顯示電路、報警電路。通過煙霧傳感器及溫度傳感器對現(xiàn)場的環(huán)境進(jìn)行實(shí)時監(jiān)測,監(jiān)測數(shù)據(jù)經(jīng)過 A/D 轉(zhuǎn)換器送入單片機(jī)進(jìn)行信號處理,根據(jù)數(shù)據(jù)分析結(jié)果確定是否報警及發(fā)送報警信息2。系統(tǒng)啟動之時,可以通過鍵盤設(shè)置溫度和煙霧濃度的上限值,顯示電路實(shí)時顯示溫度值,當(dāng)被測點(diǎn)的溫度或煙霧濃度超過設(shè)置值時,報警器開始報警,從而實(shí)現(xiàn)了對該點(diǎn)溫度和煙霧的實(shí)時監(jiān)控。2 煙霧報警系統(tǒng)總體設(shè)計(jì)方案本設(shè)計(jì)中的煙霧報警主要由硬件系統(tǒng)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)兩部分組成。硬件系統(tǒng)包括煙霧傳感器、溫度傳感器、顯示屏、AD轉(zhuǎn)換電路、按鍵輸入電路、聲光報警電路等幾部分的設(shè)計(jì),通過簡單的無源晶振電路提供時鐘,通過中斷產(chǎn)生定時采集煙霧信號和溫度信號,煙霧濃度3以及時間都會顯示在顯示屏上。系統(tǒng)中有按鍵可以進(jìn)行煙霧濃度的閾值和溫度閾值的設(shè)置。一旦煙霧濃度超過閾值且者溫度超過閾值時,報警電路就會及時產(chǎn)生刺耳的報警聲。軟件系統(tǒng)主要包括主程序、煙霧信號和溫度信號采集程序、定時中斷程序、顯示程序、閾值設(shè)置程序等。硬件系統(tǒng)部分采用四個開關(guān)來控制煙霧系統(tǒng)的工作狀態(tài),分別為:K1、切換顯示頁面;K2、增加煙霧和溫度閾值;K3、減少煙霧和溫度閾值;K4、系統(tǒng)復(fù)位。如下圖2-1所示:圖2-1:按鍵的功能說明27湖北科技學(xué)院學(xué)士學(xué)位論文硬件系統(tǒng)部分設(shè)計(jì)思路如圖2-2所示:圖2-2:硬件系統(tǒng)部分設(shè)計(jì)思路軟件系統(tǒng)部分主要通過Keil和Proteus軟件繪制仿真電路5并編寫程序進(jìn)行聯(lián)合仿真模擬。軟件系統(tǒng)主要包括主程序、信號采集程序、顯示程序、按鍵掃描程序和中斷程序。3 硬件系統(tǒng)部分設(shè)計(jì)該系統(tǒng)總體電路由AT89C51控制的單片機(jī)最小系統(tǒng), A/D轉(zhuǎn)換模塊,獨(dú)立按鍵控制電路,LCD1602液晶顯示電路,聲光報警電路共同組成6,系統(tǒng)總體設(shè)計(jì)的電路圖如圖3-1所示,下面介紹系統(tǒng)硬件中幾個模塊:圖3-1:系統(tǒng)總體設(shè)計(jì)電路圖3.1 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng).對51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)該包括:單片機(jī)、晶振電路、復(fù)位電路。下面給出一個51單片機(jī)的最小系統(tǒng)電路圖7,如圖3-2所示:51單片機(jī)最小系統(tǒng)電路介紹:1)51單片機(jī)最小系統(tǒng)復(fù)位電路的極性電容C1、C2的大小直接影響單片機(jī)的復(fù)位時間,一般采用1030uF,51單片機(jī)最小系統(tǒng)容值越大需要的復(fù)位時間越短。2)51單片機(jī)最小系統(tǒng)晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機(jī)最小系統(tǒng)晶振8的振蕩頻率直接影響單片機(jī)的處理速度,頻率越大處理速度越快。3)51單片機(jī)最小系統(tǒng)起振電容C1、C2一般采用1533pF,并且電容離晶振越近越好,晶振離單片機(jī)越近越好4)P0口為開漏輸出,作為輸出口時需加上拉電阻,阻值一般為10k。圖3-2:單片機(jī)的最小系統(tǒng)圖設(shè)置為定時器模式時,加1計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(1個機(jī)器周期等于12個振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時時間t。設(shè)置為計(jì)數(shù)器模式時,外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器9。在每個機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時,則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于檢測一個從1到0的下降沿需要2個機(jī)器周期,因此要求被采樣的電平至少要維持一個機(jī)器周期。當(dāng)晶振頻率為12MHz時,最高計(jì)數(shù)頻率不超過1/2MHz,即計(jì)數(shù)脈沖的周期要大于2 ms。3.2 A/D轉(zhuǎn)換電路在單片機(jī)應(yīng)用系統(tǒng)中,被測量對象的有關(guān)變化量,如溫度、壓力、流量、速度等非電物理量,須經(jīng)傳感器轉(zhuǎn)換成連續(xù)變化的模擬電信號(電壓或電流),這些模擬電信號必須轉(zhuǎn)換成數(shù)字量后才能在單片機(jī)10中用軟件進(jìn)行處理。實(shí)現(xiàn)模擬量轉(zhuǎn)換成數(shù)字量的器件稱為A/D轉(zhuǎn)換器(ADC)。A/D轉(zhuǎn)換器大致分有三類:一是雙積分A/D轉(zhuǎn)換器,優(yōu)點(diǎn)是精度高,抗干擾性好,價格便宜,但速度慢;二是逐次逼近型A/D轉(zhuǎn)換器,精度、速度、價格適中;三是-A/D轉(zhuǎn)換器。本文中采用的是ADC0832屬第二類,是8位A/D轉(zhuǎn)換器。通過三線接口與單片機(jī)連接,功耗低,性能價格比較高,適宜在袖珍式的智能儀器儀表中使用。ADC0832為8位分辨率A/D轉(zhuǎn)換芯片,其最高分辨可達(dá)256級,可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。芯片具有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn)11,以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件連接和處理器控制變得更加方便。通過DI數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。其主要特點(diǎn)如下:1) 8位分辨率,逐次逼近型,基準(zhǔn)電壓為5V;2) 5V單電源供電;3) 輸入模擬信號電壓范圍為05V;4) 輸入和輸出電平與TTL和CMOS兼容;5) 在250KHZ時鐘頻率時,轉(zhuǎn)換時間為32us;6) 具有兩個可供選擇的模擬輸入通道;7) 功耗低,15MW。3.2.1 ADC0832的引腳及功能芯片采用的是ADC0832,以下介紹ADC0832的引腳及功能,如圖3-3所示。圖3-3 ADC0832的引腳示意圖各引腳說明如下: CS片選端,低電平有效。 CH0,CH1兩路模擬信號輸入端。 DI兩路模擬輸入選擇輸入端。 DO模數(shù)轉(zhuǎn)換結(jié)果串行輸出端。 CLK串行時鐘輸入端。 Vcc/REF正電源端和基準(zhǔn)電壓輸入端。 GND電源地。3.2.2 單片機(jī)對ADC0832 的控制原理一般情況下ADC0832與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時并未同時有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時可以將DO和DI 并聯(lián)在一根數(shù)據(jù)線上使用。當(dāng)ADC0832未工作時其CS輸入端應(yīng)為高電平,此時芯片禁用,CLK 和DO/DI 的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時,須先將CS端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時芯片開始轉(zhuǎn)換工作,同時由處理器向芯片12時鐘輸入端CLK提供時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。在第1個時鐘脈沖到來之前DI端必須是高電平,表示啟動位。在第2、3個時鐘脈沖到來之前DI端應(yīng)輸入2位數(shù)據(jù)用于選擇通道功能,其功能項(xiàng)見表3-1。表3-1: ADC0832配置位輸入形式 配置位選擇通道CH0CH1CH0CH1差分輸入00+-01-+單端輸入10+11+如表3-1所示,當(dāng)配置位2位數(shù)據(jù)為1、0時,只對CH0 進(jìn)行單通道轉(zhuǎn)換。當(dāng)配為1、1時置2位數(shù)據(jù),只對CH1通道轉(zhuǎn)換。當(dāng)配置2進(jìn)行單位數(shù)據(jù)為0、0時,將CH0作為正輸入端IN+,CH1作為負(fù)輸入端IN-進(jìn)行輸入。當(dāng)配置2位數(shù)據(jù)為0、1時,將CH0作為負(fù)輸入端IN-,CH1 作為正輸入端IN+進(jìn)行輸入。圖3-3:ADC0832時序圖到第3個時鐘脈沖到來之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個時鐘脈沖開始由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位D7,隨后每一個脈沖DO端輸出下一位數(shù)據(jù)。直到第11個脈沖時發(fā)出最低位數(shù)據(jù)D0,一個字節(jié)的數(shù)據(jù)輸出13完成。也正是從此位開始輸出下一個相反字節(jié)的數(shù)據(jù),即從第11個時鐘脈沖輸出D0。隨后輸出8位數(shù)據(jù),到第19 個脈沖時數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。圖3-3為ADC0832時序圖。3.2.3 ADC0832連線圖ADC0809與單片機(jī)的連線圖如圖3-4,CS連接到P1.4,CLK連接到P1.5,DO、DI一起連接到P1.6,因?yàn)镈O、DI不會一起工作,一個在高電平情況下運(yùn)行,一個在低電平下運(yùn)行,這樣的連接方式可以保證它時鐘只有一種工作模式。圖3-4:ADC0832的連線圖3.3 LCD1602液晶顯示電路LCD1602A 是一種工業(yè)字符型液晶,能夠同時顯示16x02 即32個字符(16列2行)。在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計(jì)算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機(jī)的人機(jī)交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管14、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單。在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點(diǎn):(1) 由于液晶顯示器每一個點(diǎn)在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會閃爍。 (2) 液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡單可靠,操作更加方便。 (3) 液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。 (4) 相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。 引腳說明:第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VO為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作15,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第714腳:D0D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。本設(shè)計(jì)的灰度調(diào)節(jié)是采用10k的電位器,液晶顯示電路如圖3-5所示:圖3-5:液晶顯示電路3.4 按鍵電路本設(shè)計(jì)采用按鍵接低的方式來讀取按鍵,單片機(jī)初始時,為高電平,當(dāng)按鍵按下的時候,會給單片機(jī)一個低電平,單片機(jī)對信號進(jìn)行處理。單片機(jī)鍵盤有獨(dú)立鍵盤和矩陣式16鍵盤兩種:獨(dú)立鍵盤每一個I/O 口上只接一個按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤式接法程序比較復(fù)雜,但是占用的I/O少。根據(jù)本設(shè)計(jì)的需要這里選用了獨(dú)立式鍵盤接法。圖3-6:按鍵電路獨(dú)立式鍵盤的實(shí)現(xiàn)方法是利用單片機(jī)I/O口讀取口的電平高低來判斷是否有鍵按下。將常開按鍵的一端接地,另一端接一個I/O 口,程序開始時將此I/O口置于高電平,平時無鍵按下時I/O口保護(hù)高電平。當(dāng)有鍵按下時,此I/O 口與地短路迫使I/O 口為低電平。按鍵釋放后,單片機(jī)內(nèi)部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動作了。在用單片機(jī)對鍵盤處理的時候涉及到了一個重要的過程,那就是鍵盤的去抖動。這里說的抖動是機(jī)械的抖動,是當(dāng)鍵盤在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正?,F(xiàn)象,并不是我們在按鍵時通過注意可以避免的。這種抖動一般10200毫秒之間,這種不穩(wěn)定電平的抖動時間對于人來說太快了,而對于時鐘是微秒的單片機(jī)而言則是慢長的。硬件去抖動就是用部分電路對抖動部分加之處理,軟件去抖動不是去掉抖動,而是避抖動部分的時間,等鍵盤穩(wěn)定了再對其處理。所以這里選擇了軟件去抖動,實(shí)現(xiàn)法是先查尋按鍵當(dāng)有低電平出現(xiàn)時立即延時10200毫秒以避開抖動(經(jīng)典值為20毫秒),延時結(jié)束后再讀一次I/O 口的值,這一次的值如果為1 表示低電平的時間不到10200 毫秒,視為干擾信號。當(dāng)讀出的值是0時則表示有按鍵按下,調(diào)用相應(yīng)的處理程序。3.5聲光報警電路本文用LED燈進(jìn)行燈光指示。LED是一種發(fā)光二極管,能夠?qū)㈦娔苻D(zhuǎn)化為可見光的固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。圖3-7:聲光報警電路采用蜂鳴器進(jìn)行的聲音報警,蜂鳴器采用直流電壓供電。蜂鳴器驅(qū)動電路一般都包含以下幾個部分:一個三極管、一個蜂鳴器、一個限流電阻。蜂鳴器為發(fā)聲元件,在其兩端施加直流電壓(有源蜂鳴器)或者方波(無源蜂鳴器)就可以發(fā)聲,其主要參數(shù)是外形尺寸、發(fā)聲方向、工作電壓、工作頻率、工作電流、驅(qū)動方式(直流/方波)等。這些都可以根據(jù)需要來選擇。本設(shè)計(jì)采用有源蜂鳴器。三極管Q1起開關(guān)作用,其基極的低電平使三極管飽和導(dǎo)通,使蜂鳴器發(fā)聲;而基極高電平則使三極管關(guān)閉,蜂鳴器停止發(fā)聲。4 軟件系統(tǒng)部分設(shè)計(jì)4.1 編程軟件的介紹Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。我們就是利用Keil C51軟件依據(jù)程序流程圖進(jìn)行C語言的編程,從而控制硬件實(shí)驗(yàn)所需要的功能。4.2 程序流程圖4.2.1 主程序流程圖主程序的功能主要是完成初始化和相應(yīng)的子程序的調(diào)用,其中包括寄存器和標(biāo)志位初始化、定時器、計(jì)數(shù)器的賦初值以及A/D轉(zhuǎn)換初始化,按鍵擴(kuò)展初始化,中斷處理初始化等。 主程序流程圖圖4-1所示:圖4-1:主程序流程示意圖4.2.2 數(shù)據(jù)采集子程序流程圖A/D轉(zhuǎn)換子程序流程圖如下圖4-2所示。ADC0832初始化后,把傳感器采集到的信號通過外部中斷引腳引入單片機(jī),然后進(jìn)行數(shù)據(jù)處理,處理后的數(shù)據(jù)送到緩沖器,準(zhǔn)備給下一程序的調(diào)用。該子程序?qū)?通道采集到的0-5V的模擬信號轉(zhuǎn)換為對應(yīng)的數(shù)字量,轉(zhuǎn)化為單片機(jī)能讀取的信息量,然后將對應(yīng)數(shù)值存儲到內(nèi)存單元。圖4-2:數(shù)據(jù)采集子程序流程圖4.2.3 LCD程序流程圖單片機(jī)在主程序中完成對LCD進(jìn)行初始化,使其LCD能順利進(jìn)入正常工作狀態(tài)。程序運(yùn)行時首先判斷LCD是否處于忙碌狀態(tài),如果是,則繼續(xù)不斷掃描判斷,若不是,則將經(jīng)ADC轉(zhuǎn)換后計(jì)算出來的結(jié)果,通過輸出指令輸出,并判斷計(jì)算出的結(jié)果處于哪種狀態(tài),將狀態(tài)輸出供操作者閱讀。流程圖如圖4-3所示:圖4-3:LCD流程圖4.3 軟件編譯選擇CPU型號窗口中選擇CPU生產(chǎn)廠家及芯片型號,這里選擇的是AT89C51芯片,程序代碼編寫完后需要編譯、鏈接、生成目標(biāo)代碼,然后進(jìn)行硬件調(diào)試或模擬仿真,編譯代碼可以點(diǎn)擊或鍵盤的快捷鍵F7。編譯后的結(jié)果如圖4-4所示。圖4-4編譯后的結(jié)果顯示編譯軟件后,要對代碼進(jìn)行下載到AT89C51單片機(jī)中,所編寫的程序見附錄。4.4. Proteus仿真模擬Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器。其仿真界面如圖4-5所示:圖4-5 Proteus軟件仿真界面把完整的電路圖在Proteus上畫好后,導(dǎo)入已經(jīng)寫好的程序,便可以得到相應(yīng)的仿真結(jié)果圖。煙霧報警系統(tǒng)仿真結(jié)果如圖4-6所示:圖4-6:煙霧報警器系統(tǒng)仿真模擬結(jié)果顯示5 實(shí)物的調(diào)試與檢測5.1 系統(tǒng)軟件調(diào)試打開軟件,將寫好的調(diào)試程序代碼在計(jì)算機(jī)上輸入、匯編、修改、產(chǎn)生代碼,形成輸入輸出口實(shí)驗(yàn).HEX文件。先把線路連接好,并將調(diào)試程序代碼(注釋電壓到酒精濃度轉(zhuǎn)換關(guān)系代碼燒寫到單片機(jī)上后,接上+5V電源開始調(diào)試。先進(jìn)行每一個模塊程序的調(diào)試,看看單一的模塊程序能不能實(shí)現(xiàn)出來,如果不能實(shí)現(xiàn)出來,就進(jìn)行程序和電路圖的檢查,查出問題所在,從而進(jìn)行修改。當(dāng)每一個模塊程序的調(diào)試能實(shí)現(xiàn)出來,在把整個程序?qū)耄M(jìn)行整體調(diào)試。在調(diào)試中,采集溫度數(shù)據(jù)和煙霧濃度數(shù)據(jù),采用100HZ的頻率采集數(shù)據(jù),每采集一秒鐘對數(shù)據(jù)進(jìn)行取平均數(shù),然后再與預(yù)先設(shè)置的閾值進(jìn)行比較,到達(dá)報警設(shè)置值的話聲光報警電路就會進(jìn)行報警。然而再也不能進(jìn)行下次數(shù)據(jù)采集檢查,必須重啟電源才能進(jìn)行下一次檢查。經(jīng)對程序的檢查,看出沒有數(shù)據(jù)采集的循環(huán)部分,對程序修改后,能實(shí)現(xiàn)數(shù)據(jù)連續(xù)檢查功能了。5.2 系統(tǒng)硬件的調(diào)試調(diào)試過程中首先要檢測的就是硬件電路的設(shè)計(jì)原理是否正確,焊接前對電阻、電容的量值要進(jìn)行測量、篩選,選擇與電路中參數(shù)值一致的元器件,在選擇芯片時,要注意芯片與設(shè)計(jì)要求的型號、規(guī)格和安裝是否一致。其次在焊接好電路之后,認(rèn)真檢查電路的焊接情況,主要看各個端口是否連接正確以及有些元器件的正負(fù)極是否接反,。這次采用的是分塊調(diào)試的方法,控制電路以及單片機(jī)控制電路進(jìn)行調(diào)試。在對每個模塊的進(jìn)行調(diào)試過程中又采用了由局部到整體,由簡單到復(fù)雜的調(diào)試方法,最后再將各個模塊總和成一個整體。在調(diào)試過程中遇到的問題有:(1)對數(shù)模轉(zhuǎn)換芯片的不了解,采樣電路的設(shè)計(jì)走了很大的彎路;(2)對煙霧報警器的沒有使用經(jīng)驗(yàn),所以寫程序的時候邏輯不是很清晰。(3)硬件電路的焊接上遇到很大問題,焊接完后什么都不反應(yīng),仔細(xì)檢查后發(fā)現(xiàn)把單片機(jī)的一些端口接錯位了,所以在焊接過程中一定要非常的認(rèn)真仔細(xì);(4)在調(diào)節(jié)液晶顯示屏亮度的時候,剛開始沒有把電位器調(diào)到正確的位置,使得液晶顯示屏的顯示數(shù)值很不清晰有時甚至沒有顯示,經(jīng)過多次嘗試調(diào)整后,使得液晶的顯示面變得清晰可加。5.3 實(shí)物展示與結(jié)論分析經(jīng)過不懈地努力最終完成了煙霧報警系統(tǒng)的實(shí)物制作,其實(shí)物圖如下所示:圖5-1:煙霧報警器系統(tǒng)實(shí)物展示圖由于系統(tǒng)硬件較復(fù)雜,硬件電路裝配、焊接完成后,可能不能正常工作。為了方便調(diào)試,采用分塊調(diào)試的方法。在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成芯片的損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在4.5V5.5V之間屬正常范圍,待全部檢查正確完后方可進(jìn)行通電試。通電試驗(yàn)成功后,要對不同響應(yīng)時間進(jìn)行測試,并將測試結(jié)果與估值進(jìn)行對比,最后才能得出試驗(yàn)的可靠性。6 總結(jié)與展望6.1 論文工作總結(jié)本論文主要論述基于單片機(jī)AT89C51的煙霧報警器的軟、硬件設(shè)計(jì)的方法。利用C語言程序編程,通過Proteus軟件進(jìn)行仿真模擬,實(shí)現(xiàn)了煙霧報警器的利用中斷定時采集數(shù)據(jù),能重新設(shè)定時間參數(shù)、有LED顯示和報警提示等各項(xiàng)功能。本煙霧報警器設(shè)計(jì)可以使用多種風(fēng)格的程序來實(shí)現(xiàn),主要是對按鍵輸入和顯示輸出的處理,本設(shè)計(jì)風(fēng)格對按鍵輸入和顯示輸出處理是使用散轉(zhuǎn)的方式處理的,散轉(zhuǎn)方式的處理易于地址化,模塊化,統(tǒng)一化和擴(kuò)展。其中主要有以下優(yōu)點(diǎn):(1) 采用1602液晶顯示屏,顯示頁面畫質(zhì)高,操作更加方便簡單可靠;(2) 既有聲音的報警,也有閃光的報警,程序屏幕也會顯示,多重保護(hù)機(jī)制,顯得更加的可靠;(3)模塊化的C語言程序,清晰易懂。6.2 今后的展望本文僅僅完成了煙霧報警系統(tǒng)的設(shè)計(jì)和實(shí)物的制作,今后考慮使用更加清晰的液晶屏,例如LCD12864,也可將系統(tǒng)做的更加的可靠,使用PCB印刷電路板,同時考慮其他的報警功能,也可以將它整合到智能家居系統(tǒng)中,或者考慮在重要的位置聯(lián)網(wǎng)監(jiān)控等方式。 致謝致謝本文得以完成,首先要感謝我的恩師,本論文的全部研究工作都是恩師的精心指導(dǎo)和嚴(yán)格要求下完成的。恩師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和淵博的學(xué)知對我的一生都會有重要的影響。在論文工作期間,無論是學(xué)習(xí)上,還是生活中,老師都給我以耐心的教誨和極大的幫助。恩師踏實(shí)嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng),淵博的學(xué)識,高效的辦事效率,忘我的工作精神,讓我獲益匪淺。尤其是他積極開拓不斷進(jìn)取的精神,更是我終生學(xué)習(xí)的楷模。 老師的平易近人也使我能隨時與他進(jìn)行溝通,提出開發(fā)過程中遇到的困難并得到解決。本課題能夠順利完成與老師的幫助和指導(dǎo)是分不開的,在此向他表示最誠摯的謝意。 感謝我的家人,正是她們的大力支持才使我能潛心于本課題的研究,對我完成學(xué)業(yè)起了重大的推動作用。 對在百忙之中抽出時間評閱本論文的專家學(xué)者表示真誠的感謝!向所有關(guān)心,支持和幫助過我的老師、同學(xué)、親人和朋友表示謝意! 在即將完成學(xué)業(yè)之際,我還要衷心地感謝我的母校!附錄參考文獻(xiàn)1楊華博,趙靜雅,徐江紅. 煙霧溫度火災(zāi)報警器的設(shè)計(jì)J. 電腦知識與技術(shù),2016,(34):272-273.2徐妙婧,祖一康. 基于單片機(jī)的煙霧檢測報警系統(tǒng)設(shè)計(jì)J. 電腦知識與技術(shù),2016,(35):276-277.3于博,歐陽宏基. 基于STC89C52單片機(jī)的煙霧報警器軟件設(shè)計(jì)J. 軟件工程,2016,(11):14-16.4田亞立,梁波,尹少榮,杜佳敏. 基于單片機(jī)的煙霧報警系統(tǒng)設(shè)計(jì)J. 電子測試,2015,(21):1-2.5李澎. 基于單片機(jī)的校園安防系統(tǒng)D.吉林大學(xué),2015.6昝杰. 溫度和煙霧監(jiān)測及遠(yuǎn)程報警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)D.電子科技大學(xué),2015.7齊斌. 溫度和煙霧監(jiān)測及遠(yuǎn)程報警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)D.電子科技大學(xué),2015.8程望斌,劉凌,楊陳明,李慧,李璇. 基于單片機(jī)的火災(zāi)煙霧報警系統(tǒng)設(shè)計(jì)J. 湖南理工學(xué)院學(xué)報(自然科學(xué)版),2014,(03):41-44.9李曉麗. 基于無線傳感器網(wǎng)絡(luò)的智慧家庭系統(tǒng)設(shè)計(jì)D.曲阜師范大學(xué),2014.10劉瑞濤. 基于單片機(jī)控制的無線煙霧檢測報警系統(tǒng)J. 黑龍江科技信息,2014,(08):18+20.11孫貫華. 基于光電感煙的火災(zāi)探測報警器的設(shè)計(jì)與實(shí)現(xiàn)D.東北大學(xué),2013.12王毅然. 淺析單片機(jī)在煙霧報警系統(tǒng)的運(yùn)用J. 電子制作,2013,(10):48.13洪云,鄒靈敏. 基于單片機(jī)的煙霧監(jiān)控及短信報警系統(tǒng)設(shè)計(jì)J. 電子制作,2013,(05):51.14楊光. SMS報警管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)D.電子科技大學(xué),2013.15趙文藝. 基于單片機(jī)的實(shí)驗(yàn)室數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)D.北方工業(yè)大學(xué),2012.16張坤. 基于單片機(jī)的倉庫防火預(yù)警系統(tǒng)研究D.河北農(nóng)業(yè)大學(xué),2011.附錄/程序頭函數(shù)#include /宏定義#define uint unsigned int#define uchar unsigned char#define Data_ADC0809 P1/管腳聲明sbit Feng = P30;/ADC0809sbit ST=P33;sbit EOC=P34;sbit OE=P32;/按鍵sbit Key1=P35;sbit Key2=P36;sbit Key3=P37;/顯示數(shù)組 0-9+Fuchar Data_=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x71,0 x3f;sbit Wei1 = P27;sbit Wei2 = P26;sbit Wei3 = P25;sbit Wei4 = P24;/函數(shù)聲明extern uchar ADC0809();void Display(uchar X,uchar Data);void delay(uint t);uchar temp=0;/蜂鳴器變量uchar FF=10;/顯示模式uchar Mode=0;uchar p;void main()while(1)/正常模式if(Mode=0)/讀取AD值temp=ADC0809();for(p=0;pFF)Feng=0;elseFeng=1;/調(diào)整模式elseDisplay(1,FF);/功能鍵if(Key3=0)Feng=0;delay(100);while(Key3=0)if(Mode=0)Display(0,temp); elseDisplay(1,FF); if(Mode=0)Mode=1;elseMode=0;Feng=1;/增加if(Key2=0&Mode=1)Feng=0;delay(100);while(Key2=0)Display(1,FF); FF+;if(FF=251) FF=250; Feng=1;/減少if(Key1=0&Mode=1)Feng=0;delay(100);while(Key1=0)Display(1,FF); FF-;if(FF=0 xff) FF=0; Feng=1;/ADC0809讀取信息uchar ADC0809()uchar temp_=0 x00;/初始化高阻太OE=0;/轉(zhuǎn)化初始化ST=0;/開始轉(zhuǎn)換ST=1;ST=0;/外部中斷等待AD轉(zhuǎn)換結(jié)束while(EOC=0)/讀取轉(zhuǎn)換的AD值OE=1;temp_=Data_ADC0809;OE=0;return temp_;/延時void delay(uint t)uint i,j;for(i=0;it;i+)for(j=0;j10;j+);/顯示 X表示狀態(tài) Data表示數(shù)據(jù)void Display(uchar X,uchar Data)Wei1=1;Wei2=1;Wei3=1;Wei4=1;P0=0 xff;/正常模式if(X=0)P0=Data_11;/非正常elseP0=Data_10;Wei1=0;Wei2=1;Wei3=1;Wei4=1;delay(10);Wei1=1;Wei2=1;Wei3=1;Wei4=1;P0=Data_Data/100;Wei1=1;Wei2=0;Wei3=1;Wei4=1;delay(10);Wei1=1;Wei2=1;Wei3=1;Wei4=1;P0=Data_Data/10%10;Wei1=1;Wei2=1;Wei3=0;Wei4=1;delay(10);Wei1=1;Wei2=1;Wei3=1;Wei4=1;P0=Data_Data%10;Wei1=1;Wei2=1;Wei3=1;Wei4=0;delay(10);Wei1=1;Wei2=1;Wei3=1;Wei4=1;