




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(盧志祥)基于單片機(jī)的智能火災(zāi)報(bào)警系統(tǒng)LtDPAGEPAGEI畢業(yè)設(shè)計(jì)(論文)題目基于單片機(jī)的智能火災(zāi)報(bào)警系統(tǒng)姓名盧志祥學(xué)號28100102029專業(yè)班級自動化08B(本)所在學(xué)院機(jī)電工程學(xué)院指導(dǎo)教師(職稱)彭芳(講師)TheSystemofIntelligentFireAlarmBasedonSCMAbstractTherapiddevelopmentofScienceandtechnologyleadspeopletotheinformationera.Theseniortechnologyhasgotremarkableprogressasameansofobtaininginformation.It’sapplicationfieldsbecomemoreandmorewidely,andtherequirementofitisbecominghigherandhigher,andthedemandisurgent.Aselectronicproductsarewidelyusedinhumanlife,theresultingfirewasalsomoreandmore.Thefirepotentialsafetyproblemslurkinourlifearound.Inordertoavoidthefireandreducethelosscausedbyfire,it’stimeforusedtoperfectthesystemofautomaticfirealarm,andwidelyuseditinourdailylife,willthefirenippedinthetimeofbud.Itcanminimizethelossofwealthofsociety.Thispaperdesignsabetterleveloffirealarmtechnology,usingawidelyusedmicrocontrollertechnologyandresistivesmokesensorandtemperaturesensorasthecore,andwithotherelectronictechnologycombined.UsetheMQ-2typesemiconductorgassensitiveelementsmokesensortoachievesmokedetection,whichhashighsensitivity,fastresponse,stronganti-interferenceability,andthepriceislow,servicelifelong.UsetheDS18B20temperaturesensorfortemperaturedetection.TheselectionofAT89S52chip,whichisaintegrationoftheA/Dconversion,hardwaremultiplier,hardwarepulsewidthmodulatorandotherresources,hashighspeed,lowpower,stronganti-interferenceandotheradvantages,isofsimilartechnologyneutralhighercost-effectiveproducts.Thesmokealarm,designswithAT89S52MCUandMQ-2typesemiconductorresistortypesmokesensorandtemperaturesensor-DS18B20asthecore,canachievethefunctionthatsound-lightalarm,datadisplay,alarmlimitsetting,isaintelligentsmokealarmthatakindofsimplestructure,stableperformance.Keyword:sensor;Firealarm;Automaticacquisition;Automaticalarm;Single-chipmicrocomputer
目錄TOC\o"1-3"\h\z1緒論 11.1報(bào)警器論文研究背景 11.2本設(shè)計(jì)的應(yīng)用及意義 11.3論文主要工作 12系統(tǒng)方案設(shè)計(jì) 22.1系統(tǒng)總體規(guī)劃 22.2單片機(jī)內(nèi)部結(jié)構(gòu)及接口描述 22.3主要元件的選型 42.3.1AT89S52單片機(jī) 42.3.2集成溫度傳感器DS18B20 52.3.3氣體傳感器MQ-2 72.3.4數(shù)碼管驅(qū)動芯片74HC245 72.3.5模數(shù)轉(zhuǎn)換芯片ADC0832 83系統(tǒng)硬件設(shè)計(jì) 103.1AT89S52復(fù)位電路 103.2溫度傳感器電路 103.3MQ-2煙霧感器電路 113.4A/D轉(zhuǎn)換ADC0832電路 113.5報(bào)警器電路 123.6七段數(shù)碼管顯示電路 123.7狀態(tài)指示燈、控制鍵電路 134系統(tǒng)軟件設(shè)計(jì) 144.1主函數(shù)的程序 144.2中斷服務(wù)的程序 154.3數(shù)據(jù)處理的程序 154.4數(shù)據(jù)顯示的程序 164.5報(bào)警的程序 174.6報(bào)警值設(shè)置的程序 194.7精確值顯示的程序 205系統(tǒng)程序調(diào)試 235.1調(diào)試的步驟 235.2調(diào)試過程中遇到的問題及解決方法 236總結(jié)與展望 25參考文獻(xiàn) 26附錄 28附錄1報(bào)警器仿真圖 28附錄2報(bào)警器實(shí)物圖 28附錄3報(bào)警器元件清單 29附錄4系統(tǒng)程序代碼 29致謝 44PAGEPAGE441緒論1.1報(bào)警器論文研究背景在這個科技的發(fā)展迅速的社會里,越來越多的安全隱患在工業(yè)生產(chǎn)和人們的日常生活里悄悄的滋生,火災(zāi)是其中尤為關(guān)注的一個話題之一。為了能防止并且能減少火災(zāi)給我們生活帶來的危害,就有很必要能及時發(fā)現(xiàn)并及時的進(jìn)行火災(zāi)報(bào)警。在火災(zāi)前期做好保護(hù)工作,對保衛(wèi)社會主義現(xiàn)代化建設(shè),防止火災(zāi)引起燃燒、爆炸等事故造成嚴(yán)重的經(jīng)濟(jì)損失,甚至危及生命安全,起著關(guān)鍵作用。1.2本設(shè)計(jì)的應(yīng)用及意義火災(zāi)是國內(nèi)外普遍關(guān)注的災(zāi)難性問題。它是發(fā)生頻率較高的一種災(zāi)害,在任何時間、任何地區(qū)都可能發(fā)生.隨著社會經(jīng)濟(jì)的發(fā)展,建筑物、構(gòu)筑物應(yīng)用材料的多樣性,各類工業(yè)和科學(xué)技術(shù)的發(fā)展,易燃材料增多,加之人們生活環(huán)境和生活方式的變革,火災(zāi)的危險性日益增加,火災(zāi)次數(shù)、火災(zāi)造成的人員傷亡和經(jīng)濟(jì)損失逐漸增多。尤其是近幾年來,高層建筑人量增加,一旦發(fā)生火災(zāi),滅火的難度更大。隨著我國科技技術(shù)水平的進(jìn)步,各種現(xiàn)代化寫字樓對火災(zāi)報(bào)警以及自動滅火系統(tǒng)提出了越來越高的要求。設(shè)計(jì)出功能更完善的消防設(shè)施,對保障人民生命財(cái)產(chǎn)的安全,起著極為重要的作用。為了減輕火災(zāi)帶來的危害,就必須對現(xiàn)場環(huán)境中的煙霧和溫度進(jìn)行實(shí)時檢測,嚴(yán)密精確無誤的監(jiān)測環(huán)境中煙霧的濃度和環(huán)境溫度,并且及早發(fā)現(xiàn)事故存在的安全隱患,在火災(zāi)前期采取有效措施。因此研制火災(zāi)報(bào)警器與研究煙霧和溫度的檢測方法就成為傳感器技術(shù)發(fā)展領(lǐng)域的一個比較重要課題。1.3論文主要工作本論文主要的工作就是以電阻式煙霧傳感器MQ-2和溫度傳感器DS18B20以及單片機(jī)技術(shù)為核心并與其他電子技術(shù)相結(jié)合而設(shè)計(jì)出一種技術(shù)水平相對較好的智能火災(zāi)報(bào)警器。本設(shè)計(jì)實(shí)現(xiàn)了對現(xiàn)場溫度與煙霧的隨時監(jiān)控,能及時報(bào)警。對溫度以及煙霧的設(shè)置能按照用戶的意愿進(jìn)行設(shè)置。在系統(tǒng)未能及時報(bào)警情況下,用戶可以進(jìn)行手動啟動報(bào)警功能,同時可以取消手動報(bào)警,在系統(tǒng)自動報(bào)警后,用戶可以通過更改報(bào)警限制來取消報(bào)警。在進(jìn)行功能選擇時不影響報(bào)警功能與數(shù)據(jù)采集功能。
2系統(tǒng)方案設(shè)計(jì)2.1系統(tǒng)總體規(guī)劃火災(zāi)報(bào)警系統(tǒng)一般由火災(zāi)探測儀以及報(bào)警器組成?;馂?zāi)探測器通過對火災(zāi)發(fā)出的物理、化學(xué)現(xiàn)象——?dú)猓ㄈ紵龤怏w)、煙(煙霧粒子)、熱(溫度)的探測,將探測到的火情信號轉(zhuǎn)化成火警電信號傳遞給火災(zāi)報(bào)警控制器。區(qū)域報(bào)警器將在接收到火警信號后經(jīng)分析處理同時發(fā)出聲和光的報(bào)警信號,并在屏幕上顯示出煙霧濃度的級別和溫度值,同時對應(yīng)的發(fā)光二級管亮起。當(dāng)系統(tǒng)檢測到危險信號時,系統(tǒng)自動啟動自救工作,減輕火災(zāi)帶來的危害。此外,用戶可以通過功能設(shè)置鍵進(jìn)行報(bào)警限值的設(shè)置,也可以通過此方法取消當(dāng)前報(bào)警。整體電路的框圖如圖2-1所示。煙霧傳感器煙霧傳感器A/D轉(zhuǎn)換功能選擇與設(shè)置按鈕煙霧濃度級別與溫度顯示自救工作單片機(jī)AT89S52蜂鳴器、指示燈報(bào)警溫度傳感器圖2-1系統(tǒng)原理及組成框圖2.2單片機(jī)內(nèi)部結(jié)構(gòu)及接口描述AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。AT89S52引腳圖如圖2-2所示。圖2-2AT89S52引腳圖VCC:電源GND:地P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫如“1”時,引腳用作于高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0P1口:P1口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅(qū)動4個TTL邏輯電平。引腳號的第二功能:P1.0:T2(用于定時器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時鐘輸出。P1.1:T2EX(用于定時器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)。P1.5:MOSI(用于系統(tǒng)編程)。P1.6:MISO(用于系統(tǒng)編程)。P1.7:SCK(用于系統(tǒng)編程)。P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器時,P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上發(fā)送1。在使用8位地址訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在Flash編程和校驗(yàn)時,P2口也接收高8位地址字節(jié)和一些控制信號表2-1各口線的特殊功能和信號名稱口線特殊功能信號名稱P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2外部中斷0輸入口P3.3外部中斷1輸入口P3.4T0定時器0外部輸入口P3.5T1定時器1外部輸入口P3.6寫選通輸出口P3.7讀選通輸出口2.3主要元件的選型2.3.1AT89S52單片機(jī)在火災(zāi)報(bào)警器的設(shè)計(jì)中,單片機(jī)是其核心部件。它一方面要接收來自傳感器送來的溫度、煙霧對應(yīng)的兩種模擬信號分別進(jìn)行處理,以控制后續(xù)電路進(jìn)行相應(yīng)動作;與此同時查詢是否有鍵按下的請求。在單片機(jī)完成這些工作的過程中,尤其是信號處理中,比較濃度值后送入顯示的軟件實(shí)現(xiàn)比較復(fù)雜,要求單片機(jī)具備較快的運(yùn)算速度,使檢測人員能夠較準(zhǔn)確地觀測到煙霧濃度,并根據(jù)情況進(jìn)行相應(yīng)的處理。并且也要考慮選擇低價實(shí)用的機(jī)型,并為研制同一系列的低功耗產(chǎn)品做準(zhǔn)備。根據(jù)多方面的比較,本設(shè)計(jì)選用ATMEL公司的AT89S52單片機(jī)作為控制器。AT89S52片內(nèi)資源有4組I/O控制端口、3個定時器、8個中斷、軟件設(shè)置低能耗模式、看門狗和斷電保護(hù)??梢栽?V到5.5V寬電壓范圍內(nèi)正常工作。不斷發(fā)展的半導(dǎo)體工藝也讓該單片機(jī)的功耗不斷降低。根據(jù)本次設(shè)計(jì)的具體情況,采用雙列直插DIP-40封裝。AT89S52的實(shí)物圖如圖2-3所示。圖2-3DIP-40封裝AT89S52實(shí)物圖2.3.2集成溫度傳感器DS18B20DS18B20有三只引腳:VCC、DQ和VDD。采用了外部供電的鏈接方式,而總線必須鏈接上拉電阻,線總線在空置狀態(tài)時,都是一直處于高電平。DS18B20的內(nèi)部有64位的ROM單元和9字節(jié)的暫存器單元,64位ROM包含了DS18B20唯一的序列號。原理圖如圖2-4。圖2-4DS18B20原理圖DS18B20特性介紹DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它的體積更小、適用電壓更寬、更經(jīng)濟(jì)。DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。他的測量溫度范圍為-55~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5℃??梢赃x擇更小的封裝方式,更寬的電壓適用范圍分辨率設(shè)定及用戶設(shè)定的報(bào)警溫度存儲在E2PROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的,性能價格比也非常出色,繼“一線總線”的早期產(chǎn)品后,DS18B20開辟了溫度傳感器技術(shù)的新概念。DS18B20內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由4部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,配置寄存器。DS18B20的管腳排列如圖2-5所示。圖2-5DS18B20的管腳排列DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB表2-2轉(zhuǎn)換后得到的12位數(shù)據(jù)表2-2是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的2個8bit的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0℃,則這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫度,如果溫度小于0℃,則這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。DS18B20溫度傳感器的存儲器DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。暫存存儲器包含了8個連續(xù)字節(jié),前2個字節(jié)是測得的溫度信息,第1個字節(jié)的內(nèi)容是溫度的低8位,第2個字節(jié)是溫度的高8位。第3個和第4個字節(jié)是TH、TL的易失性拷貝,第5個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這3個字節(jié)的內(nèi)容在每一次上電復(fù)位時被刷新。第6、7、8個字節(jié)用于內(nèi)部計(jì)算。第9個字節(jié)是冗余檢驗(yàn)字節(jié)。根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過3個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位;復(fù)位成功后發(fā)送一條ROM指令;最后發(fā)送RAM指令。這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500μs,然后釋放,DS18B20收到信號后等待16~60μs左右,后發(fā)出60~240μs低脈沖,主CPU收到此信號表示復(fù)位成功。DS18B20使用中的注意事項(xiàng)DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:①DS18B20從測溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時間,這是必須保證的,不然會出現(xiàn)轉(zhuǎn)換錯誤的現(xiàn)象,使溫度輸出總是顯示85。②在實(shí)際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V左右。若電源電壓過低,會使所測得的溫度與實(shí)際溫度出現(xiàn)偏高現(xiàn)象,經(jīng)過試驗(yàn)發(fā)現(xiàn),一般在5V左右。③較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與微處理器間采用串行數(shù)據(jù)傳送,因此在對DS18B20進(jìn)行讀寫編程時,必須嚴(yán)格保證讀寫時序,否則將無法讀取測溫結(jié)果。④在DS18B20測溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20接觸不好或斷線,將沒有返回信號,程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時也要給予一定的重視。2.3.3氣體傳感器MQ-2本設(shè)計(jì)中采用的MQ-2型煙霧傳感器屬于二氧化錫半導(dǎo)體氣敏材料,屬于表面離子式N型半導(dǎo)體。當(dāng)與煙霧接觸時,如果晶粒間界處的勢壘受到該煙霧的調(diào)制而變化,就會引起表而電導(dǎo)率的變化。利用這一點(diǎn)就可以獲得這種煙霧存在的信息。例如遇到可燃?xì)怏w(如CH4等)時,原來吸附的氧脫附,而由可燃煙霧以正離子狀態(tài)吸附在二氧化錫半導(dǎo)體表面;氧脫附放出電子,煙霧以正離子狀態(tài)吸附也要放出電子,從而使二氧化錫半導(dǎo)體導(dǎo)帶電子密度增加,電阻值下降。而當(dāng)空氣中沒有煙霧時,二氧化錫半導(dǎo)體又會自動恢復(fù)氧的負(fù)離子吸附,使電阻值升高到初始狀態(tài)。這就是MQ-2型燃性煙霧傳感器檢測可燃煙霧的基本原理。圖2-6MQ-氣體傳感器結(jié)構(gòu)和外形MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2)。當(dāng)傳感器所處環(huán)境中存在可燃?xì)怏w時,傳感器的電導(dǎo)率隨空氣中可燃?xì)怏w濃度的增加而增大。使用簡單的電路即可將電導(dǎo)率的變化轉(zhuǎn)換為與該氣體濃度相對應(yīng)的輸出信號。這種傳感器可檢測多種可燃性氣體,是一款適合多種應(yīng)用的低成本傳感器。結(jié)構(gòu)和外形如圖2-6所示,封裝好的氣敏元件有6只針狀管腳,其中4個用于信號取出2個用于提供加熱電流。2.3.4數(shù)碼管驅(qū)動芯片74HC24574HC245是數(shù)碼管的總線驅(qū)動器,典型的CMOS型三態(tài)緩沖門電路,74HC245引腳圖如圖2-7。單片機(jī)或CPU的數(shù)據(jù)/地址/控制總線端口都有一定的負(fù)載能力,如果負(fù)載超過其負(fù)載能力就應(yīng)加驅(qū)動器。因此可驅(qū)動本設(shè)計(jì)使用的數(shù)碼管。74HC245功能表如表2-3所示。圖2-774HC245引腳圖第1腳DIR,為輸入輸出端口轉(zhuǎn)換用。DIR=“1”,OE=“0”則A1輸入,對應(yīng)B1輸出,其它類同。如果DIR=“0”、OE=“0”則B1輸入,對應(yīng)A1輸出。第19腳OE為使能端,為“1”時A/B端的信號將不導(dǎo)通,只有為“0”時A/B端才啟用,也就是起到開關(guān)的作用。表2-374HC245功能表InputInput/OutputOEDIRAnBnLLA=BInputLHInputB=AHXZZH:高電平L:低電平X:懸空2.3.5模數(shù)轉(zhuǎn)換芯片ADC0832ADC0832是美國國家半導(dǎo)體公司生產(chǎn)的一種8位分辨率A/D轉(zhuǎn)換芯片,可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉(zhuǎn)換時間僅為32μS,有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),轉(zhuǎn)換速度快且穩(wěn)定性能好。通過DI數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。其引腳如圖2-8所示。圖2-8ADC0832引腳圖正常情況下ADC0832與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線:CS、CLK、DO、DI。由于DO端與DI端在通信時未同時有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時可將DO和DI并在一根數(shù)據(jù)線上使用。當(dāng)CS輸入端應(yīng)為高電平時芯片禁用,CLK和DO/DI的電平可任意。當(dāng)進(jìn)行A/D轉(zhuǎn)換時,CS使能端應(yīng)置于低電平并且保持到轉(zhuǎn)換結(jié)束。芯片開始轉(zhuǎn)換工作時,由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。第2、3個脈沖下沉之前DI端輸入2位數(shù)據(jù)用于選擇通道功能,其功能表如表2-4所示。表2-4ADC0832功能表MUXAddressChannel#SGL/ODD/SIGN0100+-01-+
3系統(tǒng)硬件設(shè)計(jì)3.1AT89S52復(fù)位電路復(fù)位是使單片機(jī)或系統(tǒng)恢復(fù)某種確定的初始狀態(tài)。單片機(jī)就是從復(fù)位開始工作的。開機(jī)瞬間RST引腳獲得高電平,隨著電容C1的充電,引腳的高電平將逐漸下降。若RST引腳的高電平保持2個機(jī)器周期,單片機(jī)就復(fù)位,持續(xù)保持則循環(huán)復(fù)位。復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是上電與按鍵均有效的復(fù)位,本設(shè)計(jì)使用的是上電復(fù)位方式,上電復(fù)位電路圖如圖3-1所示。圖3-1單片機(jī)的復(fù)位電路3.2溫度傳感器電路DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當(dāng)VDD端口接3.0V—5.5V的電壓時是使用外部電源;當(dāng)VDD端口接地時使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接6.8KΩ左右的上拉電阻。本設(shè)計(jì)采用的是外部電源供電方式,連接圖如圖3-2所示。圖3-2溫度采集電路DS18B20的外部電源供電方式在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強(qiáng)上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度。在外部供電的方式下應(yīng)注意GND引腳不能懸空,否則不能轉(zhuǎn)溫度,讀取的溫度總是85℃。3.3MQ-2煙霧感器電路本設(shè)計(jì)煙霧傳感器采用MQ-2,在可燃?xì)怏w或煙霧中MQ-2煙霧傳感器的電阻會有相應(yīng)的變化,測量電極和加熱器構(gòu)成的敏感元件固定在塑料或不銹鋼制成的腔體內(nèi),加熱器為氣敏元件提供了必要的工作條件。氣敏元件共有6只針狀管腳,其中4個用于信號取出,2個用于提供加熱電流。直流電壓直接供傳感器MQ-2的加熱絲H-H工作,H兩端接到電源的兩端起預(yù)熱的作用,檢測煙霧之前要加熱絲給傳感器MQ-2預(yù)熱一定時間。當(dāng)采集到電壓后經(jīng)過AD模數(shù)轉(zhuǎn)換器將模擬量轉(zhuǎn)換為數(shù)字量。經(jīng)過校準(zhǔn)就可以得到準(zhǔn)確的煙霧或者可燃?xì)怏w的濃度。這種傳感器具有輕微的極性,在滿足傳感器電性能要求的前提下,為更好利用傳感器的性能,還需要通過滑動變阻器的調(diào)節(jié)與校準(zhǔn),才能得到精確的煙霧信號。其電路圖如圖3-3所示。圖3-3MQ-2基本電路3.4A/D轉(zhuǎn)換ADC0832電路A/D轉(zhuǎn)換電路在本設(shè)計(jì)中采用的是數(shù)模轉(zhuǎn)換常用芯片ADC0832,煙霧傳感器的輸出端接到ADC0832的CH0。經(jīng)煙霧傳感器MQ-2所檢測的電壓信號為模擬信號,無法直接被單片機(jī)所識別,所以在經(jīng)過放大電路后對信號進(jìn)行A/D裝換,將模擬信號轉(zhuǎn)化為數(shù)字信號輸入單片機(jī)。ADC0832電路圖如圖3-4所示。圖3-4A/D轉(zhuǎn)換電路3.5報(bào)警器電路由AT89S52實(shí)現(xiàn)聲音報(bào)警控制。蜂鳴器為無源蜂鳴器,低電平時發(fā)出聲音,當(dāng)室內(nèi)可燃性氣體濃度、煙霧濃度或溫度超過設(shè)定的限定值時,單片機(jī)將P3.7置為低電平,三極管導(dǎo)通,揚(yáng)聲器發(fā)出蜂鳴報(bào)警,直到有工作人員將電路斷開,或煙霧、溫度降到限值以下。蜂鳴器負(fù)極接地,正極接三極管輸出,其電路原理圖如圖3-5所示。圖3-5聲音報(bào)警電路在報(bào)警的同時,設(shè)計(jì)加入了一個自救電路,煙霧濃度過高時,可以通過電機(jī)把煙霧抽去,使室內(nèi)煙霧濃度降低。當(dāng)溫度過高時還可以通過電機(jī),將冷氣吹入,降低溫度,若發(fā)現(xiàn)火災(zāi),則將CO2吹入,(此步驟需用戶手動完成)。如圖3-6所示。圖3-6馬達(dá)電路3.6七段數(shù)碼管顯示電路數(shù)據(jù)采集進(jìn)來并被成功地由模擬量轉(zhuǎn)化為數(shù)字量后,就被傳送到系統(tǒng)的顯示模塊,讓人們更直接地觀察到相關(guān)數(shù)據(jù)。在本系統(tǒng)中,對LED進(jìn)行的是動態(tài)掃描,除了給顯示器提供段的輸入之外,還要對顯示器進(jìn)行位控制。顯示器的第一位顯示煙霧濃度級別,而后兩位則顯示當(dāng)前實(shí)際溫度,中間顯示“-”將溫度和煙霧分開。本系統(tǒng)顯示用的4位七段共陽數(shù)碼管由數(shù)碼管專用數(shù)碼驅(qū)動芯片74HC245驅(qū)動,P2為數(shù)據(jù)段碼輸出口,P2.0至P2.7分別接驅(qū)動芯片74HC245的A0至A7,74HC245的B0至B7分別接數(shù)碼管的a、b、c、d、e、f、g、dp,P0.0、P0.1、P0.2、P0.3引腳用作位選,分別控制4位數(shù)碼管的亮滅。數(shù)碼管的位選引腳接上拉電阻為共陽,可以由位選引腳輸出高低電平經(jīng)過74HC07驅(qū)動器控制數(shù)碼管亮滅。七段數(shù)碼管電路圖如圖3-7所示。圖3-7數(shù)碼管顯示電路圖3.7狀態(tài)指示燈、控制鍵電路狀態(tài)指示燈控制電路如圖3-8所示,單片機(jī)AT89S52引腳的P3.4、P3.5、P3.6控制輸出的狀態(tài)指示燈。綠燈亮表示室內(nèi)環(huán)境處于正常狀態(tài),環(huán)境中沒有火災(zāi)危險。紅燈表示溫度超過了設(shè)定的報(bào)警限值。黃燈亮表示環(huán)境中煙霧濃度超過報(bào)警限值,若同時亮,說明溫度和煙霧都超過了設(shè)定的報(bào)警限值,即可能會發(fā)生火災(zāi),提醒用戶盡快采取相應(yīng)措施。圖3-8狀態(tài)指示燈電路控制鍵電路采用獨(dú)立式按鍵設(shè)計(jì)。4個按鍵分別接單片機(jī)的P0.0、P0.1、P0.2、P0.3,單片機(jī)的P0口接上拉電阻。單片機(jī)掃描是否有按鍵閉合,如有鍵閉合,則判斷鍵號并轉(zhuǎn)入相應(yīng)的鍵處理。功能控制鍵電路如圖3-9所示,4個鍵定義如下:P0.0:手動報(bào)警鍵,按此鍵可以手動啟動報(bào)警功能。P0.1:限值設(shè)置鍵,按此鍵則可以進(jìn)入報(bào)警值的設(shè)定。P0.2:限值減鍵,按此鍵當(dāng)前設(shè)定項(xiàng)報(bào)警限值逐減。P0.3:限值加鍵,按此鍵當(dāng)前設(shè)定項(xiàng)報(bào)警限值逐加。圖3-9功能控制鍵電路
4系統(tǒng)軟件設(shè)計(jì)4.1主函數(shù)的程序火災(zāi)報(bào)警器主程序流程圖如圖4-1所示。圖4-1主程序流程圖系統(tǒng)啟動后首先進(jìn)行初始化,然后開啟中斷,在中斷中對數(shù)據(jù)進(jìn)行及時采集,并且在中斷中將檢測值與報(bào)警限設(shè)定值相比較,判斷是否要報(bào)警。然后進(jìn)入主程序的死循環(huán)中,不斷循環(huán)執(zhí)行四項(xiàng)功能:顯示數(shù)據(jù)、判斷是否手動報(bào)警、判斷是否要設(shè)定報(bào)警值、判斷是否需要顯示精確值。而數(shù)據(jù)采集于報(bào)警判斷則在定時中斷中執(zhí)行,在主函數(shù)中顯示的數(shù)據(jù)是煙霧的級別與整數(shù)位溫度值。主函數(shù)程序如下:voidmain() { sysrest(); //系統(tǒng)初始化 while(1){ xianshi(); //顯示溫度和煙霧數(shù)據(jù) if(SD==0)sdong(); //檢查是否啟動手動報(bào)警 if(SET==0)czhi(); //檢查是否啟動設(shè)置報(bào)警值 if(Jia==0||Jian==0)jingque(); //是否顯示精確值}}4.2中斷服務(wù)的程序系統(tǒng)設(shè)定定時器工作方式后開啟系統(tǒng)中斷,以便響應(yīng)中斷定時,及時對室內(nèi)煙霧濃度和溫度進(jìn)行采樣,并及時判斷是否超過設(shè)定的限值。系統(tǒng)初始化成功后便開始接受中斷申請,定時中斷間隔時間為65乘以16毫秒即約1秒左右對煙霧數(shù)據(jù)和溫度數(shù)據(jù)進(jìn)行一次采樣,然后把數(shù)據(jù)送入主程序的顯示函數(shù)中等待中斷退出然后顯示。中斷中同時判斷是否需要報(bào)警進(jìn)行判斷,能即使報(bào)警。因此本設(shè)計(jì)對數(shù)據(jù)有良好的時效性,不會因主程序的運(yùn)行而影響對數(shù)據(jù)的處理。中斷服務(wù)程序如下:voidtimer0(void)interrupt1 { TR0=0; is++; if(is==16){datadisp(dat0=adc0832(CH),ReadTemperature());is=0;} Baoj(); TH0=-(Time)/256;// TL0=-(Time)%256;// TR0=1;} 4.3數(shù)據(jù)處理的程序由于煙霧數(shù)據(jù)采集、AD轉(zhuǎn)換后得到的是煙霧濃度,設(shè)計(jì)中要求數(shù)碼管中顯示的是煙霧濃度的級別,所以對數(shù)據(jù)采集后,還要對煙霧濃度數(shù)據(jù)對煙霧濃度進(jìn)行分等級。煙霧等級數(shù)據(jù)放在disdata[0]中,由主函數(shù)里的xianshi()函數(shù)調(diào)用。本設(shè)計(jì)中將煙霧濃度等級分為6個級別:F0、F1、F2、F3、F4、F5,各個級別對應(yīng)煙霧濃度值如下:F0:煙霧濃度小于等于5;F1:煙霧濃度小于等于20;F2:煙霧濃度小于等于40;F3:煙霧濃度小于等于80;F4:煙霧濃度小于等于120;F5:煙霧濃度大于120;溫度數(shù)據(jù)采集并數(shù)據(jù)轉(zhuǎn)換后直接存放在disdata[2]和disdata[3]中,disdata[2]存放的是溫度的十位數(shù),disdata[3]則存放的是溫度的個位數(shù)。temp是用于判斷是否報(bào)警用的。數(shù)據(jù)處理程序如下:voiddatadisp(uinty,uintt)//數(shù)據(jù)處理{ ywu=(y%10000)/1000*1000+(y%1000)/100*100+(y%100)/10*10+y%10; { if(ywu>=0)disdata[0]=0; if(ywu>5)disdata[0]=1; if(ywu>20)disdata[0]=2; if(ywu>40)disdata[0]=3; if(ywu>80)disdata[0]=4; if(ywu>120)disdata[0]=5; } temp0=t; { disdata[2]=(t%1000)/100; disdata[3]=(t%100)/10; } temp=disdata[2]*10+disdata[3];}4.4數(shù)據(jù)顯示的程序?yàn)榱藢熿F級別與溫度數(shù)據(jù)在數(shù)碼管中分開,設(shè)計(jì)中把煙霧級別現(xiàn)在是第一個數(shù)碼管,第二個數(shù)碼管顯示“-”將其分開,第三四個數(shù)碼管分別顯示溫度的個位十位。這樣對數(shù)據(jù)的實(shí)際情況一目了然。數(shù)據(jù)顯示子程序如下:voidxianshi() //將disdata[]里的溫度數(shù)據(jù)在數(shù)碼管上顯示{ intkey=0; if(pbi>=0){show();pbi--;}else for(;key<=3;key++)// { Disdata=~(led_mod[11]); P1=~led_com[key]; //取反可變成共陰數(shù)碼管顯示 Disdata=~(led_mod[disdata[key]]);//取反可變成共陰數(shù)碼管顯示 Delay(200); }}4.5報(bào)警的程序報(bào)警程序流程圖如圖4-2所示。圖4-2報(bào)警程序流程圖報(bào)警程序分為手動報(bào)警和自動報(bào)警,用戶可以自己啟動報(bào)警程序,也可以由系統(tǒng)自動報(bào)警。手動報(bào)警程序中sign為手動報(bào)警標(biāo)志,1秒內(nèi)兩次按下報(bào)警鍵為取消手動報(bào)警。報(bào)警時蜂鳴器發(fā)聲,3個通道的燈輪流閃亮,同時啟動馬達(dá)自救工作。手動報(bào)警程序如下:voidsdong() //sign為手動報(bào)警標(biāo)志 {while(SD==0){sign=0;xianshi();} //短按一次取消報(bào)警delayt(350); while(SD==0){sign=1;xianshi();} //1秒鐘內(nèi)兩次按下表示手動報(bào)警}當(dāng)煙霧濃度或溫度值超過報(bào)警限設(shè)定值時,系統(tǒng)自動報(bào)警,蜂鳴器發(fā)聲,對應(yīng)通道的燈亮起,綠燈滅掉,以提示操作人員采取安全對策或自動控制相關(guān)安全裝置,從而保障生產(chǎn)安全,避免火災(zāi)和爆炸事故的發(fā)生。為及時判斷煙霧、溫度數(shù)據(jù),在程序設(shè)計(jì)上,對煙霧濃度和溫度的采集程序放在了中斷服務(wù)程序里,定時性的檢測和報(bào)警。系統(tǒng)自動報(bào)警子程序如下:voidBaoj(){ if(temp>=tuxian||sign==1||ywu>=ybz) { Md=0; //3個LED代替馬達(dá) { p05=0;p06=1;p07=1;Delay(15);sound(); //紅色 p05=1;p06=0;p07=1;Delay(15);sound(); //黃色 p05=1;p06=1;p07=0;Delay(15);sound(); p05=1;p06=1;p07=1;Delay(5); } if(sign==0) //非手動報(bào)警 { Ledzc=1; if(temp>=tuxian){Ledrbj=0;Md=0;}elseLedrbj=1; if(disdata[0]>=yuxian){Ledybj=0;Md=0;}elseLedybj=1; } if(sign==1) //手動報(bào)警 { Ledzc=1;Ledrbj=1;Ledybj=0;Delay(15);sound(); Ledzc=1;Ledrbj=0;Ledybj=1;Delay(15);sound(); Ledzc=0;Ledrbj=1;Ledybj=1;Delay(15);sound(); Ledzc=1;Ledrbj=1;Ledybj=1;Delay(5); } }//判斷是否報(bào)警 else{Ledzc=0;Ledrbj=1;Ledybj=1;Md=1;} //不報(bào)警}4.6報(bào)警值設(shè)置的程序系統(tǒng)初始化后,用戶可以根據(jù)自己修要對報(bào)警值進(jìn)行設(shè)置,溫度的設(shè)置值為整數(shù),設(shè)置的是溫度的實(shí)際值。煙霧的設(shè)置是對煙霧濃度的級別進(jìn)行設(shè)置。煙霧濃度分為6個級別(0~5),P0^1為設(shè)置鍵,當(dāng)檢測到啟動設(shè)置報(bào)警值按鍵被按下時,則系統(tǒng)進(jìn)入設(shè)置程序。P0^2、P0^3對應(yīng)減和加?!霸O(shè)置”鍵處于按下狀態(tài)時,顯示當(dāng)前所設(shè)置的煙霧級別與溫度報(bào)警值,釋放后則默認(rèn)進(jìn)入煙霧報(bào)警級別設(shè)置,數(shù)碼管只顯示當(dāng)前煙霧級別。再次按下設(shè)置按鍵時則進(jìn)入溫度報(bào)警值設(shè)置,數(shù)碼管只顯示當(dāng)前設(shè)定溫度。按“加”和“減”鍵進(jìn)行報(bào)警值的遞增、遞減設(shè)置,長按設(shè)置按鍵表示確認(rèn)設(shè)置并退出,若用戶在進(jìn)入設(shè)置狀態(tài)持續(xù)6秒沒有動作,系統(tǒng)則自動退出到正常狀態(tài)。報(bào)警值設(shè)置程序流程圖如圖4-3所示。圖4-3報(bào)警值設(shè)置程序流程圖系統(tǒng)自動報(bào)警子程序如下:voidczhi(void)// {js=1000;ys=js;ts=js; //js=60為一秒while(SET==0)show();while((ys>0)&&(ts>0)) //設(shè)置溫度報(bào)警值{shezhi[1]=11;shezhi[2]=11;shezhi[3]=11;//溫度的設(shè)定值不亮while(ys>0){while(SET==0)show();ys=js;show();while(Jian==0){if(yuxian==0)break;show();yuxian--;delayt(300);shezhi[0]=yuxian;}while(Jia==0){if(yuxian==9)break;show();yuxian++;delayt(300);shezhi[0]=yuxian;}while(SET!=0&&Jia!=0&&Jian!=0){show();ys--;if(ys<=0){ys=0;ts=0;break;}}if(SET==0){ys=0;ts=js;delayt(250);if(SET==0){ys=0;ts=0;}} }restzhi();shezhi[0]=11;shezhi[1]=11;//煙霧的設(shè)定值不亮while(ts>0){ ts=js;show();while(Jian==0){if(tuxian==0)break;show();tuxian--;delayt(300);shezhi[2]=tuxian/10;shezhi[3]=tuxian/1-tuxian/10*10;}while(Jia==0){if(tuxian==99)break;show();tuxian++;delayt(300);shezhi[2]=tuxian/10;shezhi[3]=tuxian/1-tuxian/10*10;}while(SET!=0&&Jia!=0&&Jian!=0){show();ts--;if(ts<=0){ts=0;ys=0;break;}}if(SET==0){ts=0;ys=js;delayt(250);if(SET==0){ys=0;ts=0;}} }ts=js;restzhi(); //重載設(shè)定值}while(SET==0)show();}4.7精確值顯示的程序在正常狀態(tài)下,數(shù)碼管上顯示的是當(dāng)前煙霧濃度的級別和當(dāng)前溫度數(shù)據(jù)的整數(shù)部分,為了讓用戶能得到當(dāng)前精確的數(shù)據(jù),本設(shè)計(jì)中對P0.2、P0.3對應(yīng)的減鍵和加鍵添加了第二功能:在煙霧級別與溫度顯示的正常狀態(tài)下,P0.2對應(yīng)的“加”鍵是“顯示當(dāng)前精確煙霧數(shù)據(jù)”的功能、P0.3對應(yīng)的“減”鍵是“顯示當(dāng)前精確溫度數(shù)據(jù)”的功能,這兩個功能拓展了本設(shè)計(jì)的基本功能。在正常狀態(tài)下,“加鍵”處于按下狀態(tài)時,顯示當(dāng)前設(shè)置的煙霧報(bào)警級別所對應(yīng)的精確煙霧濃度值,當(dāng)釋放按鍵后,則顯示當(dāng)前煙霧實(shí)際精確濃度,直到第二次按下則退出顯示?!皽p鍵”處于按下狀態(tài)時,顯示所設(shè)置的報(bào)警溫度值,釋放按鍵后則顯示當(dāng)前保留一位小數(shù)的精確溫度值,直到第二次按下則退出顯示。精確值顯示的程序流程圖如圖4-4所示。圖4-4精確值顯示程序流程圖精確值顯示程序如下:voidjingque(){ if(Jia==0) { jque[0]=11; if(yuxian==0){jque[1]=11;jque[2]=11;jque[3]=0;} if(yuxian==1){jque[1]=11;jque[2]=11;jque[3]=5;} if(yuxian==2){jque[1]=11;jque[2]=2;jque[3]=0;} if(yuxian==3){jque[1]=11;jque[2]=4;jque[3]=0;} if(yuxian==4){jque[1]=11;jque[2]=8;jque[3]=0;} if(yuxian==5){jque[1]=1;jque[2]=2;jque[3]=0;} while(Jia==0)disjque();//顯示煙霧報(bào)警濃度 while(Jia!=0) //顯示當(dāng)前精確煙霧濃度 { jque[3]=ywu%10;jque[2]=(ywu%100)/10;jque[1]=(ywu%1000)/100;jque[0]=(ywu%10000)/1000; if(jque[0]==0){jque[0]=11;if(jque[1]==0)jque[1]=11;if(jque[2]==0)jque[2]=11;} disjque(); }while(Jia==0)disjque(); }if(Jian==0) {jque[0]=11;jque[1]=11;jque[2]=tuxian/10;jque[3]=tuxian%10;while(Jian==0)disjque();tg=1; while(Jian!=0) //顯示精確溫度{ if(tflag==0)jque[0]=(temp0%10000)/1000; //百位 elsejque[0]=10; //符號位 jque[1]=(temp0%1000)/100; //十位 jque[2]=(temp0%100)/10; //個位 jque[3]=temp0%10; //小數(shù)位 if(jque[0]==0){jque[0]=11;if(jque[1]==0)jque[1]=11;} disjque();} while(Jian==0)disjque();tg=0;}
5系統(tǒng)程序調(diào)試5.1調(diào)試的步驟(1)源文件的建立:使用菜單“File-New”即可在項(xiàng)目窗口的右側(cè)打開一個新的文本編輯窗口,在該窗口中輸入?yún)R編語言源程序。同時保存該文件,加上擴(kuò)展名(*.asm或*.C),這里將文件名保存為54LZX.C。(2)建立工程文件:點(diǎn)擊“Project-NewProject”菜單,出現(xiàn)給工程起一個名的對話框,我們輸入54LZX,這個不需要擴(kuò)展名。這個對話框要求選擇目標(biāo)CPU,選擇ATMEL的AT89S52?;氐街鹘缑妫诠こ檀翱诘奈募撝?,展開“Target1”前面的“+”號,手動把剛才編寫好的源程序加入下一層的“SourceGroup1”,右鍵點(diǎn)擊“SouceGroup”,選中其中下拉菜單的“AddfiletoGroup”SouceGroup1”對話框,要求尋找源文件,選擇54LZX.C文件,將文件加入項(xiàng)目,點(diǎn)擊”Close”即可返回主界面,會發(fā)現(xiàn)54LZX.C文件以在其中。雙擊文件可打開源程序。(3)工程的設(shè)置:右鍵點(diǎn)擊左邊Project窗口的Target1,然后使用菜單“Proget-Optionfortarget‘target1’”即出現(xiàn)對工程設(shè)置的對話框,對這個對話框可謂非常復(fù)雜,共有8個頁面,要全部高清可不容易,好在絕大部分設(shè)置項(xiàng)取默認(rèn)值就行了。設(shè)置完成以后安確認(rèn)返回主界面,工程建立、設(shè)置完畢。(4)編譯、連接:在設(shè)置好工程后,既可以進(jìn)行編譯、連接。選擇菜單Project-Buildtarget,對當(dāng)前工程進(jìn)行連接。編譯過程中的信息將出現(xiàn)在輸出窗口中的Build頁中,如果源程序有語法錯誤,會有錯誤報(bào)告出現(xiàn),雙擊該行,可以定到出錯的位置,對源程序反復(fù)修改后,最終會得到如圖5-1所示的結(jié)果,提示獲得了名為54LZX.hex的文件,該文件即可被編程器讀入并寫到芯片中,同時還產(chǎn)生了一些其他相關(guān)文件可被用于KEIL的仿真與調(diào)試。5.2調(diào)試過程中遇到的問題及解決方法在進(jìn)入Keil的調(diào)試環(huán)境以后,發(fā)現(xiàn)調(diào)試程序過程中遇到了很多問題,總結(jié)如下:(1)編譯時候提示:Buildtarget'Target1'compiling54LZX.c...54LZX.C(215):warningC206:'show':missingfunction-prototype54LZX.C(226):errorC231:'show':redefinition54LZX.C(235):errorC231:'show':redefinitionTargetnotcreated解決方法:在程序開始處,對所定義的函數(shù)進(jìn)行函數(shù)申明,即可解決上述問題。重新生成項(xiàng)目,即可生成54LZX.HEX文件。(2)程序調(diào)試時提示:54LZX.C(11):errorC132:'xianshi':notinformalparameterlist54LZX.C(11):errorC141:syntaxerrornear'void'解決方法:檢查對應(yīng)函數(shù)的位置附近是否缺少符號“;”。(3)程序調(diào)試時提示:***WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?CZHI?54LZX"54LZX"-0Error(s),1Warning(s).解決方法:找到對應(yīng)的函數(shù),檢查函數(shù)沒有沒調(diào)用的原因。(4)匯編出現(xiàn)數(shù)字、字母混淆。解決方法:仔細(xì)檢查有字母“o”和數(shù)字“0”或數(shù)字“1”和字母“l(fā)”的位置。經(jīng)過仔細(xì)排查,程序成功調(diào)試。沒出現(xiàn)任何錯誤時,這時可以載入Protues進(jìn)行仿真。程序調(diào)試成功圖如圖5-1所示。圖5-1程序調(diào)試成功的截圖
6總結(jié)與展望火災(zāi)報(bào)警器可保障生產(chǎn)與生活的安全,避免火災(zāi)和爆炸事故以及煤氣中毒的發(fā)生,降低風(fēng)險,是防火和安全生產(chǎn)所必備的安全儀器。本論文是在對煙霧、溫度傳感器和報(bào)警技術(shù)進(jìn)行深入研究的基礎(chǔ)上,通過比較,最后合理地確定系統(tǒng)的設(shè)計(jì)方案,并對儀器的整體設(shè)計(jì)和各個組成部分進(jìn)行了詳細(xì)的分析和詳細(xì)設(shè)計(jì)。整個系統(tǒng)最終實(shí)現(xiàn)了預(yù)期的目標(biāo)。本系統(tǒng)通過設(shè)計(jì)一個以AT89S52單片機(jī)為核心的火災(zāi)報(bào)警器可以實(shí)現(xiàn)聲光報(bào)警、濃度顯示、報(bào)警限設(shè)置、精確數(shù)據(jù)顯示等功能。是一種結(jié)構(gòu)簡單、性能穩(wěn)定以及使用方便的智能化的火災(zāi)報(bào)警器。本報(bào)警器的電路結(jié)構(gòu)設(shè)計(jì)的很簡單,易于維護(hù)。由于實(shí)現(xiàn)了對普通環(huán)境中煙霧濃度和溫度的實(shí)時監(jiān)控,能廣泛應(yīng)用于居民家庭、企事業(yè)單位等多方面的安全防范。本設(shè)計(jì)的程序以C51語言編寫,充分利用了芯片的資源,提高了測量精度和代碼執(zhí)行效率,減小了代碼容量,本論文研制的報(bào)警器的基礎(chǔ)上,可以進(jìn)行適當(dāng)?shù)墓δ軘U(kuò)展,使智能火災(zāi)報(bào)警器的功能更加的完善,安全性更加的高,通過現(xiàn)場標(biāo)定及測試,以及煙霧濃度與溫度的實(shí)驗(yàn)數(shù)據(jù)的具體分析,計(jì)算本報(bào)警器顯示數(shù)據(jù)與實(shí)際數(shù)據(jù)之間的誤差已近較小,滿足了檢測的基本要求,達(dá)到了預(yù)期的設(shè)計(jì)效果。本設(shè)計(jì)還可以作出更進(jìn)一步的創(chuàng)新,在設(shè)計(jì)中可以增加一個自動控制功能,可以設(shè)計(jì)成通過馬達(dá)的作用來控制室內(nèi)溫度。例如,溫度過高時,通過馬達(dá)吹入冷空氣,冷空氣溫度由當(dāng)前溫度超過設(shè)定限值的差確定,差值越大溫度越低;當(dāng)煙霧濃度較大時,通過另一馬達(dá)將煙霧抽出,馬達(dá)速度由當(dāng)前煙霧濃度超過設(shè)定限值的差確定,差值越大馬達(dá)速度越快。這樣系統(tǒng)可以自動控制室內(nèi)煙霧及溫度,更進(jìn)一步的降低了火災(zāi)發(fā)生的可能性。
參考文獻(xiàn)[1]馬爭,汪亞南.微計(jì)算機(jī)與單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2009.[2]林立,張俊靚,曹旭東,劉得軍.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2010.[3]盧元元,王暉.電路理論基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2004.[4]呂俊芳,錢政,袁梅.傳感器接口與檢測儀器電路[M].北京:國防工業(yè)出版社,2009.[5]蘭吉昌.單片機(jī)C51完全學(xué)習(xí)手冊[M].北京:化學(xué)工業(yè)出版社,2009.[6]楊素行.模擬電子技術(shù)基礎(chǔ)簡明教程(第三版)[M].北京:高等教育出版社,2005.[7]鄒其洪,黃智偉,高嵩等.電工電子實(shí)驗(yàn)與計(jì)算機(jī)仿真[M].北京:電子工業(yè)出版社,2005.[8]朱定華.單片微機(jī)原理、匯編與C51及接口技術(shù)[M].北京:清華大學(xué)出版社,2010.[9]譚博學(xué).集成電路原理及應(yīng)用[M].北京:電子工業(yè)出版社,2003.[10]鄧元慶,關(guān)宇,賈鵬.數(shù)字設(shè)計(jì)基礎(chǔ)與應(yīng)用[M].北京:清華大學(xué)出版社,2005.[11]DavidCJ.TheCProgrammingLanguage(ThethirdEdition)[M].Prentice-Hall,2008.[12]StephenL.Herman,WalteN.Alerich.Industrialmotocontrol[J].DelmarPublishers,2010.
附錄附錄1報(bào)警器仿真圖附錄2報(bào)警器實(shí)物圖附錄3報(bào)警器元件清單元件名稱型號數(shù)量/個用途單片機(jī)AT89S521控制核心電容30pF2晶振電路晶振12MHz1晶振電路電解電容10uF/10v1復(fù)位電路電阻10kΩ1復(fù)位電路按鍵1復(fù)位電路按鍵4選手輸入三極管C85502馬達(dá)、蜂鳴器驅(qū)動蜂鳴器1報(bào)警電阻10K/1K/150Ω5/3/4限流排阻A512J1上拉電阻數(shù)碼管4位共陰1顯示電路模數(shù)轉(zhuǎn)換器ADC08321模數(shù)轉(zhuǎn)換集成塊74HC245N1數(shù)碼段驅(qū)動集成塊74HC071位選驅(qū)動電位器W2041調(diào)節(jié)精確度LED發(fā)光二級管3狀態(tài)顯示煙霧傳感器MQ-21檢測煙霧信號ISP接線口2*5接口1下載程序萬用板140腳IC測試座1附錄4系統(tǒng)程序代碼#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineDisdataP2//uintReadTemperature();voidconvdata();voidxianshi();voidsound();voidczhi();voidsdong();voidshow();voidrestzhi();voiddatadisp();//voidjingque();sbitSD=P0^0; sbitSET=P0^1;sbitJian=P0^2; sbitJia=P0^3; sbitMd=P0^4;sbitp05=P0^5;sbitp06=P0^6;sbitp07=P0^7;sbitCS=P3^0; sbitClk=P3^1; sbitDATI=P3^2; sbitDATO=P3^2; sbitDQ=P3^3;sbitLedzc=P3^4;sbitLedrbj=P3^5;sbitLedybj=P3^6;sbitFmbj=P3^7;ucharled_mod[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff};ucharled_com[]={0x08,0x04,0x02,0x01,0x00};uchartg=0;tflag;//unsignedchardat0=0x00;unsignedcharCH=0x00;unsignedchardis[]={0,0,0};uchardisdata[]={0,10,0,0,0,0};ucharshezhi[]={0,0,0,0};ucharjque[]={0,0,0,0,0};intsign=0,js,qo,temp,ywu,ybz; intTime=65000;//intpbi=500,ts=0,ys=0,is=0,ll; uinttuxian=30,yuxian=3,temp0;voidDelay(uinti) { while(i--);}voiddelayt(uinttime){ intj; for(;time>0;time--) for(j=0;j<100;j++); } voidInit_DS18B20(void) { uintx=0;DQ=1; Delay(10);DQ=0;Delay(80);DQ=1;Delay(10);x=DQ;Delay(20);}unsignedcharReadOneChar(void) {uinti=0;uintdat=0;for(i=8;i>0;i--){DQ=0;dat>>=1;DQ=1;if(DQ);//dat|=0x80;Delay(4);}return(dat);}voidWriteOneChar(uintdat) {uinti=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}voidTmpchange(void) {Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0x44);}uintReadTemperature(void) {uinta=0;uintb=0;uintt=0;floattt=0;Tmpchange();Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0xBE);a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;if(t<0x0fff)tflag=0;else{t=~t+1;tflag=1;} t=t*(0.0625*10); return(t);} unsignedcharadc0832(unsignedcharCH){unsignedchari,test,adval;adval=0x00;test=0x00;Clk=0;DATI=1;_nop_();CS=0;_nop_();Clk=1;_nop_();if(CH==0x00){Clk=0;DATI=1;_nop_();Clk=1;_nop_();Clk=0;DATI=0;_nop_();Clk=1;_nop_();}else{Clk=0;DATI=1;_nop_();Clk=1;_nop_();Clk=0;DATI=1;_nop_();Clk=1;_nop_();}Clk=0;DATI=1;for(i=0;i<8;i++){_nop_();adval<<=1;Clk=1;_nop_();Clk=0;if(DATO)adval|=0x01;elseadval|=0x00;}for(i=0;i<8;i++){test>>=1;if(DATO)test|=0x80;elsetest|=0x00;_nop_();Clk=1;_nop_();Clk=0;}dat0=test;_nop_();CS=1;DATO=1;Clk=1;returndat0;} voiddatadisp(uinty,uintt){ ywu=(y%10000)/1000*1000+(y%1000)/100*100+(y%100)/10*10+y%10; { if(ywu>=0)disdata[0]=0; if(ywu>5)disdata[0]=1; if(ywu>20)disdata[0]=2; if(ywu>40)disdata[0]=3; if(ywu>80)disdata[0]=4; if(ywu>120)disdata[0]=5; } temp0=t; { disdata[2]=(t%1000)/100; disdata[3]=(t%100)/10; } temp=disdata[2]*10+disdata[3];} voidxianshi() { intkey=0; if(pbi>=0){show();pbi--;} else for(;key<=3;key++) { Disdata=~(led_mod[11]); P1=~led_com[key]; Disdata=~(led_mod[disdata[key]]); Delay(50); }}voidshow() { intkey=0; for(;key<=3;key++) { Disdata=~(led_mod[11]); P1=~led_com[key]; Disdata=~(led_mod[shezhi[key]]); Delay(50); }}voiddisjque(){ intkey=0; for(;key<=3;key++) { Disdata=~(led_mod[11]); P1=~led_com[key]; if(tg==1&&key==2)Disdata=~(led_mod[jque[key]]^0x80); elseDisdata=~(led_mod[jque[key]]); Delay(50); }}voidjingque(){ if(Jia==0) { jque[0]=11; if(yuxian==0){jque[1]=11;jque[2]=11;jque[3]=0;} if(yuxian==1){jque[1]=11;jque[2]=11;jque[3]=5;} if(yuxian==2){jque[1]=11;jque[2]=2;jque[3]=0;} if(yuxian==3){jque[1]=11;jque[2]=4;jque[3]=0;} if(yuxian==4){jque[1]=11;jque[2]=8;jque[3]=0;} if(yuxian==5){jque[1]=1;jque[2]=2;jque[3]=0;} while(Jia==0)disjque(); while(Jia!=0) { jque[3]=ywu%10;jque[2]=(ywu%100)/10; jque[1]=(ywu%1000)/100;jque[0]=(ywu%10000)/1000; if(jque[0]==0){jque[0]=11;if(jque[1]==0)jque[1]=11;if(jque[2]==0)jque[2]=11;} disjque(); }while(Jia==0)disjque(); }if(Jian==0) {jque[0]=11;jque[1]=11;jque[2]=tuxian/10;jque[3]=tuxian%10;while(Jian==0)disjque();tg=1; while(Jian!=0) { if(tflag==0)jque[0]=(temp0%10000)/1000; elsejque[0]=10; jque[1]=(temp0%1000)/100; jque[2]=(temp0%100)/10; jque[3]=temp0%10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工賬號授權(quán)合同范本
- 凈水商業(yè)租賃合同范本
- 賣房臨時出租合同范例
- 北京農(nóng)村租房合同范本
- 代簽訂投標(biāo)合同范本
- 雙方購車合同范本
- 單位窗簾裝修合同范例
- 代購電纜合同范本
- 廠地購買合同范本
- 吊車購銷合同范本
- 小學(xué)生戲劇課件
- 考前沖刺攻略課件
- 2024年中煤電力有限公司所屬企業(yè)招聘29人筆試參考題庫附帶答案詳解
- DeepSeek介紹及其典型使用案例
- 2024年12月2025中央統(tǒng)戰(zhàn)部直屬事業(yè)單位應(yīng)屆高校畢業(yè)生公開招聘21人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 積極心理學(xué)視角下高職院校學(xué)生心理健康教育路徑研究
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2024年湖北省煙草專賣局(公司)招聘筆試真題
- 2025中鐵快運(yùn)股份限公司招聘全日制普通高校畢業(yè)生35人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年下半年中國海油秋季校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 《京東家法》定稿
評論
0/150
提交評論