找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于單片機(jī)的天然氣泄漏報(bào)警系統(tǒng)設(shè)計(jì)文檔

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:419006 發(fā)表于 2018-11-1 13:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
摘   要
隨著經(jīng)濟(jì)和科學(xué)技術(shù)的快速發(fā)展,人們對(duì)生活質(zhì)量的提高和生活環(huán)境的改善越來越重視。天然氣作為一種清潔型能源進(jìn)入家庭得到廣泛使用,為人們的生活帶來了方便,減少了城市的污染,提高了生活質(zhì)量和效率,但是同時(shí),天然氣也是潛在的“危險(xiǎn)品”,天然氣在使用過程中,若管道和閥門密封不好,一旦泄漏出去極易爆炸,危及人們的生命財(cái)產(chǎn)安全。面對(duì)燃?xì)庑孤┒斐傻姆N種事故威脅,我們需要一個(gè)解決辦法。然而使用天燃?xì)鈾z測(cè)系統(tǒng)成為了一個(gè)重要的研究課題。
本畢業(yè)設(shè)計(jì)的題目是基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)設(shè)計(jì)。本設(shè)計(jì)主要是由一個(gè)MQ-4傳感器采集氣體濃度信號(hào),系統(tǒng)建立濃度與電壓關(guān)系,進(jìn)行濃度電壓轉(zhuǎn)換,濃度顯示,聲光報(bào)警構(gòu)成的報(bào)警裝置。本系統(tǒng)由ADC0832處理數(shù)據(jù),MCU采用STC89C52,完成氣體濃度信號(hào)的采集顯示內(nèi)容的傳輸、顯示等功能。本設(shè)計(jì)的可燃?xì)怏w報(bào)警器由六個(gè)部分組成:傳感器、數(shù)碼管顯示器、聲光報(bào)警器、控制電路、A/D轉(zhuǎn)換和電源模塊。軟件上采用C語言編程,結(jié)構(gòu)簡(jiǎn)單運(yùn)行穩(wěn)定。
該檢測(cè)系統(tǒng)能夠檢測(cè)天然氣濃度,當(dāng)檢測(cè)天然氣濃度低于設(shè)定報(bào)警閾值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)天然氣濃度超出設(shè)定報(bào)警閾值時(shí)給出聲光報(bào)警,并伴有語音提醒。
目   錄
摘   要
Abstract
緒   論
1基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)概述
1.1天然氣泄漏檢測(cè)報(bào)警器的概述
1.2家用天然氣泄漏檢測(cè)報(bào)警器現(xiàn)狀
1.3家庭燃?xì)庑孤﹫?bào)警的發(fā)展趨勢(shì)
1.4天然氣泄漏檢測(cè)報(bào)警設(shè)計(jì)意義
2天然氣泄露檢測(cè)報(bào)警系統(tǒng)的方案設(shè)計(jì)
2.1天然氣泄漏檢測(cè)報(bào)警系統(tǒng)簡(jiǎn)介
2.2氣體傳感器的選型
2.3 天然氣泄露報(bào)警系統(tǒng)的整體設(shè)計(jì)方案
2.3.1天然氣泄漏報(bào)警器工作原理
2.3.2天然氣泄漏報(bào)警器的結(jié)構(gòu)
2.3.3報(bào)警器各模塊的功能
3天然氣泄露報(bào)警的硬件部分設(shè)計(jì)
3.1主控電路設(shè)計(jì)
3.1.1STC89C52單片機(jī)簡(jiǎn)介
3.1.2 STC89C52單片機(jī)的基本結(jié)構(gòu)
3.1.3 STC89C52RC單片機(jī)的引腳
3.2電源電路設(shè)計(jì)
3.3可燃?xì)怏w信號(hào)采集部分
3.4 MQ-4氣體傳感器
3.5 A/D轉(zhuǎn)換部分
3.5.1 A/D轉(zhuǎn)換電路
3.6 氣體結(jié)果測(cè)量計(jì)算
3.7 聲光報(bào)警部分
3.8 計(jì)數(shù)器譯碼顯示電路
3.8.1 LED 的綜述
3.8.2 LED 的結(jié)構(gòu)
3.8.3 LED數(shù)碼管的顯示方法
3.9 復(fù)位電路
3.10 最小系統(tǒng)及按鍵
4燃?xì)庑孤z測(cè)報(bào)警系統(tǒng)的軟件部分
4.1程序設(shè)計(jì)流程與編程
4.2系統(tǒng)調(diào)試
結(jié)    論
參考文獻(xiàn)
附錄A   基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)原理圖
附錄B   基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)結(jié)果圖
附錄C   C程序
致    謝
緒   論

隨著人民生活水平的提高及環(huán)保意識(shí)的增強(qiáng),世界需求干凈能源的呼聲高漲,各國(guó)政府也透過立法程序來傳達(dá)這種趨勢(shì),天然氣曾被視為最干凈的能源之一,再加上1990年中東的波斯灣危機(jī),加深美國(guó)及主要石油國(guó)家研發(fā)替代能源的決心,因此,在還未發(fā)現(xiàn)真正的替代能源前,天然氣需求量自然消耗會(huì)增加。

天然氣是一種高效、清潔、經(jīng)濟(jì)、穩(wěn)定的生活能源。近年來,隨著我國(guó)燃?xì)獾淖兏锛拔鳉鈻|輸工程的進(jìn)行,天然氣通過管道走進(jìn)了千家萬戶,極大地方便我們的生產(chǎn)生活,同時(shí)也帶來了不少的安全隱患。

從工農(nóng)業(yè)生產(chǎn)的各個(gè)領(lǐng)域到人們家庭生活的各個(gè)方面,人們直接或間接接觸各種有毒有害氣體的機(jī)會(huì)大大增加,由此而引起的中毒,火災(zāi)和爆炸事故屢見不鮮,嚴(yán)重威脅到人們的生命和財(cái)產(chǎn)安全,成為一種新的社會(huì)公害。因此對(duì)環(huán)境氣體進(jìn)行檢測(cè)和分析技術(shù)的研究日益受到人們的重視。傳統(tǒng)的分析氣體組分和濃度的方法是以色譜法為代表的各種化學(xué)計(jì)量方法,盡管其測(cè)量精度很高,但操作手續(xù)繁雜,實(shí)驗(yàn)周期長(zhǎng),無法對(duì)有毒、有害氣體進(jìn)行實(shí)時(shí)、連續(xù)、瞬時(shí)檢測(cè),而氣體傳感器則滿足這種要求,并且在人們?nèi)粘I钪袑?duì)減少氣體爆炸、火災(zāi)等事故已經(jīng)發(fā)揮著越來越大的作用。

目前世界各大強(qiáng)國(guó)都把傳感器技術(shù)列為國(guó)家發(fā)展的重點(diǎn)技術(shù),國(guó)防現(xiàn)代化、工業(yè)生產(chǎn)過程自動(dòng)化、家庭電器化都與傳感器的發(fā)展休戚相關(guān),今天的傳感器技術(shù)已滲透到國(guó)民經(jīng)濟(jì)的各個(gè)領(lǐng)域,日益突出它的重要作用。集成化、多功能化、智能化、加工技術(shù)微精細(xì)化、指標(biāo)高精度化和性能高穩(wěn)定、高可靠化已經(jīng)成為人們開發(fā)和研究傳感器的重要方向。

泄漏檢測(cè)報(bào)警系統(tǒng)被廣泛的應(yīng)用于各個(gè)領(lǐng)域,如石油化工企業(yè)、石油運(yùn)輸管線、城市自來水地下管線、鍋爐爐管、發(fā)動(dòng)機(jī)箱體、缸蓋等各種領(lǐng)域。

泄漏檢測(cè)技術(shù)在管道檢測(cè)之中的應(yīng)用得到了很好的發(fā)展。對(duì)于管道的泄漏檢測(cè)要滿足以下幾個(gè)要求:

1.準(zhǔn)確可靠地判斷泄漏的發(fā)生,并能夠在較短的時(shí)間內(nèi)判斷出泄漏點(diǎn)具體的位置。

2.準(zhǔn)確可靠地判斷泄漏程度,能對(duì)較小量的泄漏做出判斷。

3.檢測(cè)原理簡(jiǎn)單,易于操作和維護(hù)。


1基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)概述
1.1天然氣泄漏檢測(cè)報(bào)警器的概述

天然氣泄漏檢測(cè)報(bào)警器是燃?xì)獍踩O(shè)備非常重要的一部分,它是由氣敏傳感器、單片機(jī)和報(bào)警器組成。它是安全使用城市燃?xì)獾淖詈笠坏辣Wo(hù)設(shè)備。天然氣泄漏檢測(cè)報(bào)警器通過氣敏傳感器探測(cè)周圍環(huán)境中的天然氣濃度,在通過采樣電路,將探測(cè)到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)傳遞給控制器或控制電路。當(dāng)檢測(cè)氣體濃度低于設(shè)定報(bào)警閾值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)氣體濃度超出設(shè)定報(bào)警閾值時(shí)給出聲光報(bào)警。氣敏傳感器是一種檢測(cè)特定氣體的傳感器。它主要包括半導(dǎo)體氣敏傳感器、接觸燃燒式氣敏傳感器和電化學(xué)氣敏傳感器等,這些傳感器都是通過對(duì)周圍環(huán)境中的可燃?xì)怏w的吸附,在傳感器表面產(chǎn)生化學(xué)反應(yīng)或電化學(xué)反應(yīng),造成傳感器的電物理特性的改變,經(jīng)單片機(jī)處理后轉(zhuǎn)換成檢測(cè)氣體的響應(yīng)濃度 。其中用的最多的是半導(dǎo)體氣敏傳感器。

1.2家用天然氣泄漏檢測(cè)報(bào)警器現(xiàn)狀

現(xiàn)在每家每戶只要安裝天然氣管道的都必須安裝天然氣報(bào)警器。對(duì)于目前市場(chǎng)上天然氣報(bào)警存在以下問題:1、對(duì)天然氣的檢測(cè)不敏感或者檢測(cè)到天然氣泄漏并不能及時(shí)報(bào)警作出相應(yīng)處理;2、對(duì)于天然氣檢測(cè)過于敏感,正常做飯燒水時(shí)難免會(huì)有少數(shù)天然氣溢出,此時(shí)報(bào)警器就不停關(guān)閥報(bào)警嚴(yán)重影響生活效率;3、存在謊報(bào)誤報(bào)的現(xiàn)象,當(dāng)空氣中存油煙時(shí)也會(huì)關(guān)閥報(bào)警所以很多家庭對(duì)探測(cè)報(bào)警器束之高閣當(dāng)成擺設(shè),買了并不安裝;4、功能簡(jiǎn)單,當(dāng)天然氣發(fā)生泄漏時(shí)只會(huì)關(guān)閥報(bào)警,倘若家中無人閥門不緊,不能及時(shí)處理險(xiǎn)情通知戶主。所以市面上的天然氣泄漏檢測(cè)報(bào)警器亟待于改進(jìn),從而才能更好地保障我們的生命財(cái)產(chǎn)安全,提高我們的生活質(zhì)量。

1.3家庭燃?xì)庑孤﹫?bào)警的發(fā)展趨勢(shì)

二十多年前,我國(guó)的安防報(bào)警產(chǎn)品剛剛起步,無論產(chǎn)品技術(shù)含量、產(chǎn)品系列完整性、使用性,還是社會(huì)影響程度都是相當(dāng)?shù)偷。?guó)外的產(chǎn)品和品牌卻占領(lǐng)我們的大部分市場(chǎng)。由于中國(guó)的建設(shè)正在面臨飛速發(fā)展,我們應(yīng)該抓住廣闊的市場(chǎng)空間,慶幸的是中國(guó)企業(yè)抓住了這次機(jī)遇,頂住了挑戰(zhàn),先是一批國(guó)家的科研院所,后是一批國(guó)營(yíng)企業(yè)、民營(yíng)企業(yè),業(yè)內(nèi)也吸引和凝聚一大批國(guó)內(nèi)的技術(shù)和管理精英,花了多年時(shí)間,通過幾次產(chǎn)品更新?lián)Q代,就使自己的產(chǎn)品緊緊跟上了國(guó)際水平,并且奪回了大部分國(guó)內(nèi)市場(chǎng),使得現(xiàn)在大多國(guó)外產(chǎn)品只有招架之勢(shì),這是典型的自力更生,走自己的路。當(dāng)然目前而言,我們基本占據(jù)的是國(guó)內(nèi)市場(chǎng),對(duì)外還剛剛啟動(dòng)。但是,中國(guó)企業(yè)已經(jīng)做好準(zhǔn)備進(jìn)軍海外市場(chǎng)。

1.4天然氣泄漏檢測(cè)報(bào)警設(shè)計(jì)意義

天然氣泄漏造成的事故給我們帶來了不少的警示,而市場(chǎng)上的天然氣檢測(cè)報(bào)警器并不能為我們提供完善的安全保障,為此我們要設(shè)計(jì)功能更加完善,探測(cè)更加精確的天然氣報(bào)警器是對(duì)付燃?xì)鉄o形殺手的重要手段之一。燃?xì)鈱<抑赋,燃(xì)庑孤┗驈U氣排放而大量產(chǎn)生的一氧化碳是燃?xì)庵卸臼录母矗绮捎锰烊細(xì)庑孤﹫?bào)警器就能得到及時(shí)的警示。有關(guān)部門經(jīng)長(zhǎng)期測(cè)試得出結(jié)論,天燃?xì)鈭?bào)警器防止天然氣泄漏事故發(fā)生的有效率達(dá)95%以上。

計(jì)算機(jī)的普及和信息技術(shù)的迅猛發(fā)展,人們己不滿足于傳統(tǒng)的居住環(huán)境,對(duì)家庭及住宅小區(qū)提出了更高的要求,智能化被引入家庭,并迅速在世界各地發(fā)展起來。人們對(duì)居住環(huán)境要求的日見增高,體現(xiàn)在希望住宅不僅更便利、舒適而且更安全。

單片機(jī)在日用電子產(chǎn)品中的應(yīng)用越來越廣泛,燃?xì)庑孤﹦t是人們?nèi)粘I钪谐3P枰獪y(cè)量和控制的一個(gè)問題。單片機(jī)有利于為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施。為了防止中毒事件再次發(fā)生,提出利用單片機(jī)系統(tǒng)進(jìn)行有效的預(yù)防對(duì)策。所以怎樣防止燃?xì)庵卸九c爆炸已成為人們的迫切需要。


2天然氣泄露檢測(cè)報(bào)警系統(tǒng)的方案設(shè)計(jì)
2.1天然氣泄漏檢測(cè)報(bào)警系統(tǒng)簡(jiǎn)介

天然氣泄漏檢測(cè)報(bào)警系統(tǒng)不僅能夠檢測(cè)環(huán)境中的天然氣濃度,同時(shí)具有報(bào)警功能。儀器的最基本組成部分應(yīng)包括:氣體信號(hào)采集電路、模數(shù)轉(zhuǎn)換電路、單片機(jī)控制電路。

氣體信號(hào)采集電路一般由氣敏傳感器和模擬放大電路組成,將氣體信號(hào)轉(zhuǎn)化為模擬的電信號(hào)。模數(shù)轉(zhuǎn)換電路將從燃?xì)鈾z測(cè)電路送出的模擬信號(hào)轉(zhuǎn)換成單片機(jī)可識(shí)別的數(shù)字信號(hào)后送入單片機(jī)。單片機(jī)對(duì)該數(shù)字信號(hào)進(jìn)行處理,并對(duì)處理后的數(shù)據(jù)進(jìn)行分析,看是否大于或等于某個(gè)預(yù)設(shè)值(報(bào)警限),當(dāng)檢測(cè)氣體濃度低于設(shè)定報(bào)警閾值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)氣體濃度超出設(shè)定報(bào)警閾值時(shí)給出聲光報(bào)警。同時(shí)報(bào)警裝置會(huì)通過語音模塊向戶主發(fā)送語音提醒以便讓戶主及時(shí)做出判斷處理。為使報(bào)警裝置更加完善,可以在聲音報(bào)警基礎(chǔ)上,加入閃光報(bào)警,變化的光信號(hào)可以引起用戶注意,彌補(bǔ)嘈雜環(huán)境中聲音報(bào)警的局限。以上是根據(jù)檢測(cè)報(bào)警器應(yīng)具備的功能,提出的整體設(shè)計(jì)思路。

氣敏傳感器及單片機(jī)是燃?xì)庑孤﹫?bào)警器的兩大核心,根據(jù)報(bào)警器功能的需要,選擇合適、精確、經(jīng)濟(jì)的氣敏傳感器及單片機(jī)芯片是至關(guān)重要的。傳感器的選型將在后面介紹。單片機(jī)作為硬件電路的核心,它的概況將在第三章詳述。

2.2氣體傳感器的選型

氣體傳感器屬于氣敏傳感器。氣敏傳感器是用來檢測(cè)氣體類別、濃度和成分的傳感器。它將氣體種類及其濃度等有關(guān)的信息轉(zhuǎn)換成電信號(hào),根據(jù)這些電信號(hào)的強(qiáng)弱便可獲得與待測(cè)氣體在環(huán)境中存在情況有關(guān)的信息。所以氣體傳感器是儀表的核心組成部分之一。由此可見,氣體傳感器的選型是非常重要的。

該設(shè)計(jì)的天然氣泄漏報(bào)警器主要應(yīng)用在廚房中,根據(jù)報(bào)警器檢測(cè)氣體種類的要求,一般選用接觸燃燒式氣敏傳感器或半導(dǎo)體氣敏傳感器。接觸燃燒式氣敏傳感器的探頭會(huì)出現(xiàn)阻緩及中毒的問題。阻緩是當(dāng)在氣體與空氣含硫物質(zhì)混合的情況下,則有可能在無焰燃燒的同時(shí),有些固態(tài)物質(zhì)附著在催化元件表面,阻塞載體的微孔,從而引起響應(yīng)緩慢反應(yīng)滯緩,靈敏度降低。雖然將阻緩的傳感器再放回新鮮空氣環(huán)境中有得到某種程度的恢復(fù)的可能,但是如果長(zhǎng)期暴露在這樣的環(huán)境中,其靈敏度會(huì)不斷下降,導(dǎo)致該傳感器最終喪失檢測(cè)煙霧的能力。中毒是如果環(huán)境空氣中含有硅烷之類的物質(zhì)時(shí),則傳感器將使催化元件產(chǎn)生不可逆轉(zhuǎn)的中毒,以致靈敏度很快就喪失。當(dāng)懷疑檢測(cè)環(huán)境中存在這些物質(zhì)時(shí),需要經(jīng)常對(duì)探頭進(jìn)行標(biāo)定。經(jīng)常對(duì)傳感器進(jìn)行標(biāo)定,是保證其準(zhǔn)確性的必要的途徑。一般連續(xù)使用兩個(gè)月后應(yīng)對(duì)傳感器進(jìn)行量程校準(zhǔn),這種經(jīng)常性對(duì)傳感器的維護(hù)需要專業(yè)人員和相應(yīng)設(shè)備,特此排除接觸式氣體傳感器,剩下只能選用半導(dǎo)體氣敏傳感器。半導(dǎo)體氣敏傳感器包括用氧化物半導(dǎo)體陶瓷材料作為敏感體制作的氣體傳感器以及用單晶半導(dǎo)體器件制作的氣體傳感器,它具有靈敏度高,響應(yīng)快、體積小、結(jié)構(gòu)簡(jiǎn)單,使用方便、價(jià)格便宜等優(yōu)點(diǎn),因而得到廣泛應(yīng)用。半導(dǎo)體氣敏傳感器的性能主要看其靈敏度、選擇性(抗干擾性)和穩(wěn)定性(使用壽命)。

經(jīng)過對(duì)比上述兩種氣敏傳感器的應(yīng)用特性,發(fā)現(xiàn)半導(dǎo)體氣敏傳感器的優(yōu)點(diǎn)更加突出:靈敏度高、響應(yīng)快、抗干擾性好、使用方便、價(jià)格便宜,且不會(huì)發(fā)生探頭阻緩及中毒現(xiàn)象,維護(hù)成本較低等。因此,本設(shè)計(jì)采用半導(dǎo)體氣敏傳感器作為報(bào)警器氣體信息采集部分的核心。而在眾多半導(dǎo)體氣敏傳感器中,本設(shè)計(jì)選用MQ-4型氣敏傳感器,這種型號(hào)的傳感器對(duì)天然氣有很高的靈敏度對(duì)乙醇的靈敏度很低,具有快速反應(yīng)快速恢復(fù)、使用壽命長(zhǎng)、穩(wěn)定可靠等優(yōu)點(diǎn)。

2.3 天然氣泄露報(bào)警系統(tǒng)的整體設(shè)計(jì)方案
2.3.1天然氣泄漏報(bào)警器工作原理

本論文中的天然氣泄漏報(bào)警器以STC89C52單片機(jī)為控制核心,通過MQ-4型電阻式半導(dǎo)體傳感器采集空氣中天然氣濃度。氣體傳感器MQ-4輸出的是模擬量,其作用是把探測(cè)到空氣中的天然氣的濃度轉(zhuǎn)換成對(duì)應(yīng)的電壓信號(hào),電壓信號(hào)送入模數(shù)轉(zhuǎn)換芯片ADC0832轉(zhuǎn)換成數(shù)字信號(hào),轉(zhuǎn)換成的數(shù)字信號(hào)送入STC89C52單片機(jī),單片機(jī)對(duì)數(shù)據(jù)進(jìn)行線性化處理,將數(shù)字化電壓信號(hào)轉(zhuǎn)化成為對(duì)應(yīng)的濃度值顯示到數(shù)碼管上,同時(shí)判斷氣體濃度值是否超出報(bào)警限,當(dāng)檢測(cè)氣體濃度低于設(shè)定報(bào)警閾值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)氣體濃度超出設(shè)定報(bào)警閾值時(shí)給出聲光報(bào)警。

2.3.2天然氣泄漏報(bào)警器的結(jié)構(gòu)

隨著信息技術(shù)的發(fā)展,家用電器趨向于智能化、網(wǎng)絡(luò)化、信息化。為了滿足家庭對(duì)可燃性易爆氣體安全性要求,同時(shí)為了符合時(shí)代發(fā)展的潮流,在傳統(tǒng)的天然氣泄漏檢測(cè)報(bào)警器的基礎(chǔ)上對(duì)其的硬件結(jié)構(gòu)上特進(jìn)行如下設(shè)計(jì):

天然氣泄露檢測(cè)報(bào)警系統(tǒng)結(jié)構(gòu)框圖如圖2.1所示,該系統(tǒng)以STC89C52單片機(jī)為核心,天然氣檢測(cè)報(bào)警系統(tǒng)要完成天然氣信號(hào)采集處理、顯示和控制報(bào)警3大功能?煞譃殡娫茨K、天然氣信號(hào)采集模塊、A/D轉(zhuǎn)換模塊、聲光報(bào)警模塊、數(shù)碼管顯示模塊和單片機(jī)控制模塊。STC89C52單片機(jī)是51系列單片機(jī)的一個(gè)成員,是8051單片機(jī)的升級(jí)版,和51系列單片機(jī)的指令和輸出管腳相兼容。氣體檢測(cè)模塊依靠MQ-4傳感器和ADC0832轉(zhuǎn)換芯片、顯示模塊依靠數(shù)碼管完成顯示功能。


                     


圖2.1天然氣泄露檢測(cè)報(bào)警系統(tǒng)結(jié)構(gòu)框圖圖

2.3.3報(bào)警器各模塊的功能

(1)電源模塊:提供電源、保護(hù)電路、電壓變換、穩(wěn)壓;

(2)天然氣信號(hào)采集模塊:實(shí)時(shí)采集氣體濃度;

(3)A/D轉(zhuǎn)換模塊:把采集的模擬信號(hào)轉(zhuǎn)變成數(shù)字信號(hào)傳送給單片機(jī);

(4)聲光報(bào)警模塊:當(dāng)檢測(cè)到氣體泄漏值超過報(bào)警限時(shí),發(fā)生報(bào)警;

(5)顯示模塊:顯示氣體濃度和報(bào)警限;

(6)鍵盤模塊:通過按動(dòng)上下鍵調(diào)節(jié)報(bào)警限;

(7)語音模塊:向戶主提供語音提醒;   


3天然氣泄露報(bào)警的硬件部分設(shè)計(jì)3.1主控電路設(shè)計(jì)3.1.1STC89C52單片機(jī)簡(jiǎn)介

本設(shè)計(jì)采用STC89C52單片機(jī)作為系統(tǒng)的處理器, STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。 具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32 位I/O 口線,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口?臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。

它有幾個(gè)主要組成部分:中央處理器、存儲(chǔ)器、并行I/O口、定時(shí)器/計(jì)數(shù)器。STC89C52構(gòu)成的單片機(jī)系統(tǒng)是具有簡(jiǎn)單的結(jié)構(gòu)、低廉的價(jià)格、高效的微控系統(tǒng),具有較高的性價(jià)比。STC89C52的主要性能:首先它是8051單片機(jī)的升級(jí)版,具有6時(shí)鐘/機(jī)器周期和12時(shí)鐘/機(jī)器周期可以任意選擇的特點(diǎn),其指令代碼完全兼容傳統(tǒng)的8051。在IO口方面,通用I/O口(32個(gè)),復(fù)位后:P1/P2/P3是準(zhǔn)雙向口/弱上拉,P0口是漏極開路輸出,作為總線擴(kuò)展用時(shí),不必加上拉電阻,當(dāng)作為I/O口用時(shí),要加上拉電阻。具有EEPROM功能和看門狗功能,3個(gè)16位定時(shí)器/計(jì)數(shù)器(即定時(shí)器T0、T1、T2),4路外部中斷,下降沿中斷或低電平觸發(fā)電路。

3.1.2 STC89C52單片機(jī)的基本結(jié)構(gòu)

STC89C52單片機(jī)的基本結(jié)構(gòu)如圖3.1所示。



圖3.1基本結(jié)構(gòu)圖

由圖可見,STC89C52單片機(jī)主要由以下部分組成:

(1)CPU系統(tǒng):8位CPU和閃爍存儲(chǔ)器;時(shí)鐘電路;總線控制邏輯。

(2)存儲(chǔ)器系統(tǒng):8KB的程序存儲(chǔ)器(ROM/EPROM/Flash);512字節(jié)數(shù)據(jù)存儲(chǔ)器(RAM)。

(3)I/O口和其他動(dòng)能單元:4個(gè)并行I/O口;3個(gè)16位定時(shí)/計(jì)數(shù)器;2個(gè)全雙工串行通信口;中斷系統(tǒng)(5個(gè)中斷源)

3.1.3 STC89C52RC單片機(jī)的引腳

圖3.2 STC89C52管腳示意圖

1.引腳的分類

(1)主電源及時(shí)鐘引腳:VCC、GND等。

(2)P0端口(P0.0~P0.7,39~32引腳)。P0口是一個(gè)漏極開路的8位雙向I/O口。作為輸出端口,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL負(fù)載,對(duì)端口P0寫入“1”時(shí),可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時(shí),P0口內(nèi)部上拉電阻有效。在Flash ROM編程時(shí),P0端口接收指令字節(jié);而在校驗(yàn)程序時(shí),則輸出指令字節(jié)。驗(yàn)證時(shí),要求接10K的上拉電阻。

(3)P1端口(P1.0~P1.7,1~8引腳):P1口是一個(gè)內(nèi)部自帶上拉的8位雙向I/O口。P1的輸出緩沖器可以直接驅(qū)動(dòng)4個(gè)TTL的輸入。給端口寫“1”時(shí),利用內(nèi)部上拉電阻可以把端口拉高。當(dāng)把P1口用作輸入口來使用時(shí),因?yàn)橛袃?nèi)部上拉電阻,那些被外部拉低的端口就會(huì)輸出電流。

  表3.1 P1.0和P1.1引腳復(fù)用功能

引腳號(hào)

功能特性

P1.0

T2(定時(shí)器/計(jì)數(shù)器2外部計(jì)數(shù)輸入),時(shí)鐘輸出

P1.1

T2EX(定時(shí)器/計(jì)數(shù)器2捕獲/重裝觸發(fā)和方向控制)


(4)P2端口(P2.0~P2.7,21~28引腳):P2口是一個(gè)內(nèi)部帶上拉的8位雙向I/O端口。P2的輸出緩沖器也可以驅(qū)動(dòng)4個(gè)TTL的輸入。當(dāng)給端口寫入1時(shí),利用內(nèi)部的上拉電阻可以把端口拉到高,此時(shí)P2口可以被用作輸入口。P2作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,那些被外部器件拉低的引腳就會(huì)輸出電流。P2口也可以訪問外部存儲(chǔ)芯片,訪問16位的存儲(chǔ)器時(shí),P2送出的是高8位的地址。在訪問8位地址的外部芯片存儲(chǔ)器時(shí),P2口引腳上的內(nèi)容(就是專用寄存器的SFR區(qū)中的,P2口寄存器的內(nèi)容),在訪問的整個(gè)期間都不改變。

(5)P3端口(P3.0~P3.7,10~17引腳):P3是一個(gè)內(nèi)部帶上拉的8位雙向I/O端口。P3口的輸出緩沖器可直接驅(qū)動(dòng)4個(gè)TTL輸入。給端口寫1時(shí),利用內(nèi)部的上拉電阻把端口拉高,這時(shí)P3口就可以作為輸入口。當(dāng)P3用做輸入口使用時(shí),因?yàn)閮?nèi)部有上拉電阻,那些被外部器件拉低的引腳就會(huì)輸入一個(gè)電流。

在對(duì)Flash ROM編程或程序校驗(yàn)時(shí),P3還接收一些控制信號(hào),P1接收低8位地址。

RST(9引腳):復(fù)位輸入。當(dāng)連續(xù)輸入兩個(gè)機(jī)器周期以上的高電平時(shí)才能有效,用來完成單片機(jī)的復(fù)位初始化操作。看門狗計(jì)時(shí)完成后,RST引腳輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以取消此功能。DISRTO位的默認(rèn)狀態(tài)是復(fù)位高電平有效。

ALE(30引腳):地址鎖存控制信號(hào)的作用在訪問外部的存儲(chǔ)器時(shí),鎖存低8位地址的脈沖。在Flash編程時(shí),在此引腳(PROG)也用做編程輸入脈沖在一般情況下,ALE會(huì)以晶振頻率的1/6的頻率出脈沖,可以用來作為外部器件的定時(shí)器或

時(shí)鐘來使用(本設(shè)計(jì)就用到單片機(jī)的ALE管腳通過四分頻后為ADC0809提供時(shí)鐘)。

PSEN(29引腳):外部程序存儲(chǔ)器的選通管腳。當(dāng)STC89C52執(zhí)行外部程序存儲(chǔ)器的程序代碼時(shí),PSEN需要在每個(gè)機(jī)器周期內(nèi)需要被激活兩次,而訪問外部的數(shù)據(jù)存儲(chǔ)器時(shí),PSEN就不需要被激活。

EA/VPP(31引腳):訪問外部程序存儲(chǔ)器的控制管腳。為了使從外部程序存儲(chǔ)器的0000H到FFFFH讀取指令,EA必須接地。注意加密方式1時(shí),EA將內(nèi)部鎖定位RESET。若是執(zhí)行內(nèi)部的程序指令,EA需要接VCC。

XTAL1(19引腳):振蕩器反相放大器和時(shí)鐘發(fā)生電路的輸入管腳。

XTAL2(18引腳):振蕩器反相放大器的輸出端。

振蕩器特性: XTAL1和XTAL2分別是反向放大器的輸入輸出端。該反向放大器可以被配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩都可以被采用。若采用的是外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2則不能接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻的觸發(fā)器,所以說對(duì)外部時(shí)鐘信號(hào)的脈寬沒有任何要求,但必須要保證脈沖的高低電平所要求的寬度。

P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如表3.2所示:

表3.2 P3口管腳               

管腳
配置功能
P3.0
RXD(串行輸入端口)
P3.1
TXD(串行輸出端口)
P3.2
INT0(外部中斷0端口)
P3.3
INT1(外部中斷1端口)
P3.4
T0(定時(shí)器0的外部輸入)
P3.5
T1(定時(shí)器1的外部輸入)
P3.6
WR(外部數(shù)據(jù)存儲(chǔ)區(qū)間的寫入端口)
P3.7
RD(外部數(shù)據(jù)存儲(chǔ)區(qū)間的讀取端口)

3.2電源電路設(shè)計(jì)

如圖3.3,由USB接口提供電源,VCC接5V電壓,GND接地構(gòu)成電源模塊。


圖3.3 電源模塊

3.3可燃?xì)怏w信號(hào)采集部分

如圖3.4,天然氣信號(hào)采集部分是由氣敏傳感器MQ-4、AD轉(zhuǎn)換器組成。


圖3.4 信號(hào)采集部分

3.4 MQ-4氣體傳感器

MQ-4氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2)。當(dāng)傳感器所處環(huán)境中存在可燃?xì)怏w時(shí),傳感器的電導(dǎo)率隨空氣中可燃?xì)怏w濃度的增加而增大。使用簡(jiǎn)單的電路即可將電導(dǎo)率的變化轉(zhuǎn)換為與該氣體濃度相對(duì)應(yīng)的輸出信號(hào)。

MQ-4氣體傳感器對(duì)液化氣、甲烷、丙烷、氫氣的靈敏度高,對(duì)天然氣和其它可燃蒸汽的檢測(cè)也很理想。這種傳感器可檢測(cè)多種可燃性氣體,是一款適合多種應(yīng)用的低成本傳感器。

表3.3 MQ-4材料組成


部件

材料

1

  氣體敏感層

二氧化錫

2

電極

金(Au)

3

測(cè)量電極引線

鉑(Pt)

4

加熱器

鎳鉻合金(Ni-Cr)

5

陶瓷管

三氧化二鋁

6

防爆網(wǎng)

100目雙層不銹鋼(SUB316)

7

卡環(huán)

鍍鎳銅材(Ni-Cu)

8

基座

膠木或尼龍


圖3.5 MQ-4基本電路

MQ-4基本電路中有如公式3.5:


                                                       (3.1)


濃度與電壓的關(guān)系函數(shù)如公式3.2:


濃度=(0.7-(10-10*ADdata)/1.4*14.43*ADdata)10^4   (ppm)            (3.2)


3.5 A/D轉(zhuǎn)換部分3.5.1 A/D轉(zhuǎn)換電路

MQ-4傳感器采集到的電壓信號(hào)接單片機(jī)P1.1。


圖3.6 A/D轉(zhuǎn)換部分

3.5.2 A/D 轉(zhuǎn)換芯片 ADC0832

ADC0832 是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的一種8 位分辨率、雙通道A/D轉(zhuǎn)換芯片。由于它體積小,兼容性,性價(jià)比高而深受單片機(jī)愛好者及企業(yè)歡迎,其目前已經(jīng)有很高的普及率。學(xué)習(xí)并使用ADC0832 可是使我們了解A/D轉(zhuǎn)換器的原理,有助于我們單片機(jī)技術(shù)水平的提高。

ADC0832 具有以下特點(diǎn):

8位分辨率;

逐次逼近式A/D轉(zhuǎn)換器;

雙通道A/D轉(zhuǎn)換;

輸入輸出電平與TTL/CMOS相兼容;

5V電源供電時(shí)輸入電壓在0~5V之間;

工作頻率為250KHZ,轉(zhuǎn)換時(shí)間為32μS;

一般功耗僅為15mW;

8P、14P—DIP(雙列直插)、PICC 多種封裝;

商用級(jí)芯片溫寬為0°C to +70°C,工業(yè)級(jí)芯片溫寬為?40°C to +85°C。

如圖3.7,ADC0832 芯片頂視圖:

圖3.7 ADC0832頂視圖

芯片接口說明:

CS_片選使能,低電平芯片使能。

CH0 模擬輸入通道0,或作為IN+/-使用。

CH1 模擬輸入通道1,或作為IN+/-使用。

GND 芯片參考0 電位(地)。

DI 數(shù)據(jù)信號(hào)輸入,選擇通道控制。

DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。

CLK 芯片時(shí)鐘輸入。

Vcc/REF 電源輸入及參考電壓輸入(復(fù)用)。

3.6 氣體結(jié)果測(cè)量計(jì)算

圖3.8 MQ-4氣敏的靈敏度特性

其中X軸表示外界可燃?xì)怏w的濃度,Y軸表示變化內(nèi)阻與固定電阻的值(Rs/Ro)。

Rs:元件在不同氣體,不同濃度下的電阻值。

Ro:元件在潔凈空氣中的電阻值。(Ro=14.43 K)

3.7 聲光報(bào)警部分

采集到的數(shù)字信號(hào)經(jīng)過單片機(jī)計(jì)算后,如果天然氣濃度達(dá)到報(bào)警器設(shè)置的臨界點(diǎn)時(shí),單片機(jī)將控制蜂鳴器報(bào)警,同時(shí)LED亮。LED的正極與PNP三極管的集電極c相連,負(fù)極接2K電阻后接地。蜂鳴器采用PNP三極管來驅(qū)動(dòng),三極管發(fā)射極e接電源正極(+5V),基極接1K電阻后接單片機(jī)P3.4端,集電極接蜂鳴器,通過蜂鳴器后接地。


圖3.9 聲光報(bào)警電路

3.8 計(jì)數(shù)器譯碼顯示電路3.8.1 LED 的綜述

在單片機(jī)的應(yīng)用系統(tǒng)中,為了便于人們觀察和監(jiān)視單片機(jī)的運(yùn)行情況,常常需要用顯示器顯示運(yùn)行的中間結(jié)果、狀態(tài)等信息,因此顯示器也是不可缺少的外部設(shè)備之一。LED顯示屏是八十年代后期在全球迅速發(fā)展起來的新型信息顯示媒體,顯示屏由幾萬到幾十萬個(gè)半導(dǎo)體發(fā)光二極管像素點(diǎn)均勻排列組成。利用不同的材料可以制造不同色彩的LED像素點(diǎn)。目前應(yīng)用最廣的是紅色、綠色、黃色。而藍(lán)色和純綠色LED的開發(fā)已經(jīng)達(dá)到了實(shí)用階段。LED顯示屏可以顯示變化的數(shù)字、文字、圖形圖像;不僅可以用于室內(nèi)環(huán)境還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏無法比擬的優(yōu)點(diǎn)。

在短短的十來年中,LED點(diǎn)陣顯示屏就以亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定的優(yōu)點(diǎn)迅速成長(zhǎng)為平板顯示的主流產(chǎn)品,在信息顯示領(lǐng)域得到了廣泛的應(yīng)用。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性、可靠性、全色化方向發(fā)展。

LED顯示屏的應(yīng)用涉及社會(huì)經(jīng)濟(jì)的許多領(lǐng)域,主要包括:證券交易、金融信息顯示。(2)機(jī)場(chǎng)航班動(dòng)態(tài)信息顯示。(3)港口、車站旅客引導(dǎo)信息顯示。(4)體育場(chǎng)館信息顯示。(5)道路交通信息顯示。(6)調(diào)度指揮中心信息顯示。(7)郵政、電信、商場(chǎng)購(gòu)物中心等服務(wù)領(lǐng)域的業(yè)務(wù)宣傳及信息顯示。(8)廣告媒體新產(chǎn)品等。

3.8.2 LED 的結(jié)構(gòu)

LED數(shù)碼管顯示器是由發(fā)光的二極管顯示字段組成的。在單片機(jī)應(yīng)用系統(tǒng)中使用最多的就是七段LED數(shù)碼管,有共陰極和共陽極兩種。七段LED數(shù)碼管顯示器有8個(gè)發(fā)光二極管,其中從a~g管腳輸入顯示代碼,可顯示不同的數(shù)字或字符,Dp顯示小數(shù)點(diǎn)。共陰極LED數(shù)碼管顯示器的公共端為發(fā)光二極管陰極,通常接地,當(dāng)發(fā)光二極管的陽極為高電平時(shí),發(fā)光二極管點(diǎn)亮。共陽極的LED數(shù)碼管顯示器的公共端為發(fā)光二極管的陽極,通常接+5V電源,當(dāng)發(fā)光二極管的陰極為低電平時(shí),發(fā)光二極管點(diǎn)亮。

本設(shè)計(jì)的顯示采用LED數(shù)碼管動(dòng)態(tài)掃描來顯示。1個(gè)3位的共陽極LED數(shù)碼管組成3位顯示上次測(cè)量的數(shù)據(jù)。單片機(jī)的P0口控制顯示字型,P2口控制顯示字位。顯示電路如圖3.10。


                     圖3.10 顯示電路

3.8.3 LED數(shù)碼管的顯示方法

靜態(tài)顯示方式是指當(dāng)顯示器顯示某一字符時(shí),發(fā)光二極管的位選始終被選中。在這種顯示方式下,每一個(gè)LED數(shù)碼管顯示器都需要一個(gè)8位的輸出口進(jìn)行控制。由于單片機(jī)本身提供的I/O口有限,實(shí)際使用中,通常通過擴(kuò)展I/O口的形式解決輸出口數(shù)量不足的問題。靜態(tài)顯示主要的優(yōu)點(diǎn)是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度大,系統(tǒng)運(yùn)行過程中,在需要更新顯示內(nèi)容時(shí),CPU才去執(zhí)行顯示更新子程序,這樣既節(jié)約了CPU的時(shí)間,又提高了CPU的工作效率。其不足之處是占用硬件資源較多,每個(gè)LED數(shù)碼管需要獨(dú)占8條輸出線。隨著顯示器位數(shù)的增加,需要的I/O口線也將增加。

動(dòng)態(tài)顯示方式是指一位一位地輪流點(diǎn)亮每位顯示器(稱為掃描),即每個(gè)數(shù)碼管的位選被輪流選中,多個(gè)數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對(duì)位選選中的數(shù)碼管有效。對(duì)于每一位顯示器來說,每隔一段時(shí)間點(diǎn)亮一次。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān)。通過調(diào)整電流和時(shí)間參數(shù),可以既保證亮度,又保證顯示。若顯示器的位數(shù)不大于8位,則顯示器的公共端只需一個(gè)8位I/O口進(jìn)行動(dòng)態(tài)掃描(稱為掃描口),控制每位顯示器所顯示的字形也需一個(gè)8位口(稱為段碼輸出)。

通過比較,我們可以發(fā)現(xiàn)LED靜態(tài)顯示更加適合本設(shè)計(jì),所以采用此方法。

3.9 復(fù)位電路

單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。52系列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。


      圖3.11 復(fù)位電路

3.10 最小系統(tǒng)及按鍵

STC89C52單片機(jī)的最小系統(tǒng)由起振電路、復(fù)位電路、STC89C52芯片組成。單片機(jī)接+5V電源;晶體振蕩器頻率為12MHz(11.0592MHz),晶振的兩個(gè)引腳分別連接在單片機(jī)的XTAL1和XTAL2端,晶振的兩端再分別連接一個(gè)30pF電容后接地;復(fù)位電路經(jīng)電源正極(+5V)接10uF電容后接10k歐姆電阻接地,單片機(jī)復(fù)位端RST接在電容和電阻之間。

本次設(shè)計(jì)電路中加入4個(gè)按鍵,用于人為報(bào)警和設(shè)置報(bào)警的上限值。按鍵分別接單片機(jī)P1.4、P1.5、P1.6、P1.7端。S1是數(shù)字鍵加,S2是數(shù)字鍵減,S3是確認(rèn)鍵,S4是模擬報(bào)警鍵,當(dāng)按下S4時(shí)蜂鳴器報(bào)警,LED亮;再次按下S4用來取消報(bào)警。


圖3.12 最小系統(tǒng)及按鍵電路


4燃?xì)庑孤z測(cè)報(bào)警系統(tǒng)的軟件部分4.1程序設(shè)計(jì)流程與編程

程序流程圖如圖4.1所示,軟件設(shè)計(jì)包含AD采樣程序、數(shù)據(jù)處理程序、數(shù)碼管顯示程序、按鍵掃描程序、系統(tǒng)報(bào)警程序。


     


                                N


       Y


圖4.1 程序設(shè)計(jì)流程圖

STC89C52單片機(jī)對(duì)ADC0832傳送的氣體濃度信號(hào)進(jìn)行處理,將濃度值與報(bào)警限設(shè)定值相比較,判斷是否報(bào)警。對(duì)采集的數(shù)字信號(hào)進(jìn)行處理和判斷,運(yùn)用一定的算法計(jì)算出待檢測(cè)氣體成分及濃度并送到數(shù)碼管顯示器顯示出來。當(dāng)檢測(cè)氣體濃度低于設(shè)定報(bào)警閥值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)氣體濃度超出設(shè)定報(bào)警閥值時(shí)給出聲光報(bào)警。

在程序設(shè)計(jì)上我采用的是C語言編程。C語言是一種編譯型程序設(shè)計(jì)語言,它兼顧了多種高級(jí)語言的特點(diǎn),并具備匯編語言的功能。C語言擁有功能豐富的庫(kù)函數(shù),運(yùn)算速度快、編譯效率高,有良好的可移植性,可以直接對(duì)系統(tǒng)硬件實(shí)現(xiàn)控制。C語言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語言,它支持目前程序設(shè)計(jì)中被廣泛采用的由頂向下的結(jié)構(gòu)化程序設(shè)計(jì)。此外,C語言程序還具有完善的模塊程序結(jié)構(gòu),從而為軟件設(shè)計(jì)中采用的模塊化程序設(shè)計(jì)方法提供了有力的保障。因此,使用C語言進(jìn)行程序設(shè)計(jì)已成為軟件開發(fā)的一個(gè)主流。用C語言來編寫目標(biāo)系統(tǒng)軟件,會(huì)大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于改進(jìn)和擴(kuò)充,從而研制出規(guī)模更大、性能更完備的系統(tǒng),用C語言進(jìn)行單片機(jī)程序設(shè)計(jì)是單片機(jī)開發(fā)與應(yīng)用的必然趨勢(shì)。所以一個(gè)技術(shù)全面并涉足較大規(guī)模的軟件系統(tǒng)開發(fā)的單片機(jī)開發(fā)人員最好能夠掌握基本的C語言編程。編寫C 語言要使用到C 編譯軟件,以便把寫好的C 程序編譯為機(jī)器碼,這樣單片機(jī)才能執(zhí)行編寫好的程序。

4.2系統(tǒng)調(diào)試

在系統(tǒng)調(diào)試階段我是分模塊分階段進(jìn)行的。我先調(diào)試的是氣體濃度檢測(cè)部分,該部分就是把模擬量變成數(shù)字量,其原理和數(shù)字電壓表的設(shè)計(jì)是一樣的。所以該部分的系統(tǒng)調(diào)試在設(shè)計(jì)數(shù)字電壓表的原理基礎(chǔ)上進(jìn)行調(diào)試的。然后調(diào)試數(shù)碼管顯示器,首先通過按鍵對(duì)報(bào)警閾值進(jìn)行設(shè)置,最后把氣體濃度與按鍵值統(tǒng)籌在一起就組成了報(bào)警閾值調(diào)節(jié)部分。然后添加進(jìn)語音報(bào)警、聲光報(bào)警。經(jīng)過不斷的實(shí)驗(yàn)測(cè)試,形成了系統(tǒng)整體程序。

在設(shè)計(jì)好硬件的基礎(chǔ)上,下載程序。系統(tǒng)通上電,報(bào)警限顯示為18ppm,按動(dòng)上下鍵可以進(jìn)行調(diào)節(jié)。將打火機(jī)排出的氣體對(duì)準(zhǔn)傳感器時(shí),顯示屏上的氣體濃度立即不斷升高;當(dāng)氣體濃度上升到報(bào)警限時(shí),聲光報(bào)警器立即開啟,并開始語音提醒:鄧曉佳提醒您,存在安全隱患,請(qǐng)您注意。


結(jié)    論

氣體檢測(cè)報(bào)警器可保障生產(chǎn)與生活的安全,避免火災(zāi)和爆炸事故以及煤氣中毒的發(fā)生,它是防火、防爆和安全生產(chǎn)所必備的儀器,具有廣闊的市場(chǎng)空間與發(fā)展前景。

本文設(shè)計(jì)的天然氣泄漏檢測(cè)報(bào)警系統(tǒng)采用性價(jià)比很高的STC89C52單片機(jī)作為主控芯片,利用其強(qiáng)大的處理能力和較豐富的外圍接口,合理選用I/O端口,較好地完成了天然氣泄漏檢測(cè)報(bào)警系統(tǒng)的設(shè)計(jì)。本論文設(shè)計(jì)的氣體報(bào)警器由氣體信號(hào)采集電路與單片機(jī)控制電路兩大部分構(gòu)成。  

根據(jù)設(shè)計(jì)要求、使用環(huán)境、成本等因素,選用MQ-4型半導(dǎo)體電阻式氣體傳感器。該傳感器是對(duì)以烷類氣體為主的多種氣體有良好敏感特性的廣譜型半導(dǎo)體敏感器件。它的靈敏度適中,具有響應(yīng)與恢復(fù)特性好,長(zhǎng)期工作穩(wěn)定性、重現(xiàn)性、不易受環(huán)境影響及抗溫濕度影響等優(yōu)點(diǎn)。  本系統(tǒng)能夠?qū)崿F(xiàn)對(duì)空氣中天然氣濃度的實(shí)時(shí)監(jiān)測(cè)并顯示,當(dāng)檢測(cè)氣體濃度低于設(shè)定報(bào)警閾值的時(shí)候,數(shù)碼管顯示器僅僅顯示測(cè)得的可燃?xì)怏w濃度;當(dāng)檢測(cè)氣體濃度超出設(shè)定報(bào)警閾值時(shí)給出聲光報(bào)警。該設(shè)計(jì)的天然氣泄漏檢測(cè)報(bào)警系統(tǒng)的綜合功能遠(yuǎn)高于市面上的天然氣報(bào)警系統(tǒng),減少誤報(bào)關(guān)閥的困擾。本設(shè)計(jì)在電路方案采用模塊化設(shè)計(jì),可以方便實(shí)現(xiàn)功能擴(kuò)展,從而滿足特殊應(yīng)用領(lǐng)域中的功能和可靠性需求。在下一步的工作中,可將GPRS模塊的功能進(jìn)行設(shè)計(jì)改善,以實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)共享,也可以在本系統(tǒng)的基礎(chǔ)上加上手機(jī)遠(yuǎn)程控制防火滅火報(bào)警燈功能。

在元件及調(diào)制方面,由于采用的電路使用了很多集成電路。外圍元件不是很多,所以調(diào)試不太難。電路中除集成電路外,對(duì)各電子元件也無特別要求。未來的時(shí)代是個(gè)物聯(lián)網(wǎng)時(shí)代,等我具備編寫電腦軟件的能力后,我會(huì)開發(fā)出對(duì)天然氣檢測(cè)報(bào)警的聯(lián)網(wǎng)控制,從而可以與消防隊(duì)進(jìn)行數(shù)據(jù)共享。


附錄A   基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)原理圖


附錄B   基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)結(jié)果圖


致謝

通過這一階段的努力,我的畢業(yè)論文《基于單片機(jī)的天然氣泄漏報(bào)警系統(tǒng)設(shè)計(jì)》終于完成了,這意味著大學(xué)生活即將結(jié)束。在大學(xué)期間,我在學(xué)習(xí)上和思想上都受益良多,這除了自身的努力外,與各位老師、同學(xué)和朋友的關(guān)心、支持和鼓勵(lì)是分不開的。

嚴(yán)謹(jǐn)?shù)男oL(fēng)校紀(jì)、良好的學(xué)術(shù)氛圍、動(dòng)手動(dòng)腦的求學(xué)理念、全面發(fā)展的育人思想以及老師們對(duì)我們的淳淳教誨,讓我在學(xué)到專業(yè)知識(shí)的同時(shí)也樹立了正確的人生觀、世界觀、價(jià)值觀,為我走向社會(huì)參加工作打下良好的基礎(chǔ)。

在本論文的寫作過程中,我的導(dǎo)師王鋼老師傾注了大量的心血,從選題到開題報(bào)告,從寫作提綱,到一遍又一遍地指出每稿中的具體問題,嚴(yán)格把關(guān),循循善誘。在王鋼老師的精心指導(dǎo)、嚴(yán)格要求以及熱情鼓勵(lì)下,我順利地完成畢業(yè)設(shè)計(jì)。在此,向王鋼老師致以崇高的敬意和由衷的感謝!同時(shí)我還要感謝在我學(xué)習(xí)期間給我極大關(guān)心和支持的各位老師以及關(guān)心我的同學(xué)和朋友。

即將走出校門,有太多說不出的感慨。感謝我在大學(xué)遇到的所有老師。感謝四年以來同窗好友對(duì)我的幫助。在此謹(jǐn)向大學(xué)所有老師和我的同窗好友們表示衷心的感謝!


單片機(jī)源程序如下:
  1. #include<reg52.h>  //包含頭文件,一般情況不需要改動(dòng),
  2.                   //頭文件包含特殊功能寄存器的定義
  3. #include <intrins.h>  //Keil library
  4. #include  <math.h>    //Keil library
  5. #include  <stdio.h>   //Keil library
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define ulong unsigned long
  9. #define K_MG_MV    120/66
  10. unsigned char code dispcode0[]={0xc0,0xf9,0xa4,0xb0,
  11.                     0x99,0x92,0x82,0xf8,
  12.                     0x80,0x90};//顯示段碼值0~9,不包含DP點(diǎn)

  13. uchar code table1[]={0x40,0x79,0x24,0x30,
  14.                     0x19,0x12,0x02,0x78,
  15.                     0x00,0x10};//顯示段碼值0~9,包含DP點(diǎn)
  16. uchar code table3[]={0x89,0xC7};//H L
  17. sbit bADcs=P1^2;
  18. sbit bADcl=P1^0;
  19. sbit bADda=P1^1;
  20. sbit LED0=P0^1;//定義第0個(gè)數(shù)碼管
  21. sbit LED1=P0^3;//定義第1個(gè)數(shù)碼管
  22. sbit LED2=P0^5;//定義第2個(gè)數(shù)碼管
  23. sbit LED3=P0^7;//定義第3個(gè)數(shù)碼管

  24. sbit alarm=P3^3;//蜂鳴器接口
  25. sbit key_up=P1^4;//數(shù)字鍵加+
  26. sbit key_down=P1^5;//數(shù)字鍵減-
  27. sbit key_ok=P1^6;//確認(rèn)鍵
  28. sbit key_manual=P1^7;//模擬手動(dòng)報(bào)警和解除報(bào)警按鍵
  29. bit SetUpFlag=0;
  30. bit set_manual=0;
  31. uchar key_manual_num=0;
  32. ulong gas_uplimit=150;
  33. /********定義變量*********/
  34. unsigned char data1;
  35. unsigned char count;
  36. unsigned char cycle;
  37. unsigned long data2;
  38. long              Value,num=0;
  39. uchar              temp,getdata;
  40. uchar jian,bai,shi,ge;
  41. uchar time_ms1;


  42. //微秒顯示函數(shù)
  43. void Delayus(uchar i)
  44. {
  45.   while(--i);
  46. }
  47.   //毫秒顯示函數(shù)
  48. void delay1ms(uint z)
  49. {
  50.               uint x,y;
  51.               for(x=z;x>0;x--)
  52.                             for(y=110;y>0;y--);
  53. }
  54. void ad(void) //ad采樣函數(shù)
  55. {
  56.      uchar i;
  57.      //data1=0;
  58.      bADcs = 0;//當(dāng)ADC0832未工作時(shí)其CS輸入端應(yīng)為高電平,此時(shí)芯片禁用.
  59.               bADcl=0;
  60.               bADda=1;
  61.               bADcl=1;
  62.               bADcl=0;//i down
  63.               bADda=1;
  64.               bADcl=1;
  65.               bADcl=0;              //   2 down
  66.               bADda=0;
  67.               bADcl=1;
  68.               bADcl=0;              //   3 down
  69.               bADda=1;
  70.               bADcl=1;
  71.               bADcl=0;              //   4 down

  72.               for(i=8;i>0;i--)
  73.                             {
  74.                            
  75.                             data1<<=1;
  76.                             bADcl=0;
  77.                             bADcl=1;
  78.                             if(bADda==1) data1|=0x01;
  79.                                              bADda=1;
  80.                             }
  81.                             bADcs=1;
  82.             
  83. }
  84.                            
  85. void cal() //計(jì)算把采樣到的值轉(zhuǎn)換成實(shí)際電壓值
  86. {
  87.                  Value=data1*1.0/256*500;
  88.                  Value=Value*K_MG_MV;
  89.                  Value=Value-5;
  90.                  if(Value<0)Value=0;
  91. }
  92. void display_temp(int Value)
  93. {
  94.             temp=(uchar)(Value/1000);//分離千分位
  95.                                           jian=temp;
  96.                                           temp=(uchar)((Value%1000)/100);              //分離百分位
  97.                                           bai=temp;
  98.                                           temp=(uchar)((Value%100)/10);//分離十位
  99.                                           shi=temp;
  100.                                           temp=(uchar)(Value%10);//分離個(gè)位
  101.                                           ge=temp;

  102. ////////////////////////////////////
  103. //////////////先顯示個(gè)位////////////
  104.     LED0=1;
  105.               LED1=0;
  106.               LED2=0;
  107.               LED3=0;
  108.     P2=dispcode0[ge];
  109.     delay1ms(5);
  110. /////////////接著顯示十位/////////
  111.     LED0=0;
  112.               LED1=1;
  113.               LED2=0;
  114.               LED3=0;
  115.     P2=dispcode0[shi];
  116.     delay1ms(5);            
  117. //////////////////////////////////
  118.               /////////////再接著顯示百位////
  119.               LED0=0;
  120.               LED1=0;
  121.               LED2=1;
  122.               LED3=0;
  123.     P2=dispcode0[bai];
  124.     delay1ms(5);

  125. ///////////////////////////
  126.               if(key_up==0)
  127.               {
  128.                             delay1ms(10);
  129.                             if(key_up==0)
  130.                             {              
  131.                                             SetUpFlag=1;
  132.                                             gas_uplimit++;
  133.                                             if(gas_uplimit==999)gas_uplimit=0;

  134.                                             while(!key_up);//等待按鍵釋放            
  135.                             }
  136.                
  137.               }
  138. //////////////////////////////////
  139. ///////////////////////////
  140.               if(key_down==0)
  141.               {
  142.                             delay1ms(10);
  143.                             if(key_down==0)
  144.                             {              
  145.                
  146.                                  SetUpFlag=1;
  147.                                           gas_uplimit--;
  148.                                           if(gas_uplimit==0)gas_uplimit=999;
  149.                            
  150.                                             while(!key_down);//等待按鍵釋放            
  151.                             }
  152.                
  153.               }
  154. //////////////////////////////////
  155. ///////////////////////////
  156.               if(key_ok==0)
  157.               {
  158.                             delay1ms(10);
  159.                             if(key_ok==0)
  160.                             {              
  161.                
  162.                                  SetUpFlag=0;
  163.                            
  164.                            
  165.                                             while(!key_ok);//等待按鍵釋放            
  166.                             }
  167.                
  168.               }
  169. //////////////////////////////////
  170. }
  171. void manual_simulate()
  172. {
  173.               if(key_manual==0)
  174.               {
  175.                             delay1ms(10);
  176.                             if(key_manual==0)
  177.                             {     TR1=0;
  178.             key_manual_num++;
  179.                            
  180.             set_manual=1;
  181.                                 alarm=0;
  182.                            
  183.             if(key_manual_num==2)
  184.                                           {
  185.                                  alarm=1;
  186.                            
  187.              TR1=1;
  188.              set_manual=0;
  189.                                           key_manual_num=0;
  190.                                 }
  191.                                           while(!key_manual);//等待按鍵釋放                           
  192.                             }
  193.               }
  194. }
  195. void Alarm_Limit()
  196. {
  197.     if(Value>=gas_uplimit)//判斷可燃?xì)怏w的濃度是否超出設(shè)定范圍,如超出LED亮并報(bào)警。
  198.               {
  199.                  alarm=0;
  200.               }
  201.               else
  202.               {
  203.                  alarm=1;
  204.               }
  205. }
  206. void SysInit_two(void)//初始化定時(shí)器T0
  207. {
  208.     TMOD=0x01;                                            //定時(shí)器工作在方式1
  209.               ET0=1;
  210.               EA=1;
  211.               TH0=(65536-50000)/256; //對(duì)TH0 TL0賦值
  212.               TL0=(65536-50000)%256; //使定時(shí)器0.05秒中斷一次
  213.               TR0=1;                 //開始計(jì)時(shí)
  214. }
  215. /*------------------------------------------------
  216.                     主函數(shù)
  217. ------------------------------------------------*/
  218. void main()
  219. {
  220.   SysInit_two();//初始化定時(shí)器T0
  221. ……………………
  222. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便保存):
基于單片機(jī)的天然氣泄漏檢測(cè)系統(tǒng)設(shè)計(jì)論文.doc (1.01 MB, 下載次數(shù): 150)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:429133 發(fā)表于 2018-11-19 12:43 來自手機(jī) | 只看該作者
樓主這個(gè)仿真在哪能看到?
回復(fù)

使用道具 舉報(bào)

板凳
ID:200295 發(fā)表于 2020-1-19 22:25 來自手機(jī) | 只看該作者
樓主為什么主函數(shù)顯示錯(cuò)誤?
回復(fù)

使用道具 舉報(bào)

地板
ID:728534 發(fā)表于 2020-4-13 20:50 | 只看該作者
李傻子 發(fā)表于 2020-1-19 22:25
樓主為什么主函數(shù)顯示錯(cuò)誤?

請(qǐng)問你用這個(gè)程序出結(jié)果了嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表