沈 陽(yáng) 工 學(xué) 院 畢業(yè)設(shè)計(jì)(論文) 題 目: 學(xué) 院: 專 業(yè): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 二〇一八 年 五 月
摘 要 基于單片機(jī)技術(shù)和多傳感器技術(shù)開(kāi)發(fā)設(shè)計(jì)了一套火災(zāi)自動(dòng)報(bào)警系統(tǒng)。設(shè)計(jì)內(nèi)容包括軟件系統(tǒng)和硬件系統(tǒng)。系統(tǒng)的軟件部分包括主程序、按鍵、溫度氣體濃度采集、和數(shù)碼管顯示子程序;硬件包括四個(gè)部分:?jiǎn)纹瑱C(jī)最小系統(tǒng)、溫度氣體濃度檢測(cè)電路、顯示電路和報(bào)警電路。選用最常用的AT89S52單片機(jī)作為控制處理器,對(duì)所采集的數(shù)據(jù)進(jìn)行處理;采用DS18B20數(shù)字溫度傳感器將溫度信號(hào)直接轉(zhuǎn)換成數(shù)字信號(hào),傳遞給單片機(jī);選用MQ-2型半導(dǎo)體可燃?xì)怏w敏感元件煙霧傳感器實(shí)現(xiàn)煙霧濃度的檢測(cè);MQ-2型半導(dǎo)體煙霧傳感器電路簡(jiǎn)單,成本低,同時(shí)可設(shè)置溫度報(bào)警值,實(shí)現(xiàn)聲光報(bào)警。CPS3641BR數(shù)碼管具有靈敏度高、響應(yīng)快、抗干擾能力強(qiáng)等優(yōu)點(diǎn),而且價(jià)格低廉,使用壽命長(zhǎng)。該火災(zāi)自動(dòng)報(bào)警系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定、使用方便、價(jià)格低廉,具有一定的實(shí)用價(jià)值。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);溫度傳感器;煙霧傳感器;火災(zāi)自動(dòng)報(bào)警;結(jié)構(gòu)簡(jiǎn)單 AbstractWe development and design a set of automatic fire alarm system based on microcontroller technology and sensor technology. This design contain software system and hardware system. The software include main program, key, collecting of temperature gas concentration, subroutine of LED display. Hardware system include microcontroller unit system, detection circuitry of temperature gas concentration, displaying circuits and alarming circuits. This system chose AT89S52 as the control processor and handle with collecting dates. This system chose digital temeperature sensor DS18B20 to transform temperature signal to digital signal and convey it to microcontroller unit. This system chose semiconductor flammable gas sensitive components sensor MQ-2 realize the testing of the density of fog. The circuits of semiconductor smoke sensor MQ-2 are simple and low cost. At the same time it can set panic value and realize audible and visual alarm. Nixie tube CPS3641BR has the merit of high sensitivity, fast response, anti-interference capability. And the price is chip, the lifetime is long. This automatic fire alarm system has a lot of merits such as, simple structure, stable performance, convenient to use, low cost, having practical value and so on. Keywords: Microcontroller Unit; Temperature sensor; Smoke sensor; Automatic fire alarming system; Simple structure
目 錄
第1章 引 言 1.1 火災(zāi)報(bào)警器設(shè)計(jì)的目的和意義火災(zāi),是指在時(shí)間或空間上失去控制的燃燒所造成的災(zāi)害。在各種災(zāi)害中,火災(zāi)是最經(jīng)常、最普遍地威脅公眾安全和社會(huì)發(fā)展的主要災(zāi)害之一。人類能夠?qū)疬M(jìn)行利用和控制,是文明進(jìn)步的一個(gè)重要標(biāo)志。火,給人類帶來(lái)文明進(jìn)步、光明和溫暖。但是,失去控制的火,就會(huì)給人類造成巨大的災(zāi)難。對(duì)于火災(zāi),在我國(guó)古代,人們就總結(jié)出“防為上,救次之,戒為下”的經(jīng)驗(yàn)。隨著社會(huì)的不斷發(fā)展,在社會(huì)財(cái)富日益增多的同時(shí),導(dǎo)致發(fā)生火災(zāi)的危險(xiǎn)性也在增多,火災(zāi)的危害性也越來(lái)越大。據(jù)統(tǒng)計(jì),我國(guó)70年代火災(zāi)年平均損失不到2.5 億元,80 年代火災(zāi)年平均損失不到3.2億元。進(jìn)入90年代,特別是1993年以來(lái),火災(zāi)造成的直接財(cái)產(chǎn)損失上升到年均十幾億元,年均死亡2000多人。 實(shí)踐證明,隨著社會(huì)和經(jīng)濟(jì)的發(fā)展,消防工作的重要性就越來(lái)越突出。由此,火災(zāi)報(bào)警器在消防工作就的作用也尤為突出了。我國(guó)的火災(zāi)自動(dòng)報(bào)警控制系統(tǒng)經(jīng)歷了從無(wú)到有、從簡(jiǎn)單到復(fù)雜的發(fā)展過(guò)程,其智能化程度也越來(lái)越高。但目前國(guó)內(nèi)廠家多偏重用于大型倉(cāng)庫(kù)、商場(chǎng)、高級(jí)寫(xiě)字樓、賓館等場(chǎng)所大型火災(zāi)報(bào)警系統(tǒng)的研發(fā),他們采用集中區(qū)域報(bào)警控制方式,其系統(tǒng)復(fù)雜、成本較高。而在居民住宅區(qū)、機(jī)房、辦公室等小型防火單位,需要設(shè)置一種單一或區(qū)域聯(lián)網(wǎng)、廉價(jià)實(shí)用的火災(zāi)自動(dòng)探測(cè)報(bào)警裝置,因此,研制一種結(jié)構(gòu)簡(jiǎn)單、價(jià)格低廉的語(yǔ)音數(shù)字聯(lián)網(wǎng)火災(zāi)報(bào)警器是非常必要的。 火災(zāi)自動(dòng)報(bào)警系統(tǒng),一般由火災(zāi)探測(cè)器、區(qū)域報(bào)警器和集中報(bào)警器組成;也可以根據(jù)工程的要求同各種滅火設(shè)施和通訊裝置聯(lián)動(dòng),以形成中心控制系統(tǒng)。即由自動(dòng)報(bào)警、自動(dòng)滅火、安全疏散誘導(dǎo)、系統(tǒng)過(guò)程顯示、消防檔案管理等組成一個(gè)完整的消防控制系統(tǒng)。由于在火災(zāi)發(fā)生的階段,將伴隨產(chǎn)生煙霧、高溫格火光。這些煙、熱和光可以通過(guò)探測(cè)器轉(zhuǎn)變?yōu)殡娦盘?hào)報(bào)警或使自動(dòng)滅火系統(tǒng)啟動(dòng),及時(shí)撲滅火災(zāi)。區(qū)域報(bào)警器能將所在樓層之探測(cè)器發(fā)出的信號(hào)轉(zhuǎn)換為聲光報(bào)警,并在屏幕上顯示出火災(zāi)的房間號(hào);同時(shí)還能監(jiān)視若干樓層的集中報(bào)警器(如果監(jiān)視整個(gè)大樓的則設(shè)于消防控制中心)輸出信號(hào)或控制自動(dòng)滅火系統(tǒng)。集中報(bào)警是將接收到的信號(hào)以聲光方式顯示出來(lái),其屏幕上也具體顯示出著火的樓層和房間號(hào),機(jī)上停走的時(shí)鐘記錄下首次報(bào)警時(shí)間性,利用本機(jī)專用電話,還可迅速發(fā)出指示和向消防隊(duì)報(bào)警。此外,也可以控制有關(guān)的滅火系統(tǒng)或?qū)⒒馂?zāi)信號(hào)傳輸給消防控制室。 本設(shè)計(jì)是基于多傳感器的智能火災(zāi)報(bào)警系統(tǒng),能夠在火災(zāi)初期,將燃燒的煙霧、熱量和光輻射等物理量,通過(guò)感溫、感煙和感光等火災(zāi)探測(cè)器變成電信號(hào),傳輸?shù)交馂?zāi)報(bào)警控制器,出現(xiàn)異常情況能夠進(jìn)行報(bào)警,起到早期發(fā)現(xiàn)火災(zāi)和通報(bào)火災(zāi)的作用。 1.2 火災(zāi)報(bào)警器的國(guó)內(nèi)外發(fā)展情況許多年前,中國(guó)的消防報(bào)警產(chǎn)品剛剛起步,無(wú)論產(chǎn)品技術(shù)含量、產(chǎn)品系列完整性、使用性,還是社會(huì)影響程度都是相當(dāng)?shù)偷摹?guó)外的產(chǎn)品和品牌一統(tǒng)天下,占領(lǐng)中國(guó)的大部分市場(chǎng)。由于中國(guó)的建設(shè)正在飛速發(fā)展,市場(chǎng)大的驚人,可幸的是中國(guó)企業(yè)抓住了機(jī)遇,頂住了挑戰(zhàn),先是一批國(guó)家的科研院所,后是一批國(guó)營(yíng)企業(yè)、民營(yíng)企業(yè),業(yè)內(nèi)也吸引和凝聚一大批國(guó)內(nèi)的技術(shù)和管理精英,花了好多年時(shí)間,通過(guò)幾次產(chǎn)品更新?lián)Q代,就使自己的產(chǎn)品緊緊跟上了國(guó)際水平,并且?jiàn)Z回了大部分國(guó)內(nèi)市場(chǎng),使得現(xiàn)在大多國(guó)外產(chǎn)品只有招架之功,這是典型的自力更生,走自己的路。當(dāng)然目前而言,我們基本占據(jù)的是國(guó)內(nèi)市場(chǎng),對(duì)外還剛啟動(dòng)。中國(guó)企業(yè)正虎視眈眈,準(zhǔn)備進(jìn)軍海外市場(chǎng)。消防報(bào)警產(chǎn)品是一個(gè)系列產(chǎn)品,包括火災(zāi)探測(cè)設(shè)備、信息傳輸設(shè)備、報(bào)警分析控制器、消防控制聯(lián)動(dòng)。是物理傳感技術(shù)、自動(dòng)控制、計(jì)算機(jī)技術(shù)、數(shù)據(jù)傳輸和管理、智能樓宇等技術(shù)的綜合集成,屬于高新技術(shù)。依托中國(guó)多年的基本建設(shè)的發(fā)展,這個(gè)行業(yè)也得到發(fā)展,具備了和國(guó)外知名企業(yè)抗衡的能力。在目前中國(guó)許多冠名以高新技術(shù)的行業(yè)中,中國(guó)企業(yè)大多做的是下游的制造和服務(wù),分取極少一部分的利潤(rùn),象消防報(bào)警產(chǎn)品那樣又擁有自我知識(shí)產(chǎn)權(quán),又擁有大量市場(chǎng)的行業(yè)其實(shí)是很少的。 在消防報(bào)警產(chǎn)品的技術(shù)含量上,國(guó)內(nèi)產(chǎn)品和國(guó)外產(chǎn)品差距不是很大,許多指標(biāo)已經(jīng)超越,存在的問(wèn)題是:類似于國(guó)外消防報(bào)警產(chǎn)品的大批量規(guī)模化的生產(chǎn)才剛起步,有待于積累經(jīng)驗(yàn)和技術(shù);也因此在產(chǎn)品一致性和長(zhǎng)期穩(wěn)定性上有一些差距;國(guó)內(nèi)正在形成權(quán)重的大型企業(yè)和集團(tuán),這樣可以帶領(lǐng)國(guó)內(nèi)的各家企業(yè)去沖擊海外市場(chǎng),并最終占領(lǐng)海外的消防報(bào)警市場(chǎng)。 1.3 本設(shè)計(jì)研究的主要內(nèi)容目的是研究一個(gè)由單片機(jī)控制的火災(zāi)自動(dòng)報(bào)警系統(tǒng),采用多種傳感器,如溫度傳感器和煙霧傳感器,對(duì)環(huán)境中的溫度和煙霧濃度狀況進(jìn)行實(shí)時(shí)監(jiān)測(cè),能對(duì)周圍環(huán)境的溫度突然升高和煙霧濃度突然的提高進(jìn)行報(bào)警,同時(shí)通過(guò)這個(gè)設(shè)計(jì)提高自己對(duì)單片機(jī)和傳感器的使用能力,了解和掌握單片機(jī)、溫度傳感器和煙霧傳感器的使用,鞏固自己在大學(xué)學(xué)習(xí)的所有知識(shí),增強(qiáng)自己的實(shí)際操作的能力。要求所設(shè)計(jì)的火災(zāi)自動(dòng)報(bào)警系統(tǒng)能夠?qū)囟群蜔熿F進(jìn)行實(shí)時(shí)監(jiān)測(cè),出現(xiàn)異常狀況能夠進(jìn)行及時(shí)的報(bào)警,起到早期出現(xiàn)火災(zāi)并及時(shí)通報(bào)相關(guān)人員和及時(shí)撲滅火災(zāi),來(lái)減少人員及財(cái)產(chǎn)的損失。 本火災(zāi)智能報(bào)警系統(tǒng)包括很多部分:觸發(fā)電路、報(bào)警電路、顯示電路、轉(zhuǎn)換電路、數(shù)據(jù)處理和控制電路等。觸發(fā)電路由溫度傳感器和煙霧傳感器等組成。報(bào)警電路由報(bào)警裝置蜂鳴器和光報(bào)裝置LED燈。顯示電路由數(shù)碼管顯示模塊實(shí)現(xiàn)由溫度傳感器和煙霧傳感器所傳送過(guò)來(lái)的數(shù)據(jù)。采用單片機(jī)作為主控芯片來(lái)進(jìn)行數(shù)據(jù)的處理和控制。 設(shè)計(jì)包括軟件和硬件兩部分,軟件部分包括主程序、溫度和氣體的濃度的采集、單片機(jī)處理和控制程序及數(shù)碼管顯示子程序;硬件包括單片機(jī)最小系統(tǒng)、觸發(fā)電路、顯示電路和報(bào)警電路。 第一章引言部分主要介紹了智能火災(zāi)報(bào)警器的設(shè)計(jì)目的與意義以及國(guó)內(nèi)外的發(fā)展情況。 第二章主要進(jìn)行了對(duì)主控芯片的對(duì)比和選擇以及傳感器芯片的對(duì)比和選擇,并且給出了整體的設(shè)計(jì)方案。 第三章根據(jù)設(shè)計(jì)的要求,對(duì)外圍電路進(jìn)行了設(shè)計(jì),主要有溫度采集電路和氣體濃度采集電路及其顯示電路等等。 第四章主要介紹了系統(tǒng)軟件設(shè)計(jì)。主要介紹了系統(tǒng)的主程序流程,及其各模塊的流程圖等。 第2章 建筑物多傳感器火災(zāi)報(bào)警系統(tǒng)總體方案設(shè)計(jì) 2.1 系統(tǒng)的基本方案根據(jù)設(shè)計(jì)的要求系統(tǒng)硬件部分可分為單片機(jī)控制和處理部分、傳感器部分、顯示電路和報(bào)警電路。為實(shí)現(xiàn)各模塊的功能,分別做了幾種不同的方案設(shè)計(jì)并進(jìn)行論證。 2.2 主控芯片的選擇方案一:AT89S51是一個(gè)低功耗芯片,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,該器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,主要特點(diǎn)如下: 1、4k Bytes Flash片內(nèi)程序存儲(chǔ)器; 2、128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM); 3、32個(gè)外部雙向輸入/輸出(I/O)口; 4、5個(gè)中斷優(yōu)先級(jí)、2層中斷嵌套中斷; 5、6個(gè)中斷源; 6、2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器; 7、2個(gè)全雙工串行通信口; 8、看門狗(WDT)電路; 9、片內(nèi)振蕩器和時(shí)鐘電路; 10、與MCS-51兼容; 11、全靜態(tài)工作:0Hz-33MHz; 12、三級(jí)程序存儲(chǔ)器保密鎖定; 13、可編程串行通道; 14、低功耗的閑置和掉電模式。 方案二:AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用ATMEL公司高密非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。芯片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程亦適于常規(guī)編程器。在單芯片上擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效地解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,3個(gè)16位定時(shí)器/計(jì)數(shù)器,8個(gè)中斷向量源,全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止,主要特點(diǎn)如下: 1、8位字長(zhǎng)CPU; 2、振蕩器和時(shí)鐘電路,全靜態(tài)操作:0-33MHz; 3、8KB系統(tǒng)內(nèi)可編程Flash存儲(chǔ)器; 4、4個(gè)I/O端口共32線; 5、3個(gè)16位定時(shí)/計(jì)數(shù)器; 6、全雙工串行口通道; 7、ISP端口; 8、定時(shí)監(jiān)視器; 9、雙數(shù)據(jù)指針; 10、20多個(gè)特殊功能寄存器; 11、電源下降標(biāo)志。 通過(guò)比較AT89S51和AT89S52本質(zhì)上沒(méi)有太大的區(qū)別,只不過(guò)AT89S52是AT89S51增強(qiáng)型,成本差不多,電源下降有明顯的標(biāo)志,所以選擇AT89S52作為本設(shè)計(jì)的主控芯片。 2.3傳感器的選擇2.3.1 溫度傳感器的選擇方案一:溫度傳感器DS18B20,它直接能把收集到的溫度信號(hào)直接轉(zhuǎn)化成單片機(jī)識(shí)別的數(shù)字信號(hào),不需要增加外圍電路,直接可以和單片機(jī)進(jìn)行相連接。結(jié)構(gòu)簡(jiǎn)單,使用起來(lái)方便。 方案二:溫度傳感器Pt100是鉑熱電阻,它的阻值跟溫度的變化成正比。它的輸入響應(yīng)時(shí)間為1秒同步測(cè)量,是一個(gè)模擬信號(hào)量。 綜上所述,DS18B20溫度傳感器的結(jié)構(gòu)簡(jiǎn)單,能把采集到的信號(hào)直接傳送給單片機(jī)做處理,然而鉑熱電阻,需要添加響應(yīng)的轉(zhuǎn)換電路。相比來(lái)說(shuō)比較麻煩。 2.3.2 煙霧傳感器的選擇方案一:煙霧傳感器MQ-2,它具有信號(hào)輸出指示,雙路信號(hào)的輸出,對(duì)液化氣,天然氣,城市煤氣有較好的靈敏度。具有長(zhǎng)期的使用壽命和可靠的穩(wěn)定度,快速的響應(yīng)恢復(fù)特性,試用與家庭或工廠的氣體泄漏監(jiān)測(cè)裝置。 方案二:GQQ0.1煙霧傳感器主要用于煤礦井下橡膠、煤塵等因摩擦起熱或其它原因產(chǎn)生產(chǎn)生的煙霧進(jìn)行監(jiān)測(cè)。本傳感器只能在無(wú)顯著搖動(dòng)和沖擊振動(dòng)的地方,在無(wú)足夠以腐蝕金屬和破壞絕緣的氣體和蒸汽的環(huán)境中,在無(wú)滴水及液體浸入的地方。 綜上所述,MQ-2煙霧傳感器的壽命長(zhǎng),可靠的穩(wěn)定度,快速的響應(yīng)恢復(fù)特性,具有信號(hào)輸出指示,雙路信號(hào)的輸出。所以本設(shè)計(jì)采用MQ-2作為煙霧傳感器。 2.4 ADC芯片選擇的論證A/D轉(zhuǎn)換器的作用是把模擬量轉(zhuǎn)換成數(shù)字量,以便于計(jì)算機(jī)進(jìn)行處理。隨著超大規(guī)模集成電路技術(shù)的飛速發(fā)展,A/D轉(zhuǎn)換的新設(shè)計(jì)思想和制造技術(shù)層出不窮。并為滿足各種不同的檢測(cè)及控制任務(wù)的需要,大量結(jié)構(gòu)的不同、性能各異的A/D轉(zhuǎn)換芯片應(yīng)運(yùn)而生。盡管A/D轉(zhuǎn)換器的種類繁多,但目前廣泛應(yīng)用在單片機(jī)應(yīng)用系統(tǒng)中的有以下幾種類型:逐次比較型轉(zhuǎn)換器、雙積分型轉(zhuǎn)換器、∑-△式轉(zhuǎn)換器。 方案一:ADC0809轉(zhuǎn)換器 ADC0809采用逐次比較的方法完成A/D轉(zhuǎn)換,由單一的+5V電源供電。片內(nèi)帶有鎖存功能的8路選1的模擬開(kāi)關(guān),由C、B、A的編碼來(lái)決定所選的通道。ADC0809完成一次轉(zhuǎn)換需100微秒左右,它可對(duì)0-5V的模擬信號(hào)進(jìn)行轉(zhuǎn)換,但是它在精度、速度和價(jià)格上都適中。 方案二:ADC0832轉(zhuǎn)換器 ADC0832為8位分辨率A/D轉(zhuǎn)換芯片,其最高分辨率可達(dá)256級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0-5V之間。芯片的轉(zhuǎn)換時(shí)間僅為32微秒,具有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性強(qiáng)。 通過(guò)比較ADC0832具有較快的轉(zhuǎn)換時(shí)間且穩(wěn)定性能強(qiáng),選擇ADC0832作轉(zhuǎn)換芯片選擇。 2.5 顯示電路的選擇論證方案一:LED燈顯示 LED按顯示方式可分為靜態(tài)顯示和動(dòng)態(tài)顯示。靜態(tài)顯示就是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后就不再控制LED,直到下一次顯示時(shí)再傳送一次新的數(shù)據(jù)。只要當(dāng)前顯示的數(shù)據(jù)沒(méi)有變化,就無(wú)需理睬數(shù)碼管顯示。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用CPU時(shí)間少。靜態(tài)顯示中,每一個(gè)顯示器都要占用單獨(dú)具有鎖存功能的I/O口,該接口用于筆畫(huà)段字形代碼。這樣單片機(jī)只要把顯示的字型數(shù)據(jù)代碼發(fā)送到接口電路,該字段就可以顯示要發(fā)送的字型。要顯示新的數(shù)據(jù)時(shí),單片機(jī)再發(fā)送新的字型碼。 另一種方法是動(dòng)態(tài)掃描顯示,是用接口電路把所有顯示器的8個(gè)筆畫(huà)字段(a-g和dp)同名端連接在一起,而每一個(gè)顯示器的公共極各自獨(dú)立接受I/O線控制。CPU向字段輸出端口輸出字型碼時(shí),所有顯示器接收相同的字型碼,但究竟使哪一位則由I/O線決定。動(dòng)態(tài)掃描用分時(shí)的方法輪流控制每個(gè)顯示器的公共極,使每個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮的過(guò)程中,每位顯示器的點(diǎn)亮?xí)r間極為短暫,但由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二級(jí)管的余輝效應(yīng),給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。 方案二:LCD顯示器 LCD是液晶顯示器的縮寫(xiě),它是一種被動(dòng)式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過(guò)處理后能改變光線通過(guò)方向的特性,從而達(dá)到白底黑字或者黑底白字顯示的目的。液晶顯示器具有功耗低、抗干擾能力強(qiáng)等優(yōu)點(diǎn),因此被廣泛應(yīng)用在儀器儀表和控制系統(tǒng)中。 通過(guò)比較LCD是具有很多優(yōu)點(diǎn),但是本設(shè)計(jì)中用LED燈就能實(shí)現(xiàn)其很好的功能,且節(jié)約成本。所以選擇LED。 2.6 整體方案根據(jù)基于多傳感器的智能火災(zāi)報(bào)警系統(tǒng)的基本工作原理:當(dāng)有火災(zāi)發(fā)生時(shí),環(huán)境中的溫度和氣體的濃度會(huì)升高,溫度傳感器把模擬信號(hào)直接轉(zhuǎn)化成數(shù)字信號(hào),再傳送給單片機(jī)來(lái)處理,煙霧傳感器把感受的煙霧信號(hào)經(jīng)過(guò)放大,再經(jīng)過(guò)A/D轉(zhuǎn)換電路,把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),發(fā)送給單片機(jī)來(lái)處理和控制。通過(guò)單片機(jī)處理過(guò)的信號(hào),再與預(yù)訂的門限值進(jìn)行對(duì)比,達(dá)到門限值單片機(jī)通知報(bào)警電路報(bào)警。系統(tǒng)總體方案如圖2.1所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BB4.tmp.png 圖2.1 系統(tǒng)總體方案框圖 2.7 本章小結(jié)通過(guò)控制芯片、傳感器、顯示部分的對(duì)比和分析,對(duì)本設(shè)計(jì)的主要器件進(jìn)行論述,最終確定了各部分所用的元器件。主控芯片選擇AT89S52作為控制核心,DS18B20溫度傳感器和MQ-2煙霧傳感器作為數(shù)據(jù)搜集電路,并用LED作為顯示電路。 第3章 建筑物多傳感器火災(zāi)報(bào)警系統(tǒng)的硬件設(shè)計(jì) 3.1 AT89S52單片機(jī)簡(jiǎn)介 AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。 3.2 AT89S52單片機(jī)的最小系統(tǒng)電路及其引腳功能說(shuō)明AT89S52單片機(jī)各個(gè)功能部件的運(yùn)行都以時(shí)鐘控制信號(hào)為基準(zhǔn),有條不紊地一拍一拍地工作。所以在單片機(jī)系統(tǒng)設(shè)計(jì)中,振蕩電路的設(shè)計(jì)是十分重要的一個(gè)環(huán)節(jié),時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定。 如圖3.1中的時(shí)鐘電路的電容C1和C2的典型值通常采用選擇為30pF左右。該電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體振蕩頻率的范圍通常是在1.2-12MHz。一般的情況下,單片機(jī)的晶體振蕩為并聯(lián)諧振狀態(tài),兩個(gè)電容的取值應(yīng)該是相同的,或者相差不大,如果相差太大,容易造成諧振的不平衡,容易造成停振或者干脆不起振。輸出的信號(hào)與單片機(jī)的18、19腳相連。 復(fù)位是單片機(jī)初始化的操作,單片機(jī)重新啟動(dòng)時(shí)都需要進(jìn)行復(fù)位,使得CPU處于準(zhǔn)備開(kāi)始的狀態(tài),并且從這個(gè)狀態(tài)開(kāi)始工作。AT89S52單片機(jī)的復(fù)位是由外部的復(fù)位電路實(shí)現(xiàn)的。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。按鍵手動(dòng)復(fù)位有電平和脈沖兩種方式。如圖3.1中所示,本設(shè)計(jì)采用按鍵手動(dòng)復(fù)位的電平復(fù)位電路。 當(dāng)AT89S52單片機(jī)的復(fù)位引腳RST出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)執(zhí)行復(fù)位操作。 VCC:電源供電電壓。 GND:電源地電平。 XTAL1:當(dāng)外接晶振時(shí),接外部晶振的一個(gè)引腳。片內(nèi)振蕩器由一個(gè)單級(jí)反相器組成,XTAL1為反相器的輸入。當(dāng)外部振蕩器提供時(shí)鐘信號(hào)時(shí),則由XTAL1端輸入。 XTAL2:接外部晶振的另一個(gè)引腳,片內(nèi)為單級(jí)反相器的輸出。當(dāng)由外部時(shí)鐘源提供時(shí)鐘信號(hào)時(shí),則本引腳懸空。 P0口:8位并行I/O口,作為輸出口時(shí),每個(gè)管腳可帶8個(gè)TTL負(fù)載。在外擴(kuò)存儲(chǔ)器時(shí),它定義為低8位地址/數(shù)據(jù)總線。當(dāng)定義為I/O口時(shí),為準(zhǔn)雙向I/O口,需外接上拉電阻,在寫(xiě)入“1”后就成為高阻抗輸入口。在對(duì)片內(nèi)Flash編程時(shí)P0口接收字節(jié)代碼,在程序校驗(yàn)時(shí)輸出字節(jié)代碼。程序校驗(yàn)期間應(yīng)外接上拉電阻。 P1口:內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口,能負(fù)擔(dān)4個(gè)TTL負(fù)載。在Flash編程和校驗(yàn)時(shí)定義為8位地址線。 P2口:內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口。能接4個(gè)TTL負(fù)載。當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí)定義為高八位地址總線,只需八位地址線時(shí),它將輸出特殊功能寄存器中內(nèi)容。 P3:內(nèi)接上拉電阻的8位準(zhǔn)雙向I/O口,能負(fù)擔(dān)4個(gè)TTL負(fù)載。 它的第二變異功能如下。 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ǔ)器寫(xiě)選通)。 P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)。 RST:復(fù)位信號(hào)輸入端。當(dāng)單片機(jī)運(yùn)行時(shí),此引腳加上持續(xù)時(shí)間大于2個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以對(duì)單片機(jī)完成復(fù)位操作。RST引腳上的高電平有效。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)不會(huì)出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),此時(shí)外部程序存儲(chǔ)器地址為0000H-FFFFH,不管是否有內(nèi)部程序存儲(chǔ)器。加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此時(shí)為內(nèi)部程序存儲(chǔ)器。在FLASH編程時(shí),此引腳用來(lái)通12V編程電源,即VPP。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BB5.tmp.png 圖3.1 單片機(jī)的最小系統(tǒng)電路 3.3 溫度采集電路3.3.1 DS18B20的介紹本設(shè)計(jì)采用的溫度傳感器是美國(guó)DALLAS公司生產(chǎn)的DS18B20 傳感器,它與其他傳統(tǒng)的溫度傳感器不同,DS18B20可以把采集到的溫度直接轉(zhuǎn)化成串行數(shù)字信號(hào),直接提供給單片機(jī)進(jìn)行處理,它具有耐磨耐碰,體積小,低功耗,高性能,抗干擾能力強(qiáng),使用方便,適用于各種狹小空間設(shè)備數(shù)字的測(cè)溫和控制領(lǐng)域。 通過(guò)編程,溫度傳感器DS18B20可以實(shí)現(xiàn)9~12位的溫度讀數(shù)。信息經(jīng)過(guò)單個(gè)引腳送入溫度傳感器DS18B20或從溫度傳感器DS18B20的一個(gè)引腳送出,因此從單片機(jī)到DS18B20僅僅需要連接一個(gè)引腳。本身有電源可以支持讀、寫(xiě)和執(zhí)行溫度變化所需要的電源,而不需要外接的電源。 每片DS18B20在出廠時(shí)都設(shè)有唯一的產(chǎn)品序列號(hào),此序列號(hào)存放在它的內(nèi)部ROM中,微處理器通過(guò)簡(jiǎn)單的協(xié)議就能識(shí)別這些序列號(hào),因此多個(gè)DS18B20可以掛接于同一條單線總線上,這允許在許多不同的地方放置溫度傳感器,特別適合于構(gòu)成多點(diǎn)溫度測(cè)控系統(tǒng)。 3.3.2 溫度傳感器DS18B20的主要特點(diǎn)1:采用單線技術(shù),與單片機(jī)通信只需要一個(gè)引腳; 2:通過(guò)識(shí)別芯片各自唯一的產(chǎn)品序列號(hào)從而實(shí)現(xiàn)單線多掛接,簡(jiǎn)化了分布式溫度檢測(cè)的應(yīng)用; 3:實(shí)際應(yīng)用中不需要外部任何器件即可實(shí)現(xiàn)測(cè)溫; 4:可通過(guò)數(shù)據(jù)線供電,電壓范圍為3~5.5V; 5:不需要備份電源; 6:測(cè)量范圍為-55~+125℃,在-10~85℃范圍內(nèi)誤差為±0.5℃; 7:數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇,可配置實(shí)現(xiàn)9~12位的溫度讀數(shù); 8:將12位的溫度值轉(zhuǎn)換為數(shù)字量所需要的時(shí)間不超過(guò)750MS; 9:用戶定義的,非易失性的溫度告警設(shè)置,用戶可自行設(shè)定告警的上下限溫度; 10:告警尋找命令可以識(shí)別和尋址那些溫度超出預(yù)設(shè)告警界限的器件。 3.3.3 溫度傳感器DS18B20的引腳圖和封裝及引腳功能說(shuō)明DS18B20溫度傳感器封裝如圖3.2(a)所示、引腳圖如圖3.2(b)所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BB6.tmp.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BB7.tmp.png 圖3.2(a) DS18B20封裝 圖3.2(b) DS18B20引腳圖 NC:空引腳,懸空,不使用。 VDD:可選電源腳,電壓范圍為3到5.5V。當(dāng)工作于寄生電源時(shí),此引腳必須接地。 DQ:數(shù)據(jù)輸入/輸出腳。漏極開(kāi)路,常態(tài)下高電平。 GND:接地。 3.3.4 DS18B20供電方式DS18B20有兩種供電方式:寄生電源和外部電源。 寄生電源簡(jiǎn)單說(shuō)起來(lái)是器件從單線數(shù)據(jù)線中“竊取”電源,在信號(hào)線為高電平的時(shí)間周期內(nèi),把能量存儲(chǔ)在內(nèi)部的電容器中,在單信號(hào)線為低電平的時(shí)間內(nèi)斷開(kāi)此電源,直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳娙荩╇娫礊橹埂<纳娫从袃蓚(gè)優(yōu)點(diǎn): 1、可實(shí)現(xiàn)遠(yuǎn)程溫度檢測(cè)而無(wú)需本地電源; 2、有正常電源的條件下也可以讀ROM。 為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時(shí),DQ線上必須提供足夠的功率。因?yàn)?/font>DS18B20的工作電流高達(dá)1.5mA,4.7K的上拉電阻將使得DQ線沒(méi)有足夠的驅(qū)動(dòng)能力。解決的方法是在發(fā)生溫度變換時(shí)在DQ線上提供強(qiáng)的上拉,比如用MOSFET管把DQ線直接拉到電源電壓。當(dāng)使用寄生電源方式時(shí)VDD引腳必須連接到地。 DS18B20的另一種供電方式是將VDD引腳接外部電源(3-5.5V)。這種方法的優(yōu)點(diǎn)是在DQ線上不要求強(qiáng)的上拉。總線上的主機(jī)在溫度變換期間不需要一直使DQ線保持高電平。這就允許在變換時(shí)間內(nèi)其它數(shù)據(jù)在單線上傳送。而且,在單線上可以放置多個(gè)DS18B20,如果它們都使用外部電源,那么通過(guò)發(fā)起“跳過(guò)ROM”命令,接著執(zhí)行“溫度變換”命令就可以同時(shí)完成各自的溫度變換。注意,采用外部電源這種方式時(shí),GND引腳不可懸空。 本設(shè)計(jì)雖然只使用了一片DS18B20,但由于不存在遠(yuǎn)程溫度測(cè)量的考慮,所以為了簡(jiǎn)單起見(jiàn),仍然采用外部供電的方式。 3.3.5 溫度采集模塊 DS18B20是數(shù)字式溫度傳感器,它把采集到的溫度信號(hào)直接轉(zhuǎn)化成單片機(jī)能識(shí)別的數(shù)字信號(hào),而且本設(shè)計(jì)中采用的外部供電的方式,所以設(shè)計(jì)出的溫度采集電路如圖3.3所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BB8.tmp.png 圖3.3 溫度采集電路 3.4 氣體濃度采集電路氣體濃度采集模塊是能夠檢測(cè)環(huán)境中的煙霧等氣體的濃度,并將其轉(zhuǎn)換為數(shù)字信號(hào)傳送至主控芯片,其最基本組成部分應(yīng)包括:氣體信號(hào)采集電路、模擬放大電路、模數(shù)轉(zhuǎn)換電路、單片機(jī)控制電路。氣體信號(hào)采集電路一般由氣體傳感器和模擬放大電路組成,將煙霧等氣體信號(hào)轉(zhuǎn)化為模擬的電信號(hào)。模數(shù)轉(zhuǎn)換電路把從煙霧檢測(cè)電路送出的模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào)之后送入單片機(jī)中進(jìn)行處理。 3.4.1 MQ-2傳感器介紹本設(shè)計(jì)中采用的MQ-2型半導(dǎo)體可燃?xì)怏w敏感元件煙霧傳感器屬于氣敏傳感器,是氣-電變換器,它將可燃性氣體在空氣中的含量(即濃度)轉(zhuǎn)化成電壓或者電流信號(hào),通過(guò)A/D轉(zhuǎn)換電路將模擬量轉(zhuǎn)換成數(shù)字量后送到單片機(jī),進(jìn)而由單片機(jī)完成數(shù)據(jù)處理、濃度處理及報(bào)警控制等工作。 MQ-2型半導(dǎo)體可燃?xì)怏w敏感元件煙霧傳感器具有靈敏度高、響應(yīng)快、抗干擾性好、使用方便、價(jià)格便宜,且不會(huì)發(fā)生探頭阻緩及中毒現(xiàn)象,維護(hù)成本較低等優(yōu)點(diǎn)。因此,本設(shè)計(jì)采用MQ-2氣體傳感器作為報(bào)警器煙霧信息采集部分的核心。 MQ-2型煙霧傳感器屬于二氧化錫半導(dǎo)體氣敏材料,屬于表面離子式N型半導(dǎo)體。當(dāng)他處于200~300℃溫度時(shí),二氧化錫吸附了空氣中的氧,從而形成氧的負(fù)離子吸附,使得半導(dǎo)體中的電子密度減小,從而使其電阻值增加。當(dāng)與煙霧接觸時(shí),如果晶粒間界處的勢(shì)壘受到該煙霧的調(diào)制而變化,此時(shí)就會(huì)引起表面電導(dǎo)率的變化。利用這一點(diǎn),MQ-2型煙霧傳感器就可以獲得這種煙霧存在的信息。 遇到可燃煙霧(如CH4等)時(shí),原來(lái)吸附的氧脫附,而由可燃煙霧以正離子狀態(tài)吸附在二氧化錫半導(dǎo)體表面;氧脫附放出電子,煙霧以正離子狀態(tài)吸附也要放出電子,從而使二氧化錫半導(dǎo)體帶電子密度增加,電阻值下降。而當(dāng)空氣中沒(méi)有煙霧時(shí),二氧化錫半導(dǎo)體又會(huì)自動(dòng)恢復(fù)氧的負(fù)離子吸附,使電阻值升高到初始狀態(tài)。這就是MQ-2半導(dǎo)體型可燃性煙霧傳感器檢測(cè)可燃煙霧的基本原理。 3.4.2 MQ-2傳感器的特性及主要技術(shù)指標(biāo)MQ-2型傳感器的一般特點(diǎn):對(duì)天然氣、液化石油氣等煙霧有很高的靈敏度,尤其對(duì)烷類煙霧更為敏感;具有良好的重復(fù)性和長(zhǎng)期的穩(wěn)定性,初始穩(wěn)定,響應(yīng)時(shí)間短,長(zhǎng)時(shí)間工作性能好;電路設(shè)計(jì)電壓范圍寬,24V以下均可;加熱電壓5±0.2V。 MQ-2型傳感器的初期穩(wěn)定特性:半導(dǎo)體煙霧傳感器在不通電狀態(tài)存放一段時(shí)間后,再通電時(shí),器件并不能立即投入正常工作。這是因?yàn)闊熿F傳感器中的二氧化錫在不通電的狀態(tài)下會(huì)吸附空氣中的水蒸氣,當(dāng)再次通電時(shí)需要預(yù)熱幾分鐘使水蒸氣蒸發(fā)后,氣敏電阻才能正常工作。初期穩(wěn)定時(shí)間是指再次通電工作時(shí),氣敏電阻值達(dá)到穩(wěn)定時(shí)所需要的時(shí)間。一般來(lái)說(shuō),不通電時(shí)間越長(zhǎng)初期穩(wěn)定時(shí)間也就越長(zhǎng),不通電存放時(shí)間達(dá)到15天以上,初期穩(wěn)定時(shí)間一般要五分鐘以上。 MQ-2半導(dǎo)體煙霧傳感器一般要在較高的溫度(200~450℃)下工作,需要對(duì)其加熱。傳感器通常是用在易燃易爆環(huán)境中,但如果加熱絲直接與電源相連,當(dāng)加熱絲短路造成元器件局部過(guò)熱或放電時(shí),極易引發(fā)安全事故。因此必須使用傳感器的生產(chǎn)廠家推薦的加熱電壓,使其工作在安全范圍內(nèi),以保證操作安全。 3.4.3 氣體采集模塊MQ-2傳感器輸出的模擬信號(hào)一般的都比較微弱,需要經(jīng)過(guò)前置電路對(duì)其進(jìn)行放大、濾波、電平調(diào)整,才能滿足單片機(jī)對(duì)輸入信號(hào)的要求。本設(shè)計(jì)中氣體濃度采集系統(tǒng)采用的MQ-2半導(dǎo)體煙霧傳感器屬于電阻型,因此只需串聯(lián)一個(gè)參考電阻,再經(jīng)過(guò)一個(gè)放大電路即可發(fā)送給ADC采集。常見(jiàn)的運(yùn)算放大器中,S8550低電壓、大電流、小信號(hào)、價(jià)格低廉、使用簡(jiǎn)單等優(yōu)點(diǎn),最為普通,所以本設(shè)計(jì)中的前置放大電路采用S8550作為電路的運(yùn)算放大器。信號(hào)經(jīng)由S8550運(yùn)算放大器放大后進(jìn)入ADC0832模數(shù)轉(zhuǎn)換模塊,ADC0832可以將輸入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),然后再將數(shù)字信號(hào)傳送給單片機(jī)處理。經(jīng)過(guò)考慮以上的因素設(shè)計(jì)出氣體濃度采集電路,具體氣體濃度采集模塊如圖3.4所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BC9.tmp.png 圖3.4 氣體濃度采集模塊 3.5 ADC0832轉(zhuǎn)換器3.5.1 ADC0832轉(zhuǎn)換器介紹ADC0832 為8位分辨率的A/D轉(zhuǎn)換芯片,其最高分辨可達(dá)256級(jí),適應(yīng)一般模擬量轉(zhuǎn)換要求。因內(nèi)部電源輸入和參考電壓復(fù)用,芯片的模擬電壓輸入應(yīng)在0-5V之間。芯片的轉(zhuǎn)換時(shí)間僅為32μS,它具有雙重的數(shù)據(jù)輸出,可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)錯(cuò)誤,具有較快的轉(zhuǎn)換速度和較強(qiáng)的穩(wěn)定性能。芯片的獨(dú)立使能輸入,使多器件掛接和處理器控制變得方便可行。DI 數(shù)據(jù)輸入端,可以輕松地實(shí)現(xiàn)功能的通道選擇 。ADC0832的封裝如圖3.5所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCA.tmp.png 圖3.5 ADC0832封裝圖 3.5.2 AD0832轉(zhuǎn)換器各引腳功能/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: 電源輸入及參考電壓輸入。 3.6 報(bào)警電路設(shè)計(jì)本設(shè)計(jì)采用蜂鳴器和LED燈作為報(bào)警裝置。通過(guò)判斷所接收到的數(shù)據(jù)來(lái)確定是否報(bào)警,所接受到的數(shù)據(jù)主要來(lái)自溫度傳感器、煙霧傳感器和按鍵。 3.6.1 蜂鳴器當(dāng)單片機(jī)接收到超額溫度信號(hào)或氣體信號(hào)時(shí),輸出腳BELL輸出高電平,Q1導(dǎo)通,致使蜂鳴器BELL得電工作,發(fā)出報(bào)警聲。具體報(bào)警電路如圖3.6所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCB.tmp.png 圖3.6 報(bào)警模塊 3.6.2 LED指示燈本設(shè)計(jì)共使用了3個(gè)LED燈,兩個(gè)狀態(tài)指示燈和一個(gè)電源指示燈。通上電源以后,電源指示燈亮,表明該系統(tǒng)處在工作情況下;綠色的狀態(tài)指示燈亮,表明該系統(tǒng)為正常工作模式;當(dāng)單片機(jī)接收到超額溫度信號(hào)或氣體信號(hào)時(shí),向P0端口發(fā)送信號(hào),紅色的狀態(tài)指示燈亮,并且發(fā)出報(bào)警信號(hào)。狀態(tài)指示燈如圖3.7(a)所示、電源指示燈如圖3.7(b)所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCC.tmp.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCD.tmp.png 圖3.7(a) 狀態(tài)指示燈電路圖 圖3.7(b) 電源指示燈電路圖 3.7 數(shù)碼管顯示電路設(shè)計(jì)要用單片機(jī)構(gòu)成發(fā)射機(jī),就需要一個(gè)人機(jī)界面。常采用的方式是LED數(shù)碼管顯示結(jié)果,用幾個(gè)小按鍵執(zhí)行某些功能,如預(yù)置值、改變測(cè)量范圍。 3.7.1 顯示器的工作原理LED(Light Emitting Diode)顯示是用發(fā)光二極管顯示字段的顯示器件,也稱數(shù)碼管。當(dāng)二極管導(dǎo)通時(shí)相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆劃發(fā)光,就能顯示出各種字符。 LED 數(shù)碼顯示器有兩種結(jié)構(gòu),分別是:共陽(yáng)接法:所有發(fā)光二極管的陽(yáng)極連在一起;共陰接法:所有發(fā)光二極管的陰極連在一起。本設(shè)計(jì)所采用的是四位一體共陽(yáng)極數(shù)碼管。 點(diǎn)亮LED 顯示器分別有靜態(tài)和動(dòng)態(tài)兩種方法。靜態(tài)顯示就是顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止,這種方法,每一顯示位都需要一個(gè)8 位的輸出口控制,占用硬件比較多,一般僅用于位數(shù)較少的顯示。動(dòng)態(tài)則一位位點(diǎn)亮各位顯示器,每位顯示器每隔一段時(shí)間點(diǎn)亮一次。顯示器的亮度與導(dǎo)通的電流大小有關(guān),也和點(diǎn)亮的時(shí)間、間隔的比例有關(guān)。動(dòng)態(tài)顯示器因?yàn)槠溆布杀据^低,從而得到較為廣泛的應(yīng)用。如需顯示字符和數(shù)字,要提供顯示段碼給LED 顯示器,組成一個(gè)“8”字形的7段,再加上一個(gè)小數(shù)點(diǎn)位,共8段,所以提供LED 顯示器的顯示段碼為1 個(gè)字節(jié)。 發(fā)光二極管的工作電壓為1.5~3.0伏,工作電流為幾毫安到幾十毫安,壽命很長(zhǎng)。半導(dǎo)體數(shù)碼管將十位數(shù)分成七個(gè)字段,每段為一個(gè)發(fā)光二極管,其字形結(jié)構(gòu)如圖所示,選擇不同的字段發(fā)光,可顯示出不同的字型。 共陽(yáng)極:把發(fā)光二極管的陽(yáng)極連在一起構(gòu)成共陽(yáng)極。使用時(shí)公共端接Vcc,當(dāng)某陽(yáng)極為低電平時(shí),該發(fā)光二極管就導(dǎo)通發(fā)光。輸出一個(gè)段碼就可以控制LED顯示器的字型。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCE.tmp.png 圖3.8 數(shù)碼顯示模塊 3.8 按鍵控制電路設(shè)計(jì)本設(shè)計(jì)只要顯示周圍溫度及氣體濃度,若超過(guò)設(shè)定值則發(fā)出報(bào)警,因此只要四個(gè)按鍵即可實(shí)現(xiàn)。其中兩個(gè)按鍵為報(bào)警溫度的設(shè)定;剩下的一個(gè)為溫度與氣體濃度顯示的轉(zhuǎn)換;另一個(gè)為手動(dòng)報(bào)警按鍵,當(dāng)有人提前發(fā)現(xiàn)火災(zāi)隱情時(shí)候,可以按動(dòng)報(bào)警按鍵發(fā)出報(bào)警信號(hào),以提醒其他人注意安全。 單片機(jī)通過(guò)檢測(cè)報(bào)警按鍵所連接端口信號(hào)判斷按鍵是否按下。 3.9 本章小結(jié)本章主要完成了單片機(jī)簡(jiǎn)單的外圍電路:晶振電路和復(fù)位電路。以及還完成了氣體的采集電路、報(bào)警電路、按鍵電路等等。并且介紹了DS18B20溫度傳感器和MQ-2煙霧傳感器的主要特點(diǎn)及其DS18B20溫度傳感器的供電方式。顯示器的工作原理。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BCF.tmp.png 圖3.9 按鍵控制模塊 第4章 軟件系統(tǒng)設(shè)計(jì) 4.1 主程序流程圖程序流程圖是編寫(xiě)軟件的重要前提,它是在圖表上直觀的體現(xiàn)擬設(shè)計(jì)的目的及過(guò)程。也是編譯的重要依據(jù),按照流程圖一步一步編寫(xiě)程序,系統(tǒng)主程序流程圖如圖4.1所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE0.tmp.png 圖4.1 主程序流程圖 4.2 串行通訊的實(shí)現(xiàn)4.2.1 串行口控制寄存器SCON的設(shè)置單片機(jī)的結(jié)構(gòu)和特殊寄存器是編寫(xiě)軟件的關(guān)鍵。SBUF 數(shù)據(jù)緩沖寄存器是一個(gè)可以直接尋址的串行口專用寄存器。實(shí)際上SBUF 包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們都共同使用同一個(gè)尋址地址,即99H。CPU 在讀SBUF 時(shí)會(huì)指到接收寄存器,在寫(xiě)時(shí)會(huì)指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒(méi)有及時(shí)的被響應(yīng),數(shù)據(jù)沒(méi)有被取走,下一幀數(shù)據(jù)已到來(lái),而造成的數(shù)據(jù)重疊問(wèn)題。發(fā)送器則不需要用到雙緩沖,一般情況下在寫(xiě)發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。 SCON 串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON就是52芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制52芯片串行口的工作狀態(tài)。52芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON 寄存器。 REM 為允許接收位,REM 置1 時(shí)串口允許接收,置0 時(shí)禁止接收。REM 是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1 都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來(lái)的控制字符產(chǎn)生中斷,那么就可以在這個(gè)子程序的開(kāi)始處加入REM=0 來(lái)禁止接收該子程序,在子程序結(jié)束處加入REM=1 再次打開(kāi)串口進(jìn)行接收。 TB8 發(fā)送數(shù)據(jù)位8,在模式2 和3 是要發(fā)送的第9 位。該位可以用軟件根據(jù)需要進(jìn)行置位或者清除,通常這一位在通信協(xié)議中作為奇偶位使用;而在多處理機(jī)通信中這一位則用于表示是地址幀或數(shù)據(jù)幀。 RB8接收數(shù)據(jù)位8,在模式2和3是已接收的第9位。該位作為奇偶位或者地址/數(shù)據(jù)標(biāo)識(shí)位。在模式0中,RB8則作為保留位。在模式1中,當(dāng)SM2=0時(shí),RB8為已接收的停止位。 TI發(fā)送中斷標(biāo)識(shí)位。在模式0中,由硬件在發(fā)送完第8位數(shù)據(jù)后置位。其它模式中則是由硬件在發(fā)送之初置位。TI置位后,申請(qǐng)中斷,CPU響應(yīng)中斷之后發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI都必須由軟件來(lái)清除。 RI接收中斷標(biāo)識(shí)位。在模式0中,由硬件在結(jié)束第8位接收后置位。其它模式中則是由硬件在接收的半中間置位。RI=1,申請(qǐng)中斷,要求CPU 取走數(shù)據(jù)。但在模式1中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI置位。同樣RI也必須要靠軟件清除。常用的串口模式1是傳輸10 個(gè)位的,1位起始位為0,8位數(shù)據(jù)位,低位在先,1位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1或定時(shí)器2的定時(shí)值(溢出速率)。 4.2.2 定時(shí)器的初始化設(shè)置定時(shí)器TMOD初始值為11H。初始化代碼如下: void main() { TMOD=0x11; //定時(shí)器0c初始化 TH1=(65535-1000)/256; TL1=(65535-1000)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; Init_DS18B20(); //溫度 芯片初始化 P0=0xff; //初始化 斷口 P1=0xff; P3=0xff; while(1) { Scan_Key(); baojin(); value = ReadAdc0832(0); } } 4.2.3 波特率計(jì)算在使用串口通訊時(shí),一個(gè)非常重要的參數(shù)就是波特率,只有上下位機(jī)的波特 率一樣時(shí)才可進(jìn)行正常的通訊。波特率是串行端口每秒可以傳輸?shù)牟ㄌ財(cái)?shù)。它是指每秒可以傳送9600個(gè)二進(jìn)位,而一個(gè)字節(jié)要8個(gè)二進(jìn)位,如用串口模式1來(lái)傳輸,那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10個(gè)二進(jìn)位,9600 波特率用模式1傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是9600÷10=960 字節(jié)。51芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M的晶振來(lái)計(jì)算,那么它的波特率可以達(dá)到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決于PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。模式1和模式3的波特率是可變的,取決于定時(shí)器1或2(52 芯片)的溢出速率。可以用以下的公式去計(jì)算: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE1.tmp.png (4.1) 上式中如設(shè)置PCON 寄存器中的SMOD 位為1,就可以把波特率提升至兩倍。通常會(huì)用定時(shí)器1工作在模式2下,此時(shí)TL1作為計(jì)數(shù),會(huì)自動(dòng)重裝值 ,這個(gè)定時(shí)模式下定時(shí)器溢出后,TH1的值會(huì)自動(dòng)裝載到TL1,接著計(jì)數(shù),這樣就可以使得定時(shí)更為準(zhǔn)確。在這個(gè)模式下,定時(shí)器1溢出速率可用如下公式: file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE2.tmp.png (4.2) 上式中的計(jì)數(shù)速率跟晶體振蕩器的頻率相關(guān)。在52芯片中,定時(shí)器啟動(dòng)后,每一個(gè)機(jī)器周期內(nèi)定時(shí)寄存器TH 的值就增加1,而1個(gè)機(jī)器周期等于12個(gè)振蕩周期,所以51 芯片的計(jì)數(shù)速率為晶體振蕩器頻率的1/12,那么一個(gè)12M 的晶振用在51 芯片上的計(jì)數(shù)速率就為1M。通常用11.0592M 晶體是為了得到標(biāo)準(zhǔn)的無(wú)誤差的波特率,代入公式: 11.0592M: 9600=(2÷32)×((11.0592M/12)/(256-TH1)) TH1=250 12M: 9600=(2÷32)×((12M/12)/(256-TH1)) TH1≈249.49 上面的計(jì)算可以看出使用12M晶體的時(shí)候計(jì)算出來(lái)的TH1不為整數(shù),而TH1的值只能取整數(shù),這樣它就會(huì)有一定的誤差存在,而不能產(chǎn)生精確的9600 波特率。當(dāng)然一定的誤差在使用中是可以接受的,就算使用11.0592M的晶體振蕩器也會(huì)因晶體本身所存在的誤差而使得波特率產(chǎn)生誤差,但晶體本身的誤差對(duì)波特率的影響是非常小的,甚至可以忽略不計(jì)。 4.3 主程序初始化流程圖這部分實(shí)現(xiàn)的功能包括各種I/O輸入輸出狀態(tài)的設(shè)定、寄存器初始化、中斷使能等。首先設(shè)定定時(shí)器工作方式,然后開(kāi)系統(tǒng)中斷,以便響應(yīng)中斷定時(shí),及時(shí)對(duì)氣體濃度和溫度進(jìn)行采樣。然后關(guān)閉蜂鳴器,開(kāi)啟綠燈,設(shè)置報(bào)警限初值。主程序初始化流程圖如圖4.2所示。 4.4 濾波子程序當(dāng)在對(duì)氣體濃度進(jìn)行采樣時(shí),可能會(huì)遇到尖脈沖干擾的現(xiàn)象,會(huì)引起煙霧濃度采樣值的偏差,所以,采用去極值平均濾波法,即先對(duì)N個(gè)采樣數(shù)據(jù)進(jìn)行比較,然后去掉最大值和最小值,最后計(jì)算余下的N-2個(gè)采樣數(shù)據(jù)的算術(shù)平均值。這種方法既可以濾去小的隨機(jī)干擾,又可以濾去脈沖干擾,保證了煙霧檢測(cè)濃度的準(zhǔn)確性,大大降低了誤報(bào)、錯(cuò)報(bào)的可能性。濾波子程序如圖4.3所示。 4.5 單片機(jī)處理子程序當(dāng)溫度或煙霧濃度超過(guò)報(bào)警限設(shè)定值時(shí),蜂鳴器發(fā)出報(bào)警,對(duì)應(yīng)的紅燈亮,提醒人們采取安全對(duì)策或者采取相關(guān)措施,從而保障生命財(cái)產(chǎn)的安全。為防止誤報(bào),在程序設(shè)計(jì)上,需對(duì)煙霧濃度和溫度進(jìn)行快速重復(fù)檢查和延時(shí)報(bào)警,以便區(qū)別出煙霧的產(chǎn)生原因,防止誤報(bào)。單片機(jī)處理子程序流程圖如圖4.4所示。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE3.tmp.png 圖4.2 主程序初始化流程圖 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE4.tmp.png 圖4.3 濾波子程序 4.6 按鍵處理子程序通過(guò)單片機(jī)會(huì)判斷是否有鍵值,當(dāng)有鍵按下時(shí)就會(huì)有鍵值,然后調(diào)用鍵盤處理子程序。按鍵處理子程序流程圖如圖4.5所示。 4.7 本章小結(jié)本章主要完了串口通訊的實(shí)現(xiàn),并給出波特率的計(jì)算,還有主程序的流程圖以及單片機(jī)處理子程序的流程圖、按鍵處理程序等等。 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE5.tmp.png 圖4.4 單片機(jī)處理子程序流程 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BE6.tmp.png 圖4.5 按鍵處理子程序流程 結(jié)束語(yǔ) 火災(zāi)自動(dòng)報(bào)警系統(tǒng)可保障生產(chǎn)與生活的安全,避免火災(zāi)和爆炸事故以及煤氣中毒的發(fā)生,它是防火、防爆和安全生產(chǎn)所必備的儀器,具有廣闊的市場(chǎng)空間與發(fā)展前景。 本設(shè)計(jì)的火災(zāi)自動(dòng)報(bào)警系統(tǒng)主要由單片機(jī)最小系統(tǒng)、溫度氣體濃度檢測(cè)電路、顯示電路部分和報(bào)警控制部分構(gòu)成。根據(jù)設(shè)計(jì)要求、使用環(huán)境、成本等因素,選用DS18B20數(shù)字溫度傳感器、MQ-2型半導(dǎo)體電阻式煙霧傳感器和AT89S52單片機(jī)。溫度傳感器采用DS18B20數(shù)字溫度傳感器,由可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域等優(yōu)點(diǎn)。MQ-2型半導(dǎo)體可燃?xì)怏w敏感元件煙霧傳感器屬于氣敏傳感器,是氣-電變換器,它將可燃性氣體在空氣中的含量(即濃度)轉(zhuǎn)化成電壓或者電流信號(hào),通過(guò)A/D轉(zhuǎn)換電路將模擬量轉(zhuǎn)換成數(shù)字量后送到單片機(jī),進(jìn)而由單片機(jī)完成數(shù)據(jù)處理、濃度處理及報(bào)警控制等工作。MQ-2型半導(dǎo)體可燃?xì)怏w敏感元件煙霧傳感器具有靈敏度高、響應(yīng)快、抗干擾性好、使用方便、價(jià)格便宜,且不會(huì)發(fā)生探頭阻緩及中毒現(xiàn)象,維護(hù)成本較低等優(yōu)點(diǎn)。AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,工具多,易上手,片源廣,價(jià)格低,編程靈活,控制簡(jiǎn)單,很適合我們所要制作的火災(zāi)自動(dòng)報(bào)警系統(tǒng)。 在本設(shè)計(jì)研制的報(bào)警系統(tǒng)的基礎(chǔ)上,可以再做適當(dāng)?shù)墓δ軘U(kuò)展,使火災(zāi)自動(dòng)報(bào)警系統(tǒng)的功能更加完善,安全性更高,使用更加方便等,例如增加消防聯(lián)動(dòng)裝置,在火災(zāi)發(fā)生時(shí)可以直接對(duì)火災(zāi)進(jìn)行控制,降低火災(zāi)的損失。 這次的畢業(yè)設(shè)計(jì)總的來(lái)說(shuō)還是成功的,自己不僅從中學(xué)到了很多,也發(fā)現(xiàn)了不少問(wèn)題。一開(kāi)始看到這個(gè)題目的時(shí)候,很茫然,不知道從哪做起,不知道怎么樣才能做出來(lái),后來(lái)在李老師的耐心指導(dǎo)下,才弄清楚怎么開(kāi)始做。然后自己開(kāi)始找相關(guān)資料,并結(jié)合李老師提供的一些資料,學(xué)習(xí)AT89S52芯片、數(shù)碼顯示管、時(shí)鐘電路、控制電路、復(fù)位電路的設(shè)計(jì)原理。通過(guò)本次的設(shè)計(jì)我從中學(xué)習(xí)到了很多的知識(shí),也明白了很多道理,無(wú)論干什么都要細(xì)心,只要努力相信一定會(huì)成功。 參考文獻(xiàn) [1] 沙占友.集成化智能傳感器原理與應(yīng)用[M].北京:電子工業(yè)出版社,2004:125-127. [2] 余錫存,曹國(guó)華.單片機(jī)原理及接口技術(shù)[M].西安:西安電子科技大學(xué)出版社,2002:266-268. [3] 張志良.單片機(jī)原理與控制技術(shù)(第2版)[J].計(jì)算機(jī)信息 ,2006,12(9):222-223. [4] 陳章其,吳沖巖.火災(zāi)傳感器[J].電子器件,2005,18(1):55-58. [5] 熊杰.單片機(jī)與PC機(jī)的串行通信[M].江西:江西環(huán)境工程學(xué)院,2010:15-17. [6] 揭景耀,劉激揚(yáng).傳感器在預(yù)防火災(zāi)中的應(yīng)用[J]. 傳感器技術(shù),2006,6(2):46-48. [7] 徐小濤.基于AT89系列單片機(jī)的串行通信[M].北京:電子工業(yè)出版社,2010:89-91. [8] 張忠華.單片機(jī)與PC機(jī)串行通信的實(shí)現(xiàn) [M].北京:北京外國(guó)語(yǔ)大學(xué)信息技術(shù)中,2009:95-97. [9] Daniel T.Gottuk,Michelle J.Peatross. Advanced fire detection using multi-signature alarm algorithms[J]. Fire Safety Journal,2002,37(11):381-394. [10] 張?chǎng)?單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2005:67-77. [11] 林繼光,吳明光.PC機(jī)和單片機(jī)串行通信程序設(shè)計(jì)[M].浙江:浙江大學(xué)工業(yè)控制研究所,2001. [12] 汪道輝.單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)踐[J].現(xiàn)代電子技術(shù),2006,12(2):59-64. [13] Vaughn Bradshaw. The Building Environment: Active and Passive Control Systems[M]. John Wiley & Sons,2006. [14] 王瑋.52單片機(jī)與PC機(jī)串行通信接口的設(shè)計(jì)[J]. 湖北孝感學(xué)院物理與電子信息工程,2009,2(1):33-42. [15] 李華.AT89S5x系列單片機(jī)應(yīng)用接口技術(shù)[M].北京:航空航天大學(xué)出版社,1993:34-43. [16] 孫育才. AT89S5x系列單片微型計(jì)算機(jī)及應(yīng)用[M].南京:東南大學(xué)出版社,2006:59-67. [17] 劉文濤.單片機(jī)應(yīng)用開(kāi)發(fā)實(shí)例[M].北京:清華大學(xué)出版社,2005:32-36. [18] 劉軍.單片機(jī)原理與接口技術(shù)[M].上海:華東理工大學(xué)出版社,2006:40-44. [19] 彭喜元,姜守達(dá),喬立巖.新編AT89系列單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:工業(yè)大學(xué)出版社,2003:90-94. [20] OGATA K. Modern control engineering [M]. Beijing,China:Publishing House of Electronics Industry,2006:7-23. [21] 李海濤.關(guān)于如何提高單片機(jī)系統(tǒng)可靠性的探討[J].寧夏機(jī)械,2005,2(3):22-28. [22] 張培仁.基于C語(yǔ)言編程AT89S52單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2003:55-57. [23] Yeager Brent. How to troubleshoot your electronic scale[J]. Powder and Bulk Engineering ,2005,3(1):33-38. [24] 賴壽宏.微型計(jì)算機(jī)控制技術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2009:27-30. [25] 楊中華,汪蕙,劉潤(rùn)生.模擬集成電路的自動(dòng)綜合方法[M].杭州:科學(xué)出版社,2007:132-136. [26] 石明江,顧亞雄.單片機(jī)原理與應(yīng)用課程教學(xué)改革與實(shí)踐[J]. 計(jì)算機(jī)教育,2011,2(6):12-22. [27] 張洪潤(rùn).單片機(jī)應(yīng)用技術(shù)教程[M].北京:清華大學(xué)出版社,2009:88-91. [28] 何立民.單片機(jī)高級(jí)教程——應(yīng)用與設(shè)計(jì)[M].北京:航空航天大學(xué)出版社,2003:65-69. [29] 胡漢才.單片機(jī)原理及其接口技術(shù)(第3版)[M].北京:清華大學(xué)出版社,2010:21-26. [30] Chan K,Ito H,Inaba H.Remote sensing system for near-infrared differential absorption of gas using low-loss optical fiber link[J]. ApplOpt,2004:10-23. 致 謝 時(shí)光飛逝,轉(zhuǎn)眼大學(xué)四年學(xué)習(xí)即將結(jié)束。回首大學(xué)學(xué)習(xí)期間的校園學(xué)習(xí)生活,在知識(shí)的海洋里汲取營(yíng)養(yǎng)和體味獲取知識(shí)的充實(shí)與喜悅,不禁感慨萬(wàn)千。 四年的校園生活即將劃上句號(hào),而這對(duì)于我的人生來(lái)說(shuō)只是一個(gè)分號(hào),我將面對(duì)又一次新征程。四年的求學(xué)生涯在老師、同學(xué)、朋友的關(guān)愛(ài)支持下,走得辛苦卻也收獲滿囊,在設(shè)計(jì)即將完成之際,我感慨甚多,心情亦是那樣無(wú)法平靜。我們從小就崇拜名人、偉人,但是現(xiàn)在,我覺(jué)得我更是想把我的敬意和感謝獻(xiàn)給我的導(dǎo)師——黑龍江工程學(xué)院的李靜老師。您最出色的學(xué)生不是我,但我最尊敬的老師卻是您。您治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,視野雄闊,處世態(tài)度認(rèn)真,使我感受到了一種良好的精神氛圍和努力的態(tài)度。授人以魚(yú)不如授人以漁,您不僅讓我接受了全新的思想觀念,更讓我改變了基本的思考方式,鍛煉了自我動(dòng)手的能力,拓寬了未來(lái)的發(fā)展目標(biāo)。從設(shè)計(jì)題目的選定到開(kāi)題報(bào)告、參考文獻(xiàn)、外文翻譯,一直到設(shè)計(jì)寫(xiě)作的指導(dǎo),都是您悉心的點(diǎn)撥,耐心的講解,再經(jīng)思考后的領(lǐng)悟,才使得我走到現(xiàn)在這成功的一步。您廣博的學(xué)識(shí)、深厚的學(xué)術(shù)素養(yǎng)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和一絲不茍的工作作風(fēng)使我終生受益,我在此表示真誠(chéng)地感謝和深深的謝意。感謝您在百忙之中對(duì)我畢業(yè)論文從選題到最后定稿所付出的辛勞,感謝您在我最后大學(xué)生涯對(duì)我人生方向的指引。 在設(shè)計(jì)即將完成之際,我的心情久久無(wú)法平靜下來(lái),從開(kāi)始進(jìn)入選題,到開(kāi)題,最后到現(xiàn)在設(shè)計(jì)的順利完成,有許許多多可敬的師長(zhǎng)、親愛(ài)的同學(xué)、熱心的朋友給了我無(wú)數(shù)的幫助,請(qǐng)?jiān)谶@里接受我誠(chéng)摯謝意! 同時(shí)也感謝黑龍江工程學(xué)院我的母校為我提供良好的做畢業(yè)設(shè)計(jì)的環(huán)境。最后一次感謝所有在畢業(yè)設(shè)計(jì)中曾經(jīng)幫助過(guò)我的良師益友,以及在設(shè)計(jì)中被我參考的論著的作者。 附 錄 A file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps8BF6.tmp.png 系統(tǒng)硬件原理圖 附 錄 B #include<reg52.h> #include "18b20.h" #include "display.h" #include "adc0832.h" #define laddata =P0; unsigned char value=1; unsigned char count=0; unsigned char code duanma[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0xc7}; unsigned char code duanma1[]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xBF}; //共陽(yáng)數(shù)碼管帶小數(shù)點(diǎn)段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" unsigned char code tab[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char code tabw[]={0x24,0xaf,0xe0,0xa2,0x2b,0x32,0x30,0xa7}; extern unsigned char id=0; extern unsigned char value; unsigned char level=0; bit h_temp=0, l_temp=0; // 定義閃爍標(biāo)志位 //timecount用于5000d定時(shí)記數(shù) 時(shí)間到取反標(biāo)志位 RE re_disp int temp,temph=45,templ=3; int flag=1; float nongdu; unsigned char ad_data1,ad_data2,ad_data3; unsigned int data dis[4]={0x00,0x00,0x00,0x00}; //定義3個(gè)顯示數(shù)據(jù)單元和一個(gè)數(shù)據(jù)存儲(chǔ)單元 sbit beep= P1^0; sbit alarm = P3^0; sbit SET = P3^1; sbit UP = P3^2; sbit DOWN = P3^5; unsigned char tempFlag=0,nongduFlag=0,buttonFlag=0; sbit ledNorm = P3^3; sbit ledAlarm = P3^4; unsigned char displayFlag=0; sbit wdu1 = P2^5; //溫度十位 sbit wdu2 = P2^6; //不顯示 sbit wdu3 =P2^7; //小數(shù)點(diǎn) sbit wdu4 = P2^4; //溫度各位 sbit DQ = P2^3; void Delay(int num) { //--延時(shí)函數(shù) 2uS/次 while(num--); } void Init_DS18B20(void) //初始化ds1820 { unsigned char x=0; DQ = 1; //DQ復(fù)位 Delay(8); //稍做延時(shí) DQ = 0; //單片機(jī)將DQ拉低 Delay(80); //精確延時(shí) 大于 480us DQ = 1; //拉高總線 Delay(14); x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 Delay(20); } /******************************************************************************/ unsigned char ReadOneChar(void) //讀一個(gè)字節(jié) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 給脈沖信號(hào) dat>>=1; DQ = 1; // 給脈沖信號(hào) if(DQ) dat|=0x80; Delay(4); } return(dat); } /******************************************************************************/ void WriteOneChar(unsigned char dat) //寫(xiě)一個(gè)字節(jié) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; Delay(5); DQ = 1; dat>>=1; } } /******************************************************************************/ unsigned int ReadTemperature(void) //讀取溫度 { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); //讀取溫度寄存器 a=ReadOneChar(); //讀低8位 b=ReadOneChar(); //讀高8位 t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; //放大10倍輸出并四舍五入 return(t); } void delay_ms(unsigned char ms) // 延時(shí)毫秒@12M,ms最大值255 { unsigned char i; while(ms--) for(i = 0; i < 100; i++); } void display_temp(void)//顯示函數(shù) { EA = 0; temp = ReadTemperature(); EA = 1; if((temp/10)>=temph) { tempFlag =1; // ledAlarm=0; // ledNorm=1; } //溫度高于或等于上限值,報(bào)警 else { tempFlag=0; } dis[2]=value/51; //AD值轉(zhuǎn)換為3為BCD碼,最大為5.00V dis[3]=value%51; //余數(shù)暫存 dis[3]=dis[3]*10; //計(jì)算小數(shù)第一位 dis[1]=dis[3]/51; dis[3]=dis[3]%51; dis[3]=dis[3]*10; //計(jì)算小數(shù)第二位 dis[0]=dis[3]/51; nongdu = dis[2]*1.0+dis[1]*0.1+dis[0]*0.01; // P0 = duanma[value/100]; P0 = duanma1[10]; //顯示百位1 wdu1 = 0; delay_ms(1); P2 = 0xff; if(nongdu<0.50) { level=1; nongduFlag=0; } else if(0.50<=nongdu<0.75) { level=2; nongduFlag=0; } else if(0.75<=nongdu<1.00) { level=3; nongduFlag=1; } else if(1.00<=nongdu<1.10) { level=4; nongduFlag=1; } else if(1.10<=nongdu) { level=5; nongduFlag=1; } //三級(jí)以上報(bào)警 P0 = duanma[level]; //顯示等級(jí)分1,2,3,4級(jí),兩級(jí)以上報(bào)警 wdu2 = 0; delay_ms(1); P2 = 0xff; // P0 = duanma[(value/10)-(value/100)*10]; P0 = duanma[temp/100]; //顯示十位2 wdu4 = 0; delay_ms(1); P2 = 0xff; // P0 = duanma[value%10]; P0 = duanma[(temp-(temp/100)*100)/10]; //顯示各位3 wdu3 = 0; delay_ms(1); P2 = 0xff; } void displaySet(void) //顯示函數(shù) { EA = 0; temp = ReadTemperature(); EA = 1; if((temp/10)>=temph) { tempFlag =1; // ledAlarm=0; // ledNorm=1; } //溫度高于或等于上限值,報(bào)警 else { tempFlag=0; } P0 = duanma[temph/10]; //顯示十位2 wdu1 = 1; delay_ms(1); P2 = 0xff; P0 = duanma[temph/10]; //顯示十位2 wdu2 = 1; delay_ms(1); P2 = 0xff; // P0 = duanma[(value/10)-(value/100)*10]; P0 = duanma[temph/10]; //顯示十位2 wdu4 = 0; delay_ms(1); P2 = 0xff; // P0 = duanma[value%10]; P0 = duanma[temph%10]; //顯示各位3 wdu3 = 0; delay_ms(1); P2 = 0xff; } void display(void) { if(!displayFlag) { display_temp(); } else { displaySet(); } } void Set_id(unsigned char id_number,unsigned char one_or_zero) { if(id_number==1) { if(one_or_zero==0) { if(temph++>99) temph=99; } else { if(--temph<templ) temph=templ; } } } void id_case_key(void) { display(); if(displayFlag) { if(DOWN == 0) //減少按鍵 { delay_ms(20); if(DOWN == 0) { Set_id(1,0); } while(DOWN == 0); //釋放按鍵 } if(UP == 0) { delay_ms(20); if(UP == 0) { Set_id(1,1); } while(UP ==0); } } } void Scan_Key(void) { display(); if(SET == 0) { delay_ms(20); if(SET == 0) { displayFlag = ~displayFlag; } while(SET == 0); } id_case_key(); if(alarm ==0) { delay_ms(20); if(alarm == 0) { buttonFlag = ~buttonFlag; } while(alarm == 0); } id_case_key(); } void baojin(void) { if(tempFlag|buttonFlag|nongduFlag) { beep=0; ledAlarm=0; ledNorm=1; } else { beep=1; ledAlarm=1; ledNorm=0; } } void main() { TMOD=0x11; //定時(shí)器0c初始化 TH1=(65535-1000)/256; TL1=(65535-1000)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; Init_DS18B20(); //溫度 芯片初始化 P0=0xff; //初始化 斷口 P1=0xff; P3=0xff; while(1) { Scan_Key(); baojin(); value = ReadAdc0832(0); } }
|