久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 41580|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于STC89C52的MQ-2火災(zāi)自動報警系統(tǒng)的設(shè)計與開發(fā)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:424012 發(fā)表于 2018-11-10 12:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摘要: 隨著社會和經(jīng)濟的發(fā)展,防火工作越來越重要,但是目前國內(nèi)的許多研發(fā)都側(cè)重于大型場所的火災(zāi)報警。因此,有必要研制一種結(jié)構(gòu)簡單、經(jīng)濟實用的家庭煙霧報警器以適應(yīng)市場的需求。基于供家庭使用的煙霧報警器應(yīng)該具備的基本要求和功能,設(shè)計了一種比較適合的煙霧報警器。

本設(shè)計以傳感器和單片機作為煙霧報警器設(shè)計的核心器件,配合其它器件即可實現(xiàn)聲光報警、自動排煙換氣和消防滅火等功能。設(shè)計中單片機選用STC89C52作為控制器件,傳感器選用MQ-2型半導(dǎo)體可燃氣體敏感元件煙霧傳感器實現(xiàn)煙霧的檢測。煙霧報警器主要由煙霧信號采集及前置放大電路、模數(shù)轉(zhuǎn)換電路、單片機控制電路、顯示電路、聲光報警電路和安全保護電路構(gòu)成,設(shè)計合理、簡單易懂、價格低廉,使單片機在煙霧報警系統(tǒng)的控制中得到充分應(yīng)用,具有一定的實用價值。論文主要針對煙霧報警系統(tǒng)中的各個組成部分及功能進行了詳細的介紹和說明,并對其主控電路和外圍設(shè)備電路之間的接口連接方式,以及系統(tǒng)軟件設(shè)計進行了重點的分析和講解。

目錄
1 緒論
1.1 選題背景與研究現(xiàn)狀            
2 設(shè)計思路與方案的選擇
2.1 整體設(shè)計思路
2.2 設(shè)計方案的選擇
2.2.1 煙霧檢測傳感器選型
2.2.3 溫度采集模塊            
3 系統(tǒng)概述與硬件方案的設(shè)計
3.1 系統(tǒng)總體框架
3.2 電源模塊
3.3 單片機最小系統(tǒng)
3.4 單片機的時鐘電路與復(fù)位電路設(shè)計
3.5 OLED顯示模塊
3.6 聲音報警模塊
3.7 按鍵控制模塊
3.8 DS18B20接口電路
4 系統(tǒng)軟件方案的設(shè)計
4.1系統(tǒng)主程序設(shè)計及流程圖
5 系統(tǒng)調(diào)試、測試與分析
5.1 硬件調(diào)試
5.2 軟件調(diào)試
6 結(jié)束語
致謝
參考文獻
附錄1 系統(tǒng)部分程序:
附錄2 系統(tǒng)原理圖:
附錄3 系統(tǒng)PCB圖:
附錄4 系統(tǒng)實物圖:

1 緒論   
1.1 選題背景與研究現(xiàn)狀

隨著科技的發(fā)展,越來越多的火災(zāi)隱患潛伏在工業(yè)生產(chǎn)和人們的日常生活中。火災(zāi)一旦發(fā)生便是一場巨大的災(zāi)難,很有可能造成巨大的經(jīng)濟損失,甚至危及個人的生命安全。在早期時候,防止和發(fā)現(xiàn)火災(zāi),保護人身和財產(chǎn)安全,減少經(jīng)濟損失,是必須要做的一個重要事情。

所以為了減少這類事故的發(fā)生,就必須對煙霧進行現(xiàn)場實時檢測,采用先進可靠的安全檢測儀表,用來嚴(yán)密監(jiān)測環(huán)境中煙霧的濃度,采取有效措施,及早發(fā)現(xiàn)事故隱患,避免事故發(fā)生,才能確保工業(yè)安全和家庭生活安全。因此,研究煙霧的檢測方法與研制煙霧報警器就成為傳感器技術(shù)發(fā)展領(lǐng)域的一個重要課題。   

國外從20世紀(jì)30年代開始研究及開發(fā)煙霧傳感器,且發(fā)展迅速,一方面是因為人們安全意識增強,對環(huán)境安全性和生活舒適性要求提高;另一方面是因為傳感器市場增長受到政府安全法規(guī)的推動。據(jù)有關(guān)統(tǒng)計,美國1996年~2002年煙霧傳感器年均增長率為27%~30%[1]。隨著傳感器生產(chǎn)工藝水平逐步提高,傳感器日益小型化、集成度不斷增大,使得煙霧檢測儀器的體積也逐漸變小,提高了煙霧檢測儀器的便攜性,更加利于生產(chǎn)、運輸及市場推廣。

1963年5月,日本開發(fā)完成第一臺接觸燃燒式家用燃氣泄漏報警器,次年12月其改良產(chǎn)品問世,改良的報警器可以檢測燃氣、一氧化碳等氣體,可以安裝在浴室或者采用集中監(jiān)視[2]。              

我國在70年代初期就已經(jīng)開始了對煙霧報警器研究,一方面是由于社會的需要,另外一方面也為了減少國家的經(jīng)濟損失,在生產(chǎn)的過程中,生產(chǎn)型號多樣化、品種也比較齊全,應(yīng)用范圍從開始單一的煉油系統(tǒng)到后面擴展到幾乎所有危險作業(yè)環(huán)境的各種類型報警器,囊括的種類極其之多,產(chǎn)品數(shù)量也在不斷增加。不過從發(fā)展的角度來看,我們大都是在引進國外先進的傳感器技術(shù),并且在國外先進的生產(chǎn)工藝基礎(chǔ)之上,對其進行研究從而大力開發(fā)屬于自己的特色火災(zāi)報警器。隨著國家的大力發(fā)展,近年來,我國在煙霧選擇性和產(chǎn)品穩(wěn)定性上都有很大進步[3]。

2 設(shè)計思路與方案的選擇   
2.1 整體設(shè)計思路

   本次設(shè)計是基于STC89C52的煙霧報警器,能夠檢測環(huán)境中的煙霧濃度,并具有報警功能。該報警系統(tǒng)的最基本組成部分應(yīng)包括:信號采集模數(shù)轉(zhuǎn)換電路、單片機控制電路、字符顯示電路、聲光報警電路和安全保護電路等部分[2]。設(shè)計的煙霧報警器具有顯示報警狀態(tài),為適應(yīng)家庭和工業(yè)等場所對可燃性易爆煙霧安全性等要求。報警器以STC89C52單片機為控制核心,延時的工作方式,選用MQ-2半導(dǎo)體氣體煙霧傳感器,用來采集煙霧濃度信息,配合外圍電路以構(gòu)成煙霧報警系統(tǒng),從而達到自己設(shè)計的目的。

本設(shè)計對系統(tǒng)進行一個整體規(guī)劃,還有結(jié)構(gòu)設(shè)計,以STC89C52單片機為中央處理器,對硬件電路進行設(shè)計和改進,使其功能更加完善。系統(tǒng)模塊分為軟件和硬件兩個部分。系統(tǒng)硬件電路主要分為數(shù)碼管顯示電路、狀態(tài)指示燈電路、聲音報警電路、數(shù)據(jù)收集等四大部分。 系統(tǒng)的軟件編制的分類,按照軟件實現(xiàn)的功能,主要分為主程序、報警子程序、初始化子程序、報警限值設(shè)置子程序、濃度顯示子程序等程序內(nèi)容。在程序的編寫過程中,同時又加入了詳細的文字注釋,以便于后期的修改與維護。

2.2 設(shè)計方案的選擇    2.2.1 煙霧檢測傳感器選型

1煙霧傳感器內(nèi)部結(jié)構(gòu)圖

煙霧傳感器是測量裝置和控制系統(tǒng)的首要環(huán)節(jié)。而煙霧報警器的信號采集由煙霧傳感器負責(zé)。煙霧傳感器能夠?qū)怏w的種類及其濃度有關(guān)的信息轉(zhuǎn)換為電信號,根據(jù)這些電信號的強弱就可以獲得與待測氣體在環(huán)境中存在的情況有關(guān)的信息,從而達到檢測、監(jiān)控、報警的功能[4]。可以說,沒有精確可靠的傳感器,就沒有精確可靠的自動檢測、控制和報警系統(tǒng)。煙霧傳感器作為報警器中不可缺少的核心器件,它決定了所采集的煙霧濃度信號的準(zhǔn)確性和可靠性,煙霧傳感器內(nèi)部結(jié)構(gòu)如圖1所示[5]。

方案一:接觸燃燒式傳感器。當(dāng)易燃煙霧接觸這種被催化物覆蓋的傳感器表面時會發(fā)生氧化反應(yīng)而燃燒。接觸燃燒式氣體傳感器的檢測元件一般為鉑金屬絲(也可表面涂鉑、鈀等稀有金屬催化層),使用時對鉑絲通以電流,保持300℃~400℃的高溫,此時若與可燃性氣體接觸,可燃性氣體就會在稀有金屬催化層上燃燒,因此鉑絲的溫度會上升,鉑絲的電阻值也上升;通過測量鉑絲的電阻值變化的大小,就知道可燃性氣體的濃度。使用接觸燃燒式傳感器,其最大的缺點是探頭很容易發(fā)生阻緩和中毒現(xiàn)象。一般在連續(xù)使用兩個月后應(yīng)對該傳感器進行維護。這無形中加大了工作人員的工作量,同時增加了報警器的維護成本[6]。

方案二:半導(dǎo)體煙霧傳感器(半導(dǎo)體氣敏傳感器)半導(dǎo)體煙霧傳感器包括用氧化物半導(dǎo)體陶瓷材料作為敏感體制作的煙霧傳感器,以及用單晶半導(dǎo)體器件制作的煙霧傳感器。半導(dǎo)體煙霧傳感器是利用氣體在半導(dǎo)體表面的氧化和還原反應(yīng)導(dǎo)致敏感元件阻值變化而制成的。按照敏感機理分類,半導(dǎo)體煙霧傳感器可分為電阻式和非電阻式。當(dāng)半導(dǎo)體接觸到氣體時,半導(dǎo)體的電阻值將發(fā)生變化,利用傳感器輸出端阻值的變化來測定或控制氣體的有關(guān)參數(shù),這種類型的傳感器稱為電阻式半導(dǎo)體氣敏傳感器;當(dāng)MOS場效應(yīng)管在接觸到氣體時,場效應(yīng)管的電壓將隨周圍氣體狀態(tài)的不同而發(fā)生變化,利用這種原理制成的傳感器被稱為非電阻式半導(dǎo)體氣敏傳感器[7]。

自1962年半導(dǎo)體金屬氧化物煙霧傳感器問世以來,由于具有靈敏度高、響應(yīng)快、輸出信號強、耐久性強、結(jié)構(gòu)簡單、體積小、維修方便、價格便宜等諸多優(yōu)點,得到了廣泛的應(yīng)用。但是其最大的缺點就是選擇性較差。該傳感器己成為世界上產(chǎn)量最大、使用最廣的煙霧傳感器之一。

方案三:離子感煙傳感器

離子感煙傳感器對于火災(zāi)初起和陰燃階段的煙霧氣溶膠檢測非常有效,可測煙霧粒徑范圍為0.03um-10um。它在內(nèi)外電離室里面有放射源镅241。由于它能使兩極板間空氣分子電離為正、負離子,使電極之間原來不導(dǎo)電的空氣具有導(dǎo)電性。在正常的情況下,內(nèi)外電離室的電流、電壓都是穩(wěn)定的。當(dāng)火災(zāi)發(fā)生時,煙霧粒子進入電離室后,電力部分(區(qū)域)的正離子和負離子被吸附到煙霧粒子上,使正、負離子相互中和的概率增加,從而將煙霧粒子濃度大小以電流變化量大小表示出來,實現(xiàn)對火災(zāi)參數(shù)的檢測。

第四種方案:光電式感煙傳感器

光電式感煙傳感器包含三個部分:光源、光敏元件和電子開關(guān)。在正常的情況下,平常光源發(fā)出的光,它會通過透鏡照射到光敏元件上,這個時候如果沒有什么特殊情況,電路就會保持正常。但是一旦有煙霧從中阻隔光的照射,就會導(dǎo)致到達光敏元件上的光減少,這個時候光敏元件就把光強的變化轉(zhuǎn)化成電的變化,在火災(zāi)產(chǎn)生的初期利用光散射原理對煙霧進行探測,并及時發(fā)出報警信號。在報警的同時,按照光源不同,又可分為4種,其中包括一般光電式、激光光電式、紫外光光電式和紅外光光電式。

光電式感煙探測器發(fā)展的速度非常快,種類也在不斷增多,除了在大型建筑物內(nèi)部應(yīng)用之外,還特別適用于電氣火災(zāi)危險性較大的場所,如儀器儀表室、隧道、計算機房和電纜溝等處。但是從另一個角度來看,比如說就其功能而言,它在火災(zāi)發(fā)生的早期也能實現(xiàn)報警功能。

有時候根據(jù)報警器檢測煙霧種類的不同要求,在使用條件的各種考慮下,半導(dǎo)體煙霧傳感器對于各種場合都比較適合,在眾多煙霧傳感器的應(yīng)用特性的對比之下,發(fā)現(xiàn)半導(dǎo)體煙霧傳感器的優(yōu)點更加突出。比如靈敏度高、響應(yīng)快、體積小、結(jié)構(gòu)簡單等優(yōu)良特性,而且還兼具使用方便、價格便宜等優(yōu)點,并且在報警的過程中,不具有其他傳感器所具備的缺陷,比如探頭阻緩及中毒現(xiàn)象,而且在維護成本方面,也是比較低廉的,因而得到廣泛應(yīng)用。因此,本設(shè)計中的煙霧傳感器采用方案2,選用MQ-2半導(dǎo)體氣體煙霧傳感器[8]。

2.2.2 單片機的選型

單片機是煙霧自動報警系統(tǒng)最關(guān)鍵的一部分,并且具有多種功能,它可以用來接收火災(zāi)信號,當(dāng)接收到信號之后,就會啟動報警裝置顯示,然后執(zhí)行相應(yīng)的報警。在單片機實現(xiàn)的控制功能中,對單片機的運算速度具有較高的要求,使檢測人員和用戶在報警器系統(tǒng)正常工作時能夠及時地觀測到實時的煙霧濃度等級,并進行相應(yīng)處理。同時,在滿足報警器系統(tǒng)設(shè)計的計算速度要求之后,在接口功能要求相同的同類型單片機中,還要考慮選擇價格低廉且體積輕巧的機型,這是為了建立在報警器的精確性、可靠性及抗干擾性的基礎(chǔ)之上,還要能夠考慮成本能夠足夠的低廉[9]。

由于單片機技術(shù)在各個領(lǐng)域里面應(yīng)用的越來越廣泛,所以世界上許多集成電路生產(chǎn)廠家相繼推出了各種類型的單片機,在眾多類型的單片機之中,MCS系列單片機以其成熟的技術(shù)、優(yōu)越的性能、高可靠性和高性能價格比,迅速占領(lǐng)了工業(yè)測控、自動化工程應(yīng)用等大多數(shù)主流市場,成為國內(nèi)單片機應(yīng)用領(lǐng)域中的翹楚。其中,51系列單片機有一些顯著的優(yōu)點,比如價錢便宜,I/O口多,程序空間大。因此,在測控操作系統(tǒng)中,使用51系列單片機是最理想的選擇,因此本次畢業(yè)設(shè)計采用STC89C52作為設(shè)計用的單片機[10]。

STC89C52是一種高性能、低功耗CMOS8位微控制器,使用高密度非易失性存儲器技術(shù)制造,在兼容性方面,工業(yè)80C51產(chǎn)品指令和引腳完全兼容,并且具有8K可編程Flash存儲器。片上Flash適于常規(guī)編程器,亦允許程序存儲器在線可編程。在單芯片上,擁有系統(tǒng)可編程Flash和靈巧的8 位CPU,因為具備這些條件,STC89C52可以為眾多嵌入式控制應(yīng)用系統(tǒng)提供超有效、高靈活的解決方案[10]。STC89C52還具備以下標(biāo)準(zhǔn)功能:256字節(jié)RAM,32 位I/O 口線,8k字節(jié)Flash定時器,2個數(shù)據(jù)指針,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,三個16位定時器/計數(shù)器,片內(nèi)晶振及時鐘電路。另外,STC89C52可降低0Hz 靜態(tài)邏輯操作,并且支持2種軟件可選擇節(jié)電模式。在空閑模式條件下,CPU開始停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,振蕩器被凍結(jié),RAM內(nèi)容被保存,單片機停止一切工作,直到下一個硬件或中斷復(fù)位為止。這是一個以單片機為中心的模塊,把程序代碼燒進去以后,然后在外圍接上振蕩電路、復(fù)位電路、LED顯示電路、LED顯示電路、報警電路等子模塊[11]。

2.2.3 溫度采集模塊

方案1:在測溫電路中采用PT100作為溫度傳感器。PT100傳感器是利用鉑電阻的特性來進行測溫的,鉑電阻具有這樣的特性,它的阻值隨溫度變化而變化、并呈一定函數(shù)關(guān)系的特性,并且PT100傳感器具有抗振動、穩(wěn)定性好、準(zhǔn)確度高、耐高壓等優(yōu)點。但它也具有一些缺點,就是使用起來比較復(fù)雜。

方案2:采用DS18B20作為本次設(shè)計的溫度傳感器。DS18B20的數(shù)字溫度輸出通過 “ 一線 ” 總線( 1-Wire是一種特殊的數(shù)字信號總線協(xié)議,它將獨特的信號線和電源線復(fù)合在一起,僅使用一條口線;每個芯片編碼都是唯一的,支持聯(lián)網(wǎng)尋址、還有零功耗等方面,是總線之中所需硬件連線最少的一種)這種獨特的方式,可以使多個 DS18B20方便地組建成傳感器網(wǎng)絡(luò),為整個測量系統(tǒng)的建立和組合提供了更大可能性。它在傳輸距離、轉(zhuǎn)換時間、測溫精度、分辨率等方面相較于其他溫度傳感器有了更大的進步,相對于用戶來講使用更方便,而且效果也更加令人滿意[12]。

通過比較之后得出,DS18B20可以直接輸出數(shù)字溫度值,不需要校正,是比較理想的選擇,因此最后決定選擇方案2。

3 系統(tǒng)概述與硬件方案的設(shè)計
3.1 系統(tǒng)總體框架

煙霧報警器是能夠檢測環(huán)境中的煙霧濃度,并具有報警功能的儀器。該報警系統(tǒng)的最基本組成部分應(yīng)包括:信號采集模數(shù)轉(zhuǎn)換電路、單片機控制電路、字符顯示電路、聲光報警電路和安全保護電路等部分組成。

為適應(yīng)家庭和工業(yè)等場所對可燃性易爆煙霧安全性要求,設(shè)計的煙霧報警器具有顯示報警狀態(tài)。報警器采用延時的工作方式,煙霧檢測報警器以STC89C52單片機為控制核心,選用MQ-2半導(dǎo)體氣體煙霧傳感器采集煙霧濃度信息,配合外圍電路構(gòu)成煙霧報警系統(tǒng)。本設(shè)計包括硬件和軟件設(shè)計兩個部分。

從設(shè)計的要求來分析該設(shè)計須包含如下結(jié)構(gòu):煙霧檢測部分、STC89C52單片機主控部分、報警部分,AD采集四大部分。電路總體設(shè)計框圖如圖2所示:

2總體設(shè)計框圖

處理器采用51系列單片機STC89C52。整個系統(tǒng)是在系統(tǒng)軟件控制下工作的。設(shè)置在監(jiān)測點上的煙霧檢測探頭將檢測到的煙霧變換成電信號,送出模擬信號,給AD采集電路采集。在單片機內(nèi),經(jīng)軟件查詢、識別判決等環(huán)節(jié)實時發(fā)出煙霧報警狀態(tài)控制信號。驅(qū)動蜂鳴器及報警指示燈報警[13]。

3.2 電源模塊

3電源模塊原理圖

由于本系統(tǒng)采用電池供電,考慮了如下幾種方案為系統(tǒng)供電。

方案1:采用5V蓄電池為系統(tǒng)供電。蓄電池具有較強的電流驅(qū)動能力以及穩(wěn)定的電壓輸出性能。但是蓄電池的體積過于龐大,在報警器上使用極為不方便。因此放棄了此方案。

方案2:采用4節(jié)1.5 V干電池共4.5V做電源,經(jīng)過實驗驗證系統(tǒng)工作時,單片機、傳感器的工作電壓穩(wěn)定能夠滿足系統(tǒng)的要求,而且電池更換方便。

綜上所述采用方案2,電源模塊原理圖如圖3所示,其中P1為電池接口,SW1為電源開關(guān)[14]。

3.3 單片機最小系統(tǒng)

單片機如果需要工作起來,構(gòu)成為單片機最小系統(tǒng)的基本構(gòu)成如圖4所示。

4單片機最小系統(tǒng)的基本構(gòu)成

單片機最小系統(tǒng)大致由三部分構(gòu)成,第一部分包含單片機,第二部分包含復(fù)位電路,最后一部分由時鐘電路構(gòu)成,這三部分每一部分都有其獨立功能,能夠單獨工作卻又互相協(xié)作。

而在STC89C52 單片機中,它的工作電壓范圍在4V到5.5V之間,所以就需要給單片機外接一個5V的直流電源。連接到單片機中的40腳,而單片機的VCC就需要接到正極5V,另外一個20腳VSS就接到電源地端,達到所需的效果。

復(fù)位電路則是用來確定單片機的工作起始狀態(tài),而單片機的啟動過程就需要復(fù)位電路來實現(xiàn)。當(dāng)單片機接通電源的時候,它會產(chǎn)生一個復(fù)位信號,用來完成單片機的啟動并且確定單片機起始工作狀態(tài)。如果單片機系統(tǒng)在運行的過程中,受到外界環(huán)境的干擾并且出現(xiàn)程序跑飛的現(xiàn)象時。只要按下復(fù)位按鈕,其內(nèi)部的程序便會自動從頭開始執(zhí)行。這種復(fù)位一般有兩種方式,上電自動復(fù)位和外部按鍵手動復(fù)位。單片機在時鐘電路工作以后,要完成復(fù)位操作,就需要在RESET端持續(xù)給出2個機器周期,這是完成復(fù)位操作的重要條件。本設(shè)計在兩者之間采用的是外部手動按鍵復(fù)位電路,不過選擇這個以后,則需要接上拉電阻來提高輸出高電平的值。

時鐘電路是單片機最重要的一部分,單片機的工作節(jié)奏由它來進行掌控。時鐘電路在另一方面來講也可以說是振蕩電路,它需要向單片機提供一個正弦波信號作為基準(zhǔn),用來決定單片機的執(zhí)行速度。XTAL1和XTAL2分別是反向放大器的輸入和輸出,該反向放大器可以配置一個片內(nèi)振蕩器。但是如果采用外部時鐘源驅(qū)動器件,就不需要外接XTAL2。因為一個機器周期含有6個狀態(tài)周期,每個狀態(tài)周期又含有2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的話它的振蕩頻率就為12MHz,一個振蕩周期的時間為1/12us[15]。

3.4 單片機的時鐘電路與復(fù)位電路設(shè)計

本系統(tǒng)采用STC系統(tǒng)列單片機,相對于其他系列單片機來說的話,它具有更多的優(yōu)點。一般STC單片在資源方面也比其他單片機要多,而且它還有一個優(yōu)點,執(zhí)行速度快;STC系列單片機使用串口對單片機進行燒寫下載程序較為方便;STC89C52單片機內(nèi)部集成了很多復(fù)雜電路,且在抗干擾方面也具有不錯的能力。

本系統(tǒng)采用內(nèi)部方式的時鐘電路和加電自復(fù)位的復(fù)位電路,分別如圖5和圖6所示:

5時鐘電路6復(fù)位電路

由于單片機為高阻態(tài),PO口內(nèi)部不含上拉電阻,不能正常地輸出高/低電平,因而該組I/O口在使用時必須外接上拉電阻。

3.5 OLED顯示模塊

7 數(shù)碼管顯示

顯示采用數(shù)碼管顯示,顯示電路如圖7所示。

3.6 聲音報警模塊

電路通過三極管基極串連一個電阻與單片機P3.6端口連接從而達到控制蜂鳴器是否報警。聲音報警電路如圖8所示。

8 聲音報警電路圖

3.7 按鍵控制模塊

9 消音按鍵連接電路圖

本電路設(shè)計了四個按鍵,一個設(shè)置鍵、一個加鍵、一個減鍵、一個緊急報警鍵,當(dāng)遇到緊急情況時,可按下緊急報警鍵,蜂鳴器進行報警,消音按鍵連接如圖9所示[16]。

    3.8 DS18B20接口電路

    采用DS18B20溫度傳感器,其接口電路圖如圖10所示。

10 溫度傳感器接口電路圖

(1) DS18B20控制方法

DS18B20有六條控制命令:

溫度變化:44H開動DS18B20進行溫度轉(zhuǎn)換

讀暫存器:BEH僅僅占了暫存器9個字節(jié)內(nèi)容

寫暫存器:數(shù)據(jù)被4EH放入暫存器的TH、TL字節(jié)

復(fù)制暫存器:暫存器的TH、TL字節(jié)被48H 送到E2RAM中

再一次調(diào)E2RAM B8H 把E2RAM中的TH、TL字節(jié)放到暫存器TH、TL字節(jié)

讀電源供電方式 B4H 開啟DS18B20把電源供電方式的信號發(fā)送給主CPU

(2) DS18B20供電方式

DS18B20可以采用兩種方式供電:1是采用電源供電方式,此時DS18B20的1腳連到地端,2腳變作信號線,3腳連接電源。另一種是寄生電源供電方式,在圖3.1所示的那樣,單片機端口連上單線總線,這是為了在工作的周期之內(nèi),能夠為DS18B20時鐘提供足夠的電流,以方便其工作,所以可以采用一個三極管來完成上拉總線。本設(shè)計采用電源供電方式,P2.3口連單線總線為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個上拉電阻和STC89C52的P2.3來完成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間所到達的極限時間為10μs。實行寄生電源供電方式則VDD和GND端均需要連接地端。由于單線制只有一根線,則對發(fā)送接收口的要求,它就必須是三狀態(tài)的。DS18B20被主機控制之后完成溫度轉(zhuǎn)換就必須經(jīng)過3個步驟:1,初始化;2,ROM操作指令;3,存儲器操作指令。

4 系統(tǒng)軟件方案的設(shè)計4.1系統(tǒng)主程序設(shè)計及流程圖

自動火災(zāi)報警器的硬件系統(tǒng)設(shè)計結(jié)束之后,如果缺乏軟件的輔助及幫助,硬件還是不能正常工作。軟件是硬件能夠運動起來的重要支撐部分,控制著整個硬件系統(tǒng)的運行。所以從另外一個意義來說軟件對整個系統(tǒng)極其的重要,甚至從某種意義上說比硬件更加重要。

主程序流程圖如圖11所示。首先要給傳感器預(yù)熱,因為MQ-2型半導(dǎo)體電阻式煙霧傳感器在不通電的情況下,它存放一段時間之后,當(dāng)它再次通電,傳感器不能進入工作狀態(tài),也就是說正常采集煙霧信息,需要一段時間進行預(yù)熱處理。程序初始化結(jié)束后,系統(tǒng)就會進入監(jiān)控狀態(tài),對整個電路和環(huán)境進行一個監(jiān)控作用。

在整個報警系統(tǒng)工作中,ADC0832把煙霧濃度信息轉(zhuǎn)換處理后,還要經(jīng)過單片機來對信號進行分析處理,判斷系統(tǒng)是否啟動報警。主程序還包括報警濃度設(shè)定功能、LED八段式數(shù)碼管濃度字符顯示功能、手動報警功能、中斷子程序等,這些程序使報警器功能更加全面和完善,給用戶帶來更大的便利和體驗[17]。

圖11 主程序流程圖

至此,整個多功能MP3系統(tǒng)的設(shè)計基本完成了,剩下的任務(wù)就是對該系統(tǒng)進行調(diào)試和測試。

5 系統(tǒng)調(diào)試、測試與分析5.1 硬件調(diào)試

第一步為目測階段,單片機應(yīng)用系統(tǒng)電路全部需要手工焊接在洞洞板上,這個時候?qū)附有枰欢ǖ氖煜ざ龋疫要對每一個焊點都要進行仔細的檢查。以便測定它是否有虛焊、是否有毛剌等現(xiàn)象。

第二步為萬用表測試,先用萬用表再一次檢查目測中認為可能存在錯誤的連線或接點,查看它們的通斷狀態(tài)是否跟設(shè)計狀態(tài)相對應(yīng),再檢查各種線與線之間的連接是否有短路現(xiàn)象。

第三步為加電檢查。當(dāng)系統(tǒng)加電時,首先檢查所有插座或器件引腳的電源端是否達到符合要求的電壓值,接地端電壓值是否與零想接近,接固定電平的引腳端是否符合設(shè)計所需的電平。

第四步是聯(lián)機檢查。

在對硬件電路調(diào)試過程中,還遇到了不少問題,第一次當(dāng)把所有的元件都焊上去后,準(zhǔn)備調(diào)試,這個時候才發(fā)現(xiàn)正負極的插針離得太近了,不容易接電源,按理來說這種小錯本不該發(fā)生的,出錯的原因就是因為自己太多馬虎,所以說,做任何事情都必需經(jīng)過“三思而后行”,不能僅停留在想象的階段,還需要自己身體力行,方能取得好的結(jié)果,才能使自己的經(jīng)驗更加豐富,而且來不得半點的馬虎,否則浪費了時間和精力。

首先燒入顯示程序,看顯示正不正常,整體功能是否都還完善。在調(diào)試程序時,發(fā)現(xiàn)有的指令用的不正確,功能不能達到自己想要的效果,電路功能也不能正常的運行,另外軟件程序中的延時有的過長、有的過短,長短不一。類似的現(xiàn)象還有很多就不一一列舉了。

在完成之后,一共要測試兩個功能。第一個測試濃度達到設(shè)定值之后,是否會自動報警。第二個測試溫度上升到報警值之后,能否實現(xiàn)自動實現(xiàn)報警功能。

5.2 軟件調(diào)試

在軟件調(diào)試時,對每個模塊分別進行測試,采取步步為營的策略,這樣方便對一個模塊都起到一個檢查的作用,第一步完成OLED顯示,然后接下來單片機的時鐘電路與復(fù)位電路,最后就是時鐘等驅(qū)動程序的調(diào)試,下一步煙霧檢測AD采集電路的編寫﹑按鍵控制電路的設(shè)計,最后根據(jù)系統(tǒng)所需然后設(shè)置自己想要的功能,進行微型修改。

然后就要在實際操作的過程中,首先把顯示程序燒入進去,看顯示正不正常。在調(diào)試程序結(jié)束之后,發(fā)現(xiàn)有的指令用的并不是很正確,導(dǎo)致電路功并不能完全實現(xiàn),另外軟件程序中的延時有的過長、有的過短,當(dāng)出現(xiàn)這些這些問題之后,就要對自己的程序進行不斷的修改,不斷的查資料,這樣才能解決出現(xiàn)的問題得出自己想要的結(jié)果。

系統(tǒng)用到了多個中斷程序,在設(shè)計過程中遇到過中斷嵌套而無法退出的問題,這個時候就需要設(shè)定中斷優(yōu)先級,其中顯示屏引腳中斷優(yōu)先級最高。

6 結(jié)束語

本次設(shè)計的煙霧檢測報警器在生產(chǎn)與生活等情況下可以保障它們的安全,避免發(fā)生火災(zāi)和爆炸事故,在火災(zāi)發(fā)生的現(xiàn)場,還可以防止煤氣中毒的發(fā)生,在防火、防爆和安全生產(chǎn)等場所中,這都是所必備的一種儀器,有此可以想象的出來,煙霧報警器具有巨大的市場空間和不錯的發(fā)展前景。本論文建立在對煙霧傳感器和報警技術(shù)進行過深入研究的基礎(chǔ)上,然后對國內(nèi)和國外相同款式產(chǎn)品的技術(shù)特點進行全面比較,然后對系統(tǒng)的設(shè)計方案進行完,并且最后還要確定系統(tǒng)的設(shè)計方案。并對儀器的整體設(shè)計進行確定和對各個組成部分還要進行詳細的分析和設(shè)計,從而才能設(shè)計自己所需要的產(chǎn)品。

本論文設(shè)計的煙霧報警器由兩大部分構(gòu)成,一部分分為煙霧信號采集電路,另一部分分為單片機控制電路。根據(jù)設(shè)計要求、使用環(huán)境、成本以及眾多因素,從而確定選用MQ-2型半導(dǎo)體電阻式煙霧傳感器。該傳感器因為具有廣譜型半導(dǎo)體敏感器件,從而對以烷類煙霧為主的多種煙霧都不錯的良好敏感特性。它的靈敏度適中,而且還具有響應(yīng)與恢復(fù)特性好等特點,而且在工作的過程中,穩(wěn)定性、重現(xiàn)性,都不怎么易受環(huán)境影響及抗溫濕度影響等優(yōu)良性能。

在系統(tǒng)單片機控制電路的設(shè)計上,為了使儀器具有結(jié)構(gòu)簡單、體積小、性能穩(wěn)定、成本低等優(yōu)良性能,在前期的設(shè)計中采用了高性能、高整合度的STC89C52單片機作為核心芯片,充分利用了其高速數(shù)據(jù)處理能力和豐富的片內(nèi)外設(shè),實現(xiàn)了儀器的小型化和智能化,因為有了這些獨特設(shè)計,才能達到自己預(yù)期的效果。由于煙霧傳感器需要在加熱狀態(tài)下工作,所以溫度便是一個決定因素,在傳感器工作的時候,溫度越高,反應(yīng)速度隨著溫度的升高而加快,響應(yīng)時間和恢復(fù)時間也跟著加快。為保證傳感器準(zhǔn)確地、穩(wěn)定地工作,提高響應(yīng)時間。需要向煙霧傳感器持續(xù)供給5V的加熱電壓。煙霧報警器能在范圍比較廣的溫度范圍工作,可將煙霧濃度顯示用LED數(shù)碼管顯示。當(dāng)煙霧的濃度達到自己在開始設(shè)定的報警濃度時,就會發(fā)出報警的滴答聲。

在現(xiàn)場進行標(biāo)定及測試的過程中,我們需要分析煙霧濃度信號的實驗數(shù)據(jù),利用這些數(shù)據(jù)計算本報警器顯示煙霧濃度與實際濃度之間的誤差為2.55%LEL,如果在所規(guī)定誤差范圍±5%LEL之內(nèi),這個數(shù)據(jù)滿足我們開始設(shè)定的檢測要求,達到了預(yù)期的設(shè)計效果,這就是我們所要得出的結(jié)論。

到目前為止畢業(yè)設(shè)計也即將告一段落了,在這次的畢業(yè)設(shè)計中,我更加了解理論知識和實踐能力的差距,如果自己光是知道一些理論知識,那是遠遠不夠的,還需要不斷地實踐,從而才能更好的鞏固自己所學(xué)到的知識。另一方面也意識到自己的短處與缺陷,培養(yǎng)了我的獨立思考能力,讓自己學(xué)到了很多以前從來沒有接觸過的知識,進一步提高了自己在實際設(shè)計過程中研究問題、發(fā)現(xiàn)問題、解決問題的能力,同時,也發(fā)現(xiàn)了自己的不足之處,和一些問題的存在,并有待進一步學(xué)習(xí)和發(fā)展,讓自己在未來的工作和學(xué)習(xí)之中更快的適應(yīng)和提高自己。


致謝

在完成本設(shè)計的寫作過程中,我十分感謝我的指導(dǎo)老師—金老師。從論文的開始到結(jié)束,金老師一直都是很悉心的幫我修改著論文設(shè)計的過程中出現(xiàn)的各種問題和錯誤,對我論文設(shè)計的每個過程都嚴(yán)格的把關(guān),幫助我開拓設(shè)計思路。在做畢業(yè)設(shè)計的過程中,自己因為雜事比較多,所以在論文這一塊都沒怎么花心思,很多次論文提交上去,都會出現(xiàn)很多小錯誤,自己又不知道怎么修改,基本都是老師在指導(dǎo)我。而且老師不僅在論文方面給了我很大幫助,在功課上對我也指導(dǎo)了很多,真的很感謝金老師。

自己在做論文的過程中,也清楚的意識到自己對本專業(yè)的茫然與無知,很多東西都不懂,回想自己大學(xué)四年的時光,也不知道自己是怎么機緣巧合的來到這個專業(yè)以及這個學(xué)校,只記得當(dāng)初只是想跑到大城市去看看,然后想學(xué)一技傍身,剛好專業(yè)是電子科學(xué)與技術(shù),所以才來到浙江傳媒學(xué)院。自己來到之后,才發(fā)現(xiàn)這不是自己感興趣的專業(yè),所以在學(xué)習(xí)方面也沒怎么花時間,說實話挺可惜的,自己本專業(yè)都沒學(xué)到什么東西,于是在做畢業(yè)設(shè)計的時候就顯得異常的艱難,自己也清楚的意識到自己本專業(yè)知識的缺陷。

不過盡管是無意中來到了母校,但是在這里我還是要感謝我們的母校——浙江傳媒學(xué)院,因為她給了我很多幫助而且還給了我一個舞臺來施展自己的才華,來到這里之后,我才發(fā)現(xiàn)這里跟其他的學(xué)校氛圍不一樣,氣氛相對來說要活躍一些,開始我不怎么能接受,后面我也就慢慢地習(xí)慣;額!我很珍惜我大學(xué)的四年生活,給我留下了很多回憶,人生僅有一次,甚至畢業(yè)論文也是一樣,也只有這么一次,以后便再也沒有機會去寫了。此外我還要感謝我的同班各位同學(xué)以及和我一起生活的三個室友,正是與他們的交流合作使我不斷成長,受益頗多。最后要感謝我的家人以及我的朋友們,在他們的幫助下,我才得以能順利完成自己的畢業(yè)論文。

通過這次畢業(yè)設(shè)計,使我深刻地認識到學(xué)好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學(xué)四年的學(xué)習(xí)成果。它是我這四年來所學(xué)知識的綜合運用和經(jīng)驗的總結(jié),通過此次設(shè)計也鍛煉了我個人的各方面能力,包括制圖、編程、動手以及溝通能力,所學(xué)知識更得到了升華。為以后在工作崗位上發(fā)揮自己的才能奠定了堅實的基礎(chǔ)。由于時間的倉促和個人專業(yè)水平的原因,整篇論文肯定存在著一定的錯誤和漏洞。懇請閱讀此篇論文的老師、同學(xué),多予指正,不勝感激!

最后,再次對關(guān)心、幫助我的老師和同學(xué)表示衷心地感謝, 更感謝母校四年來對我的培養(yǎng)和教育,希望母校健康蓬勃發(fā)展,更加輝煌!等我在外拼搏成功之后,必會回來反哺母校,使母校能夠培育更多人才,為社會做出自己的一番貢獻。


附錄2 系統(tǒng)原理圖:


單片機源程序如下:


  1. #include <reg52.h>
  2. #include "eepom52.h"
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. #include <intrins.h>
  6. //數(shù)碼管段選定義      0     1    2    3    4    5              6              7                8                 9            
  7. uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  8.                                                                         0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};              //斷碼
  9. //數(shù)碼管位選定義
  10. uchar code smg_we[]={0x7f,0xbf,0xdf,0xef};
  11. //uchar code smg_we[]={0xfe,0xfd,0xfb,0xf7};
  12. uchar dis_smg[8]  = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};            
  13. uchar smg_i = 3;    //顯示數(shù)碼管的個位數(shù)

  14. sbit SCL=P3^4;                            //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
  15. sbit DO=P3^3;                            //DO定義為P1口的第4位腳,連接ADC0832DO腳
  16. sbit CS=P3^2;                            //CS定義為P1口的第4位腳,連接ADC0832CS腳

  17. sbit dq   = P3^5;              //18b20 IO口的定義
  18. sbit beep = P3^6;   //蜂鳴器IO口定義
  19. uint temperature,s_temp ;  //溫度的變量
  20. uchar dengji,s_dengji;     //煙物等級
  21. uchar shoudong;            //手動報警鍵
  22. uint huoyan;


  23. bit flag_300ms ;
  24. uchar key_can;                            //按鍵值的變量
  25. uchar menu_1;        //菜單設(shè)計的變量
  26. bit flag_lj_en;                            //按鍵連加使能
  27. bit flag_lj_3_en;              //按鍵連3次連加后使能  加的數(shù)就越大了
  28. uchar key_time,flag_value;      //用做連加的中間變量
  29. bit key_500ms  ;
  30. uchar flag_clock;
  31. uchar zd_break_en,zd_break_value;   //自動退出設(shè)置界面
  32. uchar a_a;
  33. /******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/
  34. void write_eepom()
  35. {
  36.               SectorErase(0x2000);
  37.               byte_write(0x2000, s_temp);
  38.               byte_write(0x2001, s_dengji);
  39.               byte_write(0x2060, a_a);            
  40. }
  41. /**************開機自檢eepom初始化*****************/
  42. void init_eepom()
  43. {
  44.               read_eepom();                            //先讀
  45.               if(a_a != 1)                            //新的單片機初始單片機內(nèi)問EEPOM
  46.               {
  47.                             s_temp   = 50;
  48.                             s_dengji = 5;
  49.                             a_a = 1;
  50.                             write_eepom();
  51.               }            
  52. }

  53. /***********************18b20初始化函數(shù)*****************************/
  54. void init_18b20()
  55. {
  56.               bit q;
  57.               dq = 1;                                                        //把總線拿高
  58.               delay_uint(1);                  //15us
  59.               dq = 0;                                                        //給復(fù)位脈沖
  60.               delay_uint(80);                            //750us
  61.               dq = 1;                                                        //把總線拿高 等待
  62.               delay_uint(10);                            //110us
  63.               q = dq;                                                        //讀取18b20初始化信號
  64.               delay_uint(20);                            //200us
  65.               dq = 1;                                                        //把總線拿高 釋放總線
  66. }
  67. /*************寫18b20內(nèi)的數(shù)據(jù)***************/
  68. void write_18b20(uchar dat)
  69. {
  70.               uchar i;
  71.               for(i=0;i<8;i++)
  72.               {                                                                      //寫數(shù)據(jù)是低位開始
  73.                             dq = 0;                                          //把總線拿低寫時間隙開始
  74.                             dq = dat & 0x01; //向18b20總線寫數(shù)據(jù)了
  75.                             delay_uint(5);              // 60us
  76.                             dq = 1;                                          //釋放總線
  77.                             dat >>= 1;
  78.               }            
  79. }
  80. /*************讀取18b20內(nèi)的數(shù)據(jù)***************/
  81. uchar read_18b20()
  82. {
  83.               uchar i,value;
  84.               for(i=0;i<8;i++)
  85.               {
  86.                             dq = 0;                                          //把總線拿低讀時間隙開始
  87.                             value >>= 1;              //讀數(shù)據(jù)是低位開始
  88.                             dq = 1;                                          //釋放總線
  89.                             if(dq == 1)                            //開始讀寫數(shù)據(jù)
  90.                                           value |= 0x80;
  91.                             delay_uint(5);              //60us              讀一個時間隙最少要保持60us的時間
  92.               }
  93.               return value;                            //返回數(shù)據(jù)
  94. }
  95. /*************讀取溫度的值 讀出來的是小數(shù)***************/
  96. uint read_temp()
  97. {
  98.               uint value;
  99.               uchar low;                                             //在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序
  100.               init_18b20();                               //初始化18b20
  101.               write_18b20(0xcc);                 //跳過64位ROM
  102.               write_18b20(0x44);                 //啟動一次溫度轉(zhuǎn)換命令
  103.               delay_uint(50);                               //500us
  104.               init_18b20();                               //初始化18b20
  105.               write_18b20(0xcc);                 //跳過64位ROM
  106.               write_18b20(0xbe);                 //發(fā)出讀取暫存器命令
  107.               EA = 0;
  108.               low = read_18b20();                 //讀溫度低字節(jié)
  109.               value = read_18b20();  //讀溫度高字節(jié)
  110.               EA = 1;
  111.               value <<= 8;                               //把溫度的高位左移8位
  112.               value |= low;                               //把讀出的溫度低位放到value的低八位中
  113.               value *= 0.0625;                     //轉(zhuǎn)換到溫度值
  114.               return value;                               //返回讀出的溫度
  115. }

  116. /***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)********************************************************/            
  117.                                                                                     //  1  0  0 通道
  118.                                                                                     //  1  1  1 通道
  119. unsigned char ad0832read(bit SGL,bit ODD)
  120. {
  121.               unsigned char i=0,value=0,value1=0;                           
  122.                             SCL=0;
  123.                             DO=1;
  124.                             CS=0;                            //開始
  125.                             SCL=1;                            //第一個上升沿            
  126.                             SCL=0;
  127.                             DO=SGL;
  128.                             SCL=1;                //第二個上升沿
  129.                             SCL=0;
  130.                             DO=ODD;
  131.                             SCL=1;                  //第三個上升沿
  132.                             SCL=0;                  //第三個下降沿
  133.                             DO=1;
  134.                             for(i=0;i<8;i++)
  135.                             {
  136.                                           SCL=1;
  137.                                           SCL=0; //開始從第四個下降沿接收數(shù)據(jù)
  138.                                           value<<=1;
  139.                                           if(DO)
  140.                                                         value++;                                                                                   
  141.                             }
  142.                             for(i=0;i<8;i++)
  143.                             {                                          //接收校驗數(shù)據(jù)
  144.                                           value1>>=1;
  145.                                           if(DO)
  146.                                                         value1+=0x80;
  147.                                           SCL=1;
  148.                                           SCL=0;
  149.                             }
  150.                             CS=1;
  151.                             SCL=1;            
  152.                             if(value==value1)                                                        //與校驗數(shù)據(jù)比較,正確就返回數(shù)據(jù),否則返回0            
  153.                                           return value;
  154.               return 0;
  155. }
  156. /****************報警函數(shù)***************/
  157. void clock_h_l()
  158. {
  159.               static uchar value;
  160.               if((dengji >= s_dengji) || (temperature >= s_temp) || (shoudong == 1))                            //報警
  161.               {
  162.                             value ++;
  163.                             if(value >= 3)
  164.                             {
  165.                                           value = 10;
  166.                                           beep = ~beep;                //蜂鳴器報警
  167.                             }
  168.               }else
  169.               {
  170.                             if((dengji < s_dengji) && (temperature < (s_temp - 1)) && (shoudong == 0))                //取消報警
  171.                             {
  172.                                           value = 0;
  173.                                           beep = 1;
  174.                             }            
  175.               }
  176. }
  177. void main()
  178. {
  179.               static uchar value;
  180.               temperature = read_temp();  //讀取溫度值
  181.               init_eepom();                                                //讀eepom數(shù)據(jù)
  182.               time_init();                                                        //初始化定時器
  183.               delay_1ms(650);                                                      
  184.               while(1)
  185.               {
  186.                             key();                                                                      //獨立按鍵程序
  187.                             if(key_can < 10)
  188.                             {
  189.                                           key_with();                                          //按鍵按下要執(zhí)行的程序
  190.                             }
  191.                             temperature = read_temp();  //讀取溫度值
  192.                             if(flag_300ms == 1)
  193.                             {                           
  194.                                           flag_300ms = 0;
  195.                                           clock_h_l();
  196.                                           dengji = ad0832read(1,0);            
  197.                                           dengji = dengji * 10 / 250;
  198.                                           huoyan = ad0832read(1,1);            
  199.                                           huoyan = 10 - huoyan * 10 / 250;
  200.                                           if(menu_1 == 0)
  201.                                           {
  202.                                                         if(temperature >= 99)
  203.                                                                       temperature = 99;
  204.                                                         if(value > 20)
  205.                                                                       value = 0;
  206.                                                         if(huoyan < 2)
  207.                                                         {            
  208.                                                                       smg_i = 4;
  209.                                                                       dis_smg[3]=smg_du[dengji];                  //顯示煙物報警等級
  210.                                                                       dis_smg[2]= 0xbf;                          // -                           
  211. ……………………

  212. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

所有資料51hei提供下載:

基于STC89C52的火災(zāi)自動報警系統(tǒng)的設(shè)計與開發(fā).docx (2.51 MB, 下載次數(shù): 141)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:758513 發(fā)表于 2020-5-22 17:06 | 只看該作者
厲害,俺都看不懂
回復(fù)

使用道具 舉報

板凳
ID:1121795 發(fā)表于 2024-6-5 19:47 | 只看該作者
有源代碼嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线视频 中文字幕 | 国产亚洲一级 | 亚洲精品一区中文字幕乱码 | 日本在线观看视频 | 北条麻妃99精品青青久久 | 国产一区二区欧美 | 亚洲伦理自拍 | 国产7777| 亚洲欧美综合精品久久成人 | 欧美久 | 一区二区在线免费观看视频 | 日韩精品视频在线观看一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 自拍偷拍精品 | 色眯眯视频在线观看 | 一级在线观看 | 亚洲免费一区二区 | 午夜视频导航 | 久久久久国产 | 永久www成人看片 | 亚洲精品免费视频 | 天天影视亚洲综合网 | 亚洲一在线 | 国产精品美女久久久av超清 | 久久久久无码国产精品一区 | 日韩精品免费视频 | 午夜资源| 希岛爱理在线 | 中文字幕福利视频 | 91久久精品国产91久久性色tv | 综合网在线 | 日本又色又爽又黄的大片 | av网站免费 | 亚洲高清视频在线观看 | 亚洲综合色 | 欧美成人精品二区三区99精品 | 男人天堂网址 | 视频1区 | 亚洲一区 中文字幕 | 日韩精品一区二区三区四区视频 | 国产精品污www一区二区三区 |