摘要: 隨著社會和經濟的發展,防火工作越來越重要,但是目前國內的許多研發都側重于大型場所的火災報警。因此,有必要研制一種結構簡單、經濟實用的家庭煙霧報警器以適應市場的需求。基于供家庭使用的煙霧報警器應該具備的基本要求和功能,設計了一種比較適合的煙霧報警器。
本設計以傳感器和單片機作為煙霧報警器設計的核心器件,配合其它器件即可實現聲光報警、自動排煙換氣和消防滅火等功能。設計中單片機選用STC89C52作為控制器件,傳感器選用MQ-2型半導體可燃氣體敏感元件煙霧傳感器實現煙霧的檢測。煙霧報警器主要由煙霧信號采集及前置放大電路、模數轉換電路、單片機控制電路、顯示電路、聲光報警電路和安全保護電路構成,設計合理、簡單易懂、價格低廉,使單片機在煙霧報警系統的控制中得到充分應用,具有一定的實用價值。論文主要針對煙霧報警系統中的各個組成部分及功能進行了詳細的介紹和說明,并對其主控電路和外圍設備電路之間的接口連接方式,以及系統軟件設計進行了重點的分析和講解。
目錄
1 緒論
1.1 選題背景與研究現狀
2 設計思路與方案的選擇
2.1 整體設計思路
2.2 設計方案的選擇
2.2.1 煙霧檢測傳感器選型
2.2.3 溫度采集模塊
3 系統概述與硬件方案的設計
3.1 系統總體框架
3.2 電源模塊
3.3 單片機最小系統
3.4 單片機的時鐘電路與復位電路設計
3.5 OLED顯示模塊
3.6 聲音報警模塊
3.7 按鍵控制模塊
3.8 DS18B20接口電路
4 系統軟件方案的設計
4.1系統主程序設計及流程圖
5 系統調試、測試與分析
5.1 硬件調試
5.2 軟件調試
6 結束語
致謝
參考文獻
附錄1 系統部分程序:
附錄2 系統原理圖:
附錄3 系統PCB圖:
附錄4 系統實物圖:
1 緒論
1.1 選題背景與研究現狀隨著科技的發展,越來越多的火災隱患潛伏在工業生產和人們的日常生活中。火災一旦發生便是一場巨大的災難,很有可能造成巨大的經濟損失,甚至危及個人的生命安全。在早期時候,防止和發現火災,保護人身和財產安全,減少經濟損失,是必須要做的一個重要事情。 所以為了減少這類事故的發生,就必須對煙霧進行現場實時檢測,采用先進可靠的安全檢測儀表,用來嚴密監測環境中煙霧的濃度,采取有效措施,及早發現事故隱患,避免事故發生,才能確保工業安全和家庭生活安全。因此,研究煙霧的檢測方法與研制煙霧報警器就成為傳感器技術發展領域的一個重要課題。 國外從20世紀30年代開始研究及開發煙霧傳感器,且發展迅速,一方面是因為人們安全意識增強,對環境安全性和生活舒適性要求提高;另一方面是因為傳感器市場增長受到政府安全法規的推動。據有關統計,美國1996年~2002年煙霧傳感器年均增長率為27%~30%[1]。隨著傳感器生產工藝水平逐步提高,傳感器日益小型化、集成度不斷增大,使得煙霧檢測儀器的體積也逐漸變小,提高了煙霧檢測儀器的便攜性,更加利于生產、運輸及市場推廣。 1963年5月,日本開發完成第一臺接觸燃燒式家用燃氣泄漏報警器,次年12月其改良產品問世,改良的報警器可以檢測燃氣、一氧化碳等氣體,可以安裝在浴室或者采用集中監視[2]。 我國在70年代初期就已經開始了對煙霧報警器研究,一方面是由于社會的需要,另外一方面也為了減少國家的經濟損失,在生產的過程中,生產型號多樣化、品種也比較齊全,應用范圍從開始單一的煉油系統到后面擴展到幾乎所有危險作業環境的各種類型報警器,囊括的種類極其之多,產品數量也在不斷增加。不過從發展的角度來看,我們大都是在引進國外先進的傳感器技術,并且在國外先進的生產工藝基礎之上,對其進行研究從而大力開發屬于自己的特色火災報警器。隨著國家的大力發展,近年來,我國在煙霧選擇性和產品穩定性上都有很大進步[3]。 2 設計思路與方案的選擇
2.1 整體設計思路 本次設計是基于STC89C52的煙霧報警器,能夠檢測環境中的煙霧濃度,并具有報警功能。該報警系統的最基本組成部分應包括:信號采集模數轉換電路、單片機控制電路、字符顯示電路、聲光報警電路和安全保護電路等部分[2]。設計的煙霧報警器具有顯示報警狀態,為適應家庭和工業等場所對可燃性易爆煙霧安全性等要求。報警器以STC89C52單片機為控制核心,延時的工作方式,選用MQ-2半導體氣體煙霧傳感器,用來采集煙霧濃度信息,配合外圍電路以構成煙霧報警系統,從而達到自己設計的目的。 本設計對系統進行一個整體規劃,還有結構設計,以STC89C52單片機為中央處理器,對硬件電路進行設計和改進,使其功能更加完善。系統模塊分為軟件和硬件兩個部分。系統硬件電路主要分為數碼管顯示電路、狀態指示燈電路、聲音報警電路、數據收集等四大部分。 系統的軟件編制的分類,按照軟件實現的功能,主要分為主程序、報警子程序、初始化子程序、報警限值設置子程序、濃度顯示子程序等程序內容。在程序的編寫過程中,同時又加入了詳細的文字注釋,以便于后期的修改與維護。 2.2 設計方案的選擇 2.2.1 煙霧檢測傳感器選型
圖1煙霧傳感器內部結構圖 煙霧傳感器是測量裝置和控制系統的首要環節。而煙霧報警器的信號采集由煙霧傳感器負責。煙霧傳感器能夠將氣體的種類及其濃度有關的信息轉換為電信號,根據這些電信號的強弱就可以獲得與待測氣體在環境中存在的情況有關的信息,從而達到檢測、監控、報警的功能[4]。可以說,沒有精確可靠的傳感器,就沒有精確可靠的自動檢測、控制和報警系統。煙霧傳感器作為報警器中不可缺少的核心器件,它決定了所采集的煙霧濃度信號的準確性和可靠性,煙霧傳感器內部結構如圖1所示[5]。 方案一:接觸燃燒式傳感器。當易燃煙霧接觸這種被催化物覆蓋的傳感器表面時會發生氧化反應而燃燒。接觸燃燒式氣體傳感器的檢測元件一般為鉑金屬絲(也可表面涂鉑、鈀等稀有金屬催化層),使用時對鉑絲通以電流,保持300℃~400℃的高溫,此時若與可燃性氣體接觸,可燃性氣體就會在稀有金屬催化層上燃燒,因此鉑絲的溫度會上升,鉑絲的電阻值也上升;通過測量鉑絲的電阻值變化的大小,就知道可燃性氣體的濃度。使用接觸燃燒式傳感器,其最大的缺點是探頭很容易發生阻緩和中毒現象。一般在連續使用兩個月后應對該傳感器進行維護。這無形中加大了工作人員的工作量,同時增加了報警器的維護成本[6]。 方案二:半導體煙霧傳感器(半導體氣敏傳感器)半導體煙霧傳感器包括用氧化物半導體陶瓷材料作為敏感體制作的煙霧傳感器,以及用單晶半導體器件制作的煙霧傳感器。半導體煙霧傳感器是利用氣體在半導體表面的氧化和還原反應導致敏感元件阻值變化而制成的。按照敏感機理分類,半導體煙霧傳感器可分為電阻式和非電阻式。當半導體接觸到氣體時,半導體的電阻值將發生變化,利用傳感器輸出端阻值的變化來測定或控制氣體的有關參數,這種類型的傳感器稱為電阻式半導體氣敏傳感器;當MOS場效應管在接觸到氣體時,場效應管的電壓將隨周圍氣體狀態的不同而發生變化,利用這種原理制成的傳感器被稱為非電阻式半導體氣敏傳感器[7]。 自1962年半導體金屬氧化物煙霧傳感器問世以來,由于具有靈敏度高、響應快、輸出信號強、耐久性強、結構簡單、體積小、維修方便、價格便宜等諸多優點,得到了廣泛的應用。但是其最大的缺點就是選擇性較差。該傳感器己成為世界上產量最大、使用最廣的煙霧傳感器之一。 方案三:離子感煙傳感器 離子感煙傳感器對于火災初起和陰燃階段的煙霧氣溶膠檢測非常有效,可測煙霧粒徑范圍為0.03um-10um。它在內外電離室里面有放射源镅241。由于它能使兩極板間空氣分子電離為正、負離子,使電極之間原來不導電的空氣具有導電性。在正常的情況下,內外電離室的電流、電壓都是穩定的。當火災發生時,煙霧粒子進入電離室后,電力部分(區域)的正離子和負離子被吸附到煙霧粒子上,使正、負離子相互中和的概率增加,從而將煙霧粒子濃度大小以電流變化量大小表示出來,實現對火災參數的檢測。 第四種方案:光電式感煙傳感器 光電式感煙傳感器包含三個部分:光源、光敏元件和電子開關。在正常的情況下,平常光源發出的光,它會通過透鏡照射到光敏元件上,這個時候如果沒有什么特殊情況,電路就會保持正常。但是一旦有煙霧從中阻隔光的照射,就會導致到達光敏元件上的光減少,這個時候光敏元件就把光強的變化轉化成電的變化,在火災產生的初期利用光散射原理對煙霧進行探測,并及時發出報警信號。在報警的同時,按照光源不同,又可分為4種,其中包括一般光電式、激光光電式、紫外光光電式和紅外光光電式。 光電式感煙探測器發展的速度非常快,種類也在不斷增多,除了在大型建筑物內部應用之外,還特別適用于電氣火災危險性較大的場所,如儀器儀表室、隧道、計算機房和電纜溝等處。但是從另一個角度來看,比如說就其功能而言,它在火災發生的早期也能實現報警功能。 有時候根據報警器檢測煙霧種類的不同要求,在使用條件的各種考慮下,半導體煙霧傳感器對于各種場合都比較適合,在眾多煙霧傳感器的應用特性的對比之下,發現半導體煙霧傳感器的優點更加突出。比如靈敏度高、響應快、體積小、結構簡單等優良特性,而且還兼具使用方便、價格便宜等優點,并且在報警的過程中,不具有其他傳感器所具備的缺陷,比如探頭阻緩及中毒現象,而且在維護成本方面,也是比較低廉的,因而得到廣泛應用。因此,本設計中的煙霧傳感器采用方案2,選用MQ-2半導體氣體煙霧傳感器[8]。 2.2.2 單片機的選型 單片機是煙霧自動報警系統最關鍵的一部分,并且具有多種功能,它可以用來接收火災信號,當接收到信號之后,就會啟動報警裝置顯示,然后執行相應的報警。在單片機實現的控制功能中,對單片機的運算速度具有較高的要求,使檢測人員和用戶在報警器系統正常工作時能夠及時地觀測到實時的煙霧濃度等級,并進行相應處理。同時,在滿足報警器系統設計的計算速度要求之后,在接口功能要求相同的同類型單片機中,還要考慮選擇價格低廉且體積輕巧的機型,這是為了建立在報警器的精確性、可靠性及抗干擾性的基礎之上,還要能夠考慮成本能夠足夠的低廉[9]。 由于單片機技術在各個領域里面應用的越來越廣泛,所以世界上許多集成電路生產廠家相繼推出了各種類型的單片機,在眾多類型的單片機之中,MCS系列單片機以其成熟的技術、優越的性能、高可靠性和高性能價格比,迅速占領了工業測控、自動化工程應用等大多數主流市場,成為國內單片機應用領域中的翹楚。其中,51系列單片機有一些顯著的優點,比如價錢便宜,I/O口多,程序空間大。因此,在測控操作系統中,使用51系列單片機是最理想的選擇,因此本次畢業設計采用STC89C52作為設計用的單片機[10]。 STC89C52是一種高性能、低功耗CMOS8位微控制器,使用高密度非易失性存儲器技術制造,在兼容性方面,工業80C51產品指令和引腳完全兼容,并且具有8K可編程Flash存儲器。片上Flash適于常規編程器,亦允許程序存儲器在線可編程。在單芯片上,擁有系統可編程Flash和靈巧的8 位CPU,因為具備這些條件,STC89C52可以為眾多嵌入式控制應用系統提供超有效、高靈活的解決方案[10]。STC89C52還具備以下標準功能:256字節RAM,32 位I/O 口線,8k字節Flash定時器,2個數據指針,一個6向量2級中斷結構,全雙工串行口,三個16位定時器/計數器,片內晶振及時鐘電路。另外,STC89C52可降低0Hz 靜態邏輯操作,并且支持2種軟件可選擇節電模式。在空閑模式條件下,CPU開始停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,振蕩器被凍結,RAM內容被保存,單片機停止一切工作,直到下一個硬件或中斷復位為止。這是一個以單片機為中心的模塊,把程序代碼燒進去以后,然后在外圍接上振蕩電路、復位電路、LED顯示電路、LED顯示電路、報警電路等子模塊[11]。 2.2.3 溫度采集模塊方案1:在測溫電路中采用PT100作為溫度傳感器。PT100傳感器是利用鉑電阻的特性來進行測溫的,鉑電阻具有這樣的特性,它的阻值隨溫度變化而變化、并呈一定函數關系的特性,并且PT100傳感器具有抗振動、穩定性好、準確度高、耐高壓等優點。但它也具有一些缺點,就是使用起來比較復雜。 方案2:采用DS18B20作為本次設計的溫度傳感器。DS18B20的數字溫度輸出通過 “ 一線 ” 總線( 1-Wire是一種特殊的數字信號總線協議,它將獨特的信號線和電源線復合在一起,僅使用一條口線;每個芯片編碼都是唯一的,支持聯網尋址、還有零功耗等方面,是總線之中所需硬件連線最少的一種)這種獨特的方式,可以使多個 DS18B20方便地組建成傳感器網絡,為整個測量系統的建立和組合提供了更大可能性。它在傳輸距離、轉換時間、測溫精度、分辨率等方面相較于其他溫度傳感器有了更大的進步,相對于用戶來講使用更方便,而且效果也更加令人滿意[12]。 通過比較之后得出,DS18B20可以直接輸出數字溫度值,不需要校正,是比較理想的選擇,因此最后決定選擇方案2。 3 系統概述與硬件方案的設計
3.1 系統總體框架煙霧報警器是能夠檢測環境中的煙霧濃度,并具有報警功能的儀器。該報警系統的最基本組成部分應包括:信號采集模數轉換電路、單片機控制電路、字符顯示電路、聲光報警電路和安全保護電路等部分組成。 為適應家庭和工業等場所對可燃性易爆煙霧安全性要求,設計的煙霧報警器具有顯示報警狀態。報警器采用延時的工作方式,煙霧檢測報警器以STC89C52單片機為控制核心,選用MQ-2半導體氣體煙霧傳感器采集煙霧濃度信息,配合外圍電路構成煙霧報警系統。本設計包括硬件和軟件設計兩個部分。 從設計的要求來分析該設計須包含如下結構:煙霧檢測部分、STC89C52單片機主控部分、報警部分,AD采集四大部分。電路總體設計框圖如圖2所示: 
圖2總體設計框圖 處理器采用51系列單片機STC89C52。整個系統是在系統軟件控制下工作的。設置在監測點上的煙霧檢測探頭將檢測到的煙霧變換成電信號,送出模擬信號,給AD采集電路采集。在單片機內,經軟件查詢、識別判決等環節實時發出煙霧報警狀態控制信號。驅動蜂鳴器及報警指示燈報警[13]。 3.2 電源模塊
圖3電源模塊原理圖 由于本系統采用電池供電,考慮了如下幾種方案為系統供電。 方案1:采用5V蓄電池為系統供電。蓄電池具有較強的電流驅動能力以及穩定的電壓輸出性能。但是蓄電池的體積過于龐大,在報警器上使用極為不方便。因此放棄了此方案。 方案2:采用4節1.5 V干電池共4.5V做電源,經過實驗驗證系統工作時,單片機、傳感器的工作電壓穩定能夠滿足系統的要求,而且電池更換方便。 綜上所述采用方案2,電源模塊原理圖如圖3所示,其中P1為電池接口,SW1為電源開關[14]。 3.3 單片機最小系統單片機如果需要工作起來,構成為單片機最小系統的基本構成如圖4所示。 
圖4單片機最小系統的基本構成 單片機最小系統大致由三部分構成,第一部分包含單片機,第二部分包含復位電路,最后一部分由時鐘電路構成,這三部分每一部分都有其獨立功能,能夠單獨工作卻又互相協作。 而在STC89C52 單片機中,它的工作電壓范圍在4V到5.5V之間,所以就需要給單片機外接一個5V的直流電源。連接到單片機中的40腳,而單片機的VCC就需要接到正極5V,另外一個20腳VSS就接到電源地端,達到所需的效果。 復位電路則是用來確定單片機的工作起始狀態,而單片機的啟動過程就需要復位電路來實現。當單片機接通電源的時候,它會產生一個復位信號,用來完成單片機的啟動并且確定單片機起始工作狀態。如果單片機系統在運行的過程中,受到外界環境的干擾并且出現程序跑飛的現象時。只要按下復位按鈕,其內部的程序便會自動從頭開始執行。這種復位一般有兩種方式,上電自動復位和外部按鍵手動復位。單片機在時鐘電路工作以后,要完成復位操作,就需要在RESET端持續給出2個機器周期,這是完成復位操作的重要條件。本設計在兩者之間采用的是外部手動按鍵復位電路,不過選擇這個以后,則需要接上拉電阻來提高輸出高電平的值。 時鐘電路是單片機最重要的一部分,單片機的工作節奏由它來進行掌控。時鐘電路在另一方面來講也可以說是振蕩電路,它需要向單片機提供一個正弦波信號作為基準,用來決定單片機的執行速度。XTAL1和XTAL2分別是反向放大器的輸入和輸出,該反向放大器可以配置一個片內振蕩器。但是如果采用外部時鐘源驅動器件,就不需要外接XTAL2。因為一個機器周期含有6個狀態周期,每個狀態周期又含有2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的話它的振蕩頻率就為12MHz,一個振蕩周期的時間為1/12us[15]。 3.4 單片機的時鐘電路與復位電路設計本系統采用STC系統列單片機,相對于其他系列單片機來說的話,它具有更多的優點。一般STC單片在資源方面也比其他單片機要多,而且它還有一個優點,執行速度快;STC系列單片機使用串口對單片機進行燒寫下載程序較為方便;STC89C52單片機內部集成了很多復雜電路,且在抗干擾方面也具有不錯的能力。 本系統采用內部方式的時鐘電路和加電自復位的復位電路,分別如圖5和圖6所示: 
圖5時鐘電路圖6復位電路 由于單片機為高阻態,PO口內部不含上拉電阻,不能正常地輸出高/低電平,因而該組I/O口在使用時必須外接上拉電阻。 3.5 OLED顯示模塊


圖7 數碼管顯示 顯示采用數碼管顯示,顯示電路如圖7所示。 3.6 聲音報警模塊電路通過三極管基極串連一個電阻與單片機P3.6端口連接從而達到控制蜂鳴器是否報警。聲音報警電路如圖8所示。 
圖8 聲音報警電路圖 3.7 按鍵控制模塊
圖9 消音按鍵連接電路圖 本電路設計了四個按鍵,一個設置鍵、一個加鍵、一個減鍵、一個緊急報警鍵,當遇到緊急情況時,可按下緊急報警鍵,蜂鳴器進行報警,消音按鍵連接如圖9所示[16]。 3.8 DS18B20接口電路 采用DS18B20溫度傳感器,其接口電路圖如圖10所示。 
圖10 溫度傳感器接口電路圖 (1) DS18B20控制方法 DS18B20有六條控制命令: 溫度變化:44H開動DS18B20進行溫度轉換 讀暫存器:BEH僅僅占了暫存器9個字節內容 寫暫存器:數據被4EH放入暫存器的TH、TL字節 復制暫存器:暫存器的TH、TL字節被48H 送到E2RAM中 再一次調E2RAM B8H 把E2RAM中的TH、TL字節放到暫存器TH、TL字節 讀電源供電方式 B4H 開啟DS18B20把電源供電方式的信號發送給主CPU (2) DS18B20供電方式 DS18B20可以采用兩種方式供電:1是采用電源供電方式,此時DS18B20的1腳連到地端,2腳變作信號線,3腳連接電源。另一種是寄生電源供電方式,在圖3.1所示的那樣,單片機端口連上單線總線,這是為了在工作的周期之內,能夠為DS18B20時鐘提供足夠的電流,以方便其工作,所以可以采用一個三極管來完成上拉總線。本設計采用電源供電方式,P2.3口連單線總線為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個上拉電阻和STC89C52的P2.3來完成對總線的上拉。當DS18B20處于寫存儲器操作和溫度A/D變換操作時,總線上必須有強的上拉,上拉開啟時間所到達的極限時間為10μs。實行寄生電源供電方式則VDD和GND端均需要連接地端。由于單線制只有一根線,則對發送接收口的要求,它就必須是三狀態的。DS18B20被主機控制之后完成溫度轉換就必須經過3個步驟:1,初始化;2,ROM操作指令;3,存儲器操作指令。 4 系統軟件方案的設計4.1系統主程序設計及流程圖自動火災報警器的硬件系統設計結束之后,如果缺乏軟件的輔助及幫助,硬件還是不能正常工作。軟件是硬件能夠運動起來的重要支撐部分,控制著整個硬件系統的運行。所以從另外一個意義來說軟件對整個系統極其的重要,甚至從某種意義上說比硬件更加重要。 主程序流程圖如圖11所示。首先要給傳感器預熱,因為MQ-2型半導體電阻式煙霧傳感器在不通電的情況下,它存放一段時間之后,當它再次通電,傳感器不能進入工作狀態,也就是說正常采集煙霧信息,需要一段時間進行預熱處理。程序初始化結束后,系統就會進入監控狀態,對整個電路和環境進行一個監控作用。 在整個報警系統工作中,ADC0832把煙霧濃度信息轉換處理后,還要經過單片機來對信號進行分析處理,判斷系統是否啟動報警。主程序還包括報警濃度設定功能、LED八段式數碼管濃度字符顯示功能、手動報警功能、中斷子程序等,這些程序使報警器功能更加全面和完善,給用戶帶來更大的便利和體驗[17]。 
圖11 主程序流程圖 至此,整個多功能MP3系統的設計基本完成了,剩下的任務就是對該系統進行調試和測試。 5 系統調試、測試與分析5.1 硬件調試第一步為目測階段,單片機應用系統電路全部需要手工焊接在洞洞板上,這個時候對焊接需要一定的熟悉度,而且還要對每一個焊點都要進行仔細的檢查。以便測定它是否有虛焊、是否有毛剌等現象。 第二步為萬用表測試,先用萬用表再一次檢查目測中認為可能存在錯誤的連線或接點,查看它們的通斷狀態是否跟設計狀態相對應,再檢查各種線與線之間的連接是否有短路現象。 第三步為加電檢查。當系統加電時,首先檢查所有插座或器件引腳的電源端是否達到符合要求的電壓值,接地端電壓值是否與零想接近,接固定電平的引腳端是否符合設計所需的電平。 第四步是聯機檢查。 在對硬件電路調試過程中,還遇到了不少問題,第一次當把所有的元件都焊上去后,準備調試,這個時候才發現正負極的插針離得太近了,不容易接電源,按理來說這種小錯本不該發生的,出錯的原因就是因為自己太多馬虎,所以說,做任何事情都必需經過“三思而后行”,不能僅停留在想象的階段,還需要自己身體力行,方能取得好的結果,才能使自己的經驗更加豐富,而且來不得半點的馬虎,否則浪費了時間和精力。 首先燒入顯示程序,看顯示正不正常,整體功能是否都還完善。在調試程序時,發現有的指令用的不正確,功能不能達到自己想要的效果,電路功能也不能正常的運行,另外軟件程序中的延時有的過長、有的過短,長短不一。類似的現象還有很多就不一一列舉了。 在完成之后,一共要測試兩個功能。第一個測試濃度達到設定值之后,是否會自動報警。第二個測試溫度上升到報警值之后,能否實現自動實現報警功能。 5.2 軟件調試在軟件調試時,對每個模塊分別進行測試,采取步步為營的策略,這樣方便對一個模塊都起到一個檢查的作用,第一步完成OLED顯示,然后接下來單片機的時鐘電路與復位電路,最后就是時鐘等驅動程序的調試,下一步煙霧檢測AD采集電路的編寫﹑按鍵控制電路的設計,最后根據系統所需然后設置自己想要的功能,進行微型修改。 然后就要在實際操作的過程中,首先把顯示程序燒入進去,看顯示正不正常。在調試程序結束之后,發現有的指令用的并不是很正確,導致電路功并不能完全實現,另外軟件程序中的延時有的過長、有的過短,當出現這些這些問題之后,就要對自己的程序進行不斷的修改,不斷的查資料,這樣才能解決出現的問題得出自己想要的結果。 系統用到了多個中斷程序,在設計過程中遇到過中斷嵌套而無法退出的問題,這個時候就需要設定中斷優先級,其中顯示屏引腳中斷優先級最高。 6 結束語本次設計的煙霧檢測報警器在生產與生活等情況下可以保障它們的安全,避免發生火災和爆炸事故,在火災發生的現場,還可以防止煤氣中毒的發生,在防火、防爆和安全生產等場所中,這都是所必備的一種儀器,有此可以想象的出來,煙霧報警器具有巨大的市場空間和不錯的發展前景。本論文建立在對煙霧傳感器和報警技術進行過深入研究的基礎上,然后對國內和國外相同款式產品的技術特點進行全面比較,然后對系統的設計方案進行完,并且最后還要確定系統的設計方案。并對儀器的整體設計進行確定和對各個組成部分還要進行詳細的分析和設計,從而才能設計自己所需要的產品。 本論文設計的煙霧報警器由兩大部分構成,一部分分為煙霧信號采集電路,另一部分分為單片機控制電路。根據設計要求、使用環境、成本以及眾多因素,從而確定選用MQ-2型半導體電阻式煙霧傳感器。該傳感器因為具有廣譜型半導體敏感器件,從而對以烷類煙霧為主的多種煙霧都不錯的良好敏感特性。它的靈敏度適中,而且還具有響應與恢復特性好等特點,而且在工作的過程中,穩定性、重現性,都不怎么易受環境影響及抗溫濕度影響等優良性能。 在系統單片機控制電路的設計上,為了使儀器具有結構簡單、體積小、性能穩定、成本低等優良性能,在前期的設計中采用了高性能、高整合度的STC89C52單片機作為核心芯片,充分利用了其高速數據處理能力和豐富的片內外設,實現了儀器的小型化和智能化,因為有了這些獨特設計,才能達到自己預期的效果。由于煙霧傳感器需要在加熱狀態下工作,所以溫度便是一個決定因素,在傳感器工作的時候,溫度越高,反應速度隨著溫度的升高而加快,響應時間和恢復時間也跟著加快。為保證傳感器準確地、穩定地工作,提高響應時間。需要向煙霧傳感器持續供給5V的加熱電壓。煙霧報警器能在范圍比較廣的溫度范圍工作,可將煙霧濃度顯示用LED數碼管顯示。當煙霧的濃度達到自己在開始設定的報警濃度時,就會發出報警的滴答聲。 在現場進行標定及測試的過程中,我們需要分析煙霧濃度信號的實驗數據,利用這些數據計算本報警器顯示煙霧濃度與實際濃度之間的誤差為2.55%LEL,如果在所規定誤差范圍±5%LEL之內,這個數據滿足我們開始設定的檢測要求,達到了預期的設計效果,這就是我們所要得出的結論。 到目前為止畢業設計也即將告一段落了,在這次的畢業設計中,我更加了解理論知識和實踐能力的差距,如果自己光是知道一些理論知識,那是遠遠不夠的,還需要不斷地實踐,從而才能更好的鞏固自己所學到的知識。另一方面也意識到自己的短處與缺陷,培養了我的獨立思考能力,讓自己學到了很多以前從來沒有接觸過的知識,進一步提高了自己在實際設計過程中研究問題、發現問題、解決問題的能力,同時,也發現了自己的不足之處,和一些問題的存在,并有待進一步學習和發展,讓自己在未來的工作和學習之中更快的適應和提高自己。
致謝 在完成本設計的寫作過程中,我十分感謝我的指導老師—金老師。從論文的開始到結束,金老師一直都是很悉心的幫我修改著論文設計的過程中出現的各種問題和錯誤,對我論文設計的每個過程都嚴格的把關,幫助我開拓設計思路。在做畢業設計的過程中,自己因為雜事比較多,所以在論文這一塊都沒怎么花心思,很多次論文提交上去,都會出現很多小錯誤,自己又不知道怎么修改,基本都是老師在指導我。而且老師不僅在論文方面給了我很大幫助,在功課上對我也指導了很多,真的很感謝金老師。 自己在做論文的過程中,也清楚的意識到自己對本專業的茫然與無知,很多東西都不懂,回想自己大學四年的時光,也不知道自己是怎么機緣巧合的來到這個專業以及這個學校,只記得當初只是想跑到大城市去看看,然后想學一技傍身,剛好專業是電子科學與技術,所以才來到浙江傳媒學院。自己來到之后,才發現這不是自己感興趣的專業,所以在學習方面也沒怎么花時間,說實話挺可惜的,自己本專業都沒學到什么東西,于是在做畢業設計的時候就顯得異常的艱難,自己也清楚的意識到自己本專業知識的缺陷。 不過盡管是無意中來到了母校,但是在這里我還是要感謝我們的母校——浙江傳媒學院,因為她給了我很多幫助而且還給了我一個舞臺來施展自己的才華,來到這里之后,我才發現這里跟其他的學校氛圍不一樣,氣氛相對來說要活躍一些,開始我不怎么能接受,后面我也就慢慢地習慣;額!我很珍惜我大學的四年生活,給我留下了很多回憶,人生僅有一次,甚至畢業論文也是一樣,也只有這么一次,以后便再也沒有機會去寫了。此外我還要感謝我的同班各位同學以及和我一起生活的三個室友,正是與他們的交流合作使我不斷成長,受益頗多。最后要感謝我的家人以及我的朋友們,在他們的幫助下,我才得以能順利完成自己的畢業論文。 通過這次畢業設計,使我深刻地認識到學好專業知識的重要性,也理解了理論聯系實際的含義,并且檢驗了大學四年的學習成果。它是我這四年來所學知識的綜合運用和經驗的總結,通過此次設計也鍛煉了我個人的各方面能力,包括制圖、編程、動手以及溝通能力,所學知識更得到了升華。為以后在工作崗位上發揮自己的才能奠定了堅實的基礎。由于時間的倉促和個人專業水平的原因,整篇論文肯定存在著一定的錯誤和漏洞。懇請閱讀此篇論文的老師、同學,多予指正,不勝感激! 最后,再次對關心、幫助我的老師和同學表示衷心地感謝, 更感謝母校四年來對我的培養和教育,希望母校健康蓬勃發展,更加輝煌!等我在外拼搏成功之后,必會回來反哺母校,使母校能夠培育更多人才,為社會做出自己的一番貢獻。
附錄2 系統原理圖: 
單片機源程序如下:
- #include <reg52.h>
- #include "eepom52.h"
- #define uchar unsigned char
- #define uint unsigned int
- #include <intrins.h>
- //數碼管段選定義 0 1 2 3 4 5 6 7 8 9
- uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
- 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼
- //數碼管位選定義
- uchar code smg_we[]={0x7f,0xbf,0xdf,0xef};
- //uchar code smg_we[]={0xfe,0xfd,0xfb,0xf7};
- uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
- uchar smg_i = 3; //顯示數碼管的個位數
-
- sbit SCL=P3^4; //SCL定義為P1口的第3位腳,連接ADC0832SCL腳
- sbit DO=P3^3; //DO定義為P1口的第4位腳,連接ADC0832DO腳
- sbit CS=P3^2; //CS定義為P1口的第4位腳,連接ADC0832CS腳
-
- sbit dq = P3^5; //18b20 IO口的定義
- sbit beep = P3^6; //蜂鳴器IO口定義
- uint temperature,s_temp ; //溫度的變量
- uchar dengji,s_dengji; //煙物等級
- uchar shoudong; //手動報警鍵
- uint huoyan;
-
-
- bit flag_300ms ;
- uchar key_can; //按鍵值的變量
- uchar menu_1; //菜單設計的變量
- bit flag_lj_en; //按鍵連加使能
- bit flag_lj_3_en; //按鍵連3次連加后使能 加的數就越大了
- uchar key_time,flag_value; //用做連加的中間變量
- bit key_500ms ;
- uchar flag_clock;
- uchar zd_break_en,zd_break_value; //自動退出設置界面
- uchar a_a;
- /******************把數據保存到單片機內部eepom中******************/
- void write_eepom()
- {
- SectorErase(0x2000);
- byte_write(0x2000, s_temp);
- byte_write(0x2001, s_dengji);
- byte_write(0x2060, a_a);
- }
- /**************開機自檢eepom初始化*****************/
- void init_eepom()
- {
- read_eepom(); //先讀
- if(a_a != 1) //新的單片機初始單片機內問EEPOM
- {
- s_temp = 50;
- s_dengji = 5;
- a_a = 1;
- write_eepom();
- }
- }
-
- /***********************18b20初始化函數*****************************/
- void init_18b20()
- {
- bit q;
- dq = 1; //把總線拿高
- delay_uint(1); //15us
- dq = 0; //給復位脈沖
- delay_uint(80); //750us
- dq = 1; //把總線拿高 等待
- delay_uint(10); //110us
- q = dq; //讀取18b20初始化信號
- delay_uint(20); //200us
- dq = 1; //把總線拿高 釋放總線
- }
- /*************寫18b20內的數據***************/
- void write_18b20(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- { //寫數據是低位開始
- dq = 0; //把總線拿低寫時間隙開始
- dq = dat & 0x01; //向18b20總線寫數據了
- delay_uint(5); // 60us
- dq = 1; //釋放總線
- dat >>= 1;
- }
- }
- /*************讀取18b20內的數據***************/
- uchar read_18b20()
- {
- uchar i,value;
- for(i=0;i<8;i++)
- {
- dq = 0; //把總線拿低讀時間隙開始
- value >>= 1; //讀數據是低位開始
- dq = 1; //釋放總線
- if(dq == 1) //開始讀寫數據
- value |= 0x80;
- delay_uint(5); //60us 讀一個時間隙最少要保持60us的時間
- }
- return value; //返回數據
- }
- /*************讀取溫度的值 讀出來的是小數***************/
- uint read_temp()
- {
- uint value;
- uchar low; //在讀取溫度的時候如果中斷的太頻繁了,就應該把中斷給關了,否則會影響到18b20的時序
- init_18b20(); //初始化18b20
- write_18b20(0xcc); //跳過64位ROM
- write_18b20(0x44); //啟動一次溫度轉換命令
- delay_uint(50); //500us
- init_18b20(); //初始化18b20
- write_18b20(0xcc); //跳過64位ROM
- write_18b20(0xbe); //發出讀取暫存器命令
- EA = 0;
- low = read_18b20(); //讀溫度低字節
- value = read_18b20(); //讀溫度高字節
- EA = 1;
- value <<= 8; //把溫度的高位左移8位
- value |= low; //把讀出的溫度低位放到value的低八位中
- value *= 0.0625; //轉換到溫度值
- return value; //返回讀出的溫度
- }
-
- /***********讀數模轉換數據********************************************************/
- // 1 0 0 通道
- // 1 1 1 通道
- unsigned char ad0832read(bit SGL,bit ODD)
- {
- unsigned char i=0,value=0,value1=0;
- SCL=0;
- DO=1;
- CS=0; //開始
- SCL=1; //第一個上升沿
- SCL=0;
- DO=SGL;
- SCL=1; //第二個上升沿
- SCL=0;
- DO=ODD;
- SCL=1; //第三個上升沿
- SCL=0; //第三個下降沿
- DO=1;
- for(i=0;i<8;i++)
- {
- SCL=1;
- SCL=0; //開始從第四個下降沿接收數據
- value<<=1;
- if(DO)
- value++;
- }
- for(i=0;i<8;i++)
- { //接收校驗數據
- value1>>=1;
- if(DO)
- value1+=0x80;
- SCL=1;
- SCL=0;
- }
- CS=1;
- SCL=1;
- if(value==value1) //與校驗數據比較,正確就返回數據,否則返回0
- return value;
- return 0;
- }
- /****************報警函數***************/
- void clock_h_l()
- {
- static uchar value;
- if((dengji >= s_dengji) || (temperature >= s_temp) || (shoudong == 1)) //報警
- {
- value ++;
- if(value >= 3)
- {
- value = 10;
- beep = ~beep; //蜂鳴器報警
- }
- }else
- {
- if((dengji < s_dengji) && (temperature < (s_temp - 1)) && (shoudong == 0)) //取消報警
- {
- value = 0;
- beep = 1;
- }
- }
- }
- void main()
- {
- static uchar value;
- temperature = read_temp(); //讀取溫度值
- init_eepom(); //讀eepom數據
- time_init(); //初始化定時器
- delay_1ms(650);
- while(1)
- {
- key(); //獨立按鍵程序
- if(key_can < 10)
- {
- key_with(); //按鍵按下要執行的程序
- }
- temperature = read_temp(); //讀取溫度值
- if(flag_300ms == 1)
- {
- flag_300ms = 0;
- clock_h_l();
- dengji = ad0832read(1,0);
- dengji = dengji * 10 / 250;
- huoyan = ad0832read(1,1);
- huoyan = 10 - huoyan * 10 / 250;
- if(menu_1 == 0)
- {
- if(temperature >= 99)
- temperature = 99;
- if(value > 20)
- value = 0;
- if(huoyan < 2)
- {
- smg_i = 4;
- dis_smg[3]=smg_du[dengji]; //顯示煙物報警等級
- dis_smg[2]= 0xbf; // -
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于STC89C52的火災自動報警系統的設計與開發.docx
(2.51 MB, 下載次數: 141)
2018-11-10 12:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|