基于單片機的智能火災報警系統畢業設計論文_第1頁
基于單片機的智能火災報警系統畢業設計論文_第2頁
基于單片機的智能火災報警系統畢業設計論文_第3頁
基于單片機的智能火災報警系統畢業設計論文_第4頁
基于單片機的智能火災報警系統畢業設計論文_第5頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGE畢業設計(論文)題目基于單片機的智能火災報警系統PAGEPAGEVI畢業設計(論文)原創性聲明和使用授權說明原創性聲明本人鄭重承諾:所呈交的畢業設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經發表或公布過的研究成果,也不包含我為獲得及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導教師簽名:日期:使用授權說明本人完全了解大學關于收集、保存、使用畢業設計(論文)的規定,即:按照學校要求提交畢業設計(論文)的印刷本和電子版本;學校有權保存畢業設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學校可以采用影印、縮印、數字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名:日期:

學位論文原創性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經發表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律后果由本人承擔。作者簽名: 日期:年月日學位論文版權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位論文的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規定處理。作者簽名: 日期:年月日導師簽名:日期:年月日

基于單片機的智能火災報警系統摘要隨著科學技術的迅速發展,人們進入了信息時代,作為獲取信息手段的傳感器技術得到了顯著的進步,其應用領域越來越廣泛,對其要求越來越高,需求越來越迫切。隨著電子產品在人類生活中的廣泛使用,由此引起的火災也越來越多,在我們生活的四周到處潛伏著火災隱患。為了避免火災以及減少火災造成的損失,我們有必要完善火災自動報警系統,并廣泛應用在生活中,將火災消滅在萌芽狀態,最大限度地減少社會財富的損失。本系統以電阻式煙霧傳感器和溫度傳感器以及單片機技術為核心并與其他電子技術相結合,設計出一種技術水平較好的火災報警器。其中選用MQ-2型半導體可燃氣體敏感元件煙霧傳感器實現煙霧的檢測,具有靈敏度高、響應快、抗干擾能力強等優點,而且價格低廉,使用壽命長。選用DS18B20溫度傳感器作為溫度檢測。選用的AT89S52單片機,其整合了A/D轉換、硬件乘法器、硬件脈寬調制器等資源,具有高速、低功耗、超強抗干擾等優點,是目前同類技術中性價比較高的產品。以AT89S52單片機和MQ-2型半導體電阻式煙霧傳感器以及DS18B20溫度傳感器為核心設計的火災報警器可實現聲光報警、數據顯示、報警限設置功能。是一種結構相對較簡單、性能較穩定的智能化煙霧報警器。關鍵詞:傳感器;火災報警;自動采集;自動報警;單片機

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報警器論文研究背景 11.2本設計的應用及意義 11.3論文主要工作 12系統方案設計 22.1系統總體規劃 22.2單片機內部結構及接口描述 22.3主要元件的選型 42.3.1AT89S52單片機 42.3.2集成溫度傳感器DS18B20 52.3.3氣體傳感器MQ-2 72.3.4數碼管驅動芯片74HC245 72.3.5模數轉換芯片ADC0832 83系統硬件設計 93.1AT89S52復位電路 93.2溫度傳感器電路 93.3MQ-2煙霧感器電路 103.4A/D轉換ADC0832電路 103.5報警器電路 113.6七段數碼管顯示電路 113.7狀態指示燈、控制鍵電路 124系統軟件設計 134.1主函數的程序 134.2中斷服務的程序 144.3數據處理的程序 144.4數據顯示的程序 154.5報警的程序 164.6報警值設置的程序 184.7精確值顯示的程序 195系統程序調試 225.1調試的步驟 225.2調試過程中遇到的問題及解決方法 226總結與展望 24參考文獻 25附錄 26附錄1報警器仿真圖 26附錄2報警器實物圖 26附錄3報警器元件清單 27附錄4系統程序代碼 27致謝 42PAGEPAGE461緒論1.1報警器論文研究背景在這個科技的發展迅速的社會里,越來越多的安全隱患在工業生產和人們的日常生活里悄悄的滋生,火災是其中尤為關注的一個話題之一。為了能防止并且能減少火災給我們生活帶來的危害,就有很必要能及時發現并及時的進行火災報警。在火災前期做好保護工作,對保衛社會主義現代化建設,防止火災引起燃燒、爆炸等事故造成嚴重的經濟損失,甚至危及生命安全,起著關鍵作用。1.2本設計的應用及意義火災是國內外普遍關注的災難性問題。它是發生頻率較高的一種災害,在任何時間、任何地區都可能發生.隨著社會經濟的發展,建筑物、構筑物應用材料的多樣性,各類工業和科學技術的發展,易燃材料增多,加之人們生活環境和生活方式的變革,火災的危險性日益增加,火災次數、火災造成的人員傷亡和經濟損失逐漸增多。尤其是近幾年來,高層建筑人量增加,一旦發生火災,滅火的難度更大。隨著我國科技技術水平的進步,各種現代化寫字樓對火災報警以及自動滅火系統提出了越來越高的要求。設計出功能更完善的消防設施,對保障人民生命財產的安全,起著極為重要的作用。為了減輕火災帶來的危害,就必須對現場環境中的煙霧和溫度進行實時檢測,嚴密精確無誤的監測環境中煙霧的濃度和環境溫度,并且及早發現事故存在的安全隱患,在火災前期采取有效措施。因此研制火災報警器與研究煙霧和溫度的檢測方法就成為傳感器技術發展領域的一個比較重要課題。1.3論文主要工作本論文主要的工作就是以電阻式煙霧傳感器MQ-2和溫度傳感器DS18B20以及單片機技術為核心并與其他電子技術相結合而設計出一種技術水平相對較好的智能火災報警器。本設計實現了對現場溫度與煙霧的隨時監控,能及時報警。對溫度以及煙霧的設置能按照用戶的意愿進行設置。在系統未能及時報警情況下,用戶可以進行手動啟動報警功能,同時可以取消手動報警,在系統自動報警后,用戶可以通過更改報警限制來取消報警。在進行功能選擇時不影響報警功能與數據采集功能。

2系統方案設計2.1系統總體規劃火災報警系統一般由火災探測儀以及報警器組成。火災探測器通過對火災發出的物理、化學現象——氣(燃燒氣體)、煙(煙霧粒子)、熱(溫度)的探測,將探測到的火情信號轉化成火警電信號傳遞給火災報警控制器。區域報警器將在接收到火警信號后經分析處理同時發出聲和光的報警信號,并在屏幕上顯示出煙霧濃度的級別和溫度值,同時對應的發光二級管亮起。當系統檢測到危險信號時,系統自動啟動自救工作,減輕火災帶來的危害。此外,用戶可以通過功能設置鍵進行報警限值的設置,也可以通過此方法取消當前報警。整體電路的框圖如圖2-1所示。煙霧傳感器煙霧傳感器A/D轉換功能選擇與設置按鈕煙霧濃度級別與溫度顯示自救工作單片機AT89S52蜂鳴器、指示燈報警溫度傳感器圖2-1系統原理及組成框圖2.2單片機內部結構及接口描述AT89S52具有以下標準功能:8k字節Flash,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。AT89S52引腳圖如圖2-2所示。圖2-2AT89S52引腳圖VCC:電源GND:地P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫如“1”時,引腳用作于高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0P1口:P1口是一個具有內部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅動4個TTL邏輯電平。引腳號的第二功能:P1.0:T2(用于定時器/計數器T2的外部計數輸入),時鐘輸出。P1.1:T2EX(用于定時器/計數器T2的捕捉/重載觸發信號和方向控制)。P1.5:MOSI(用于系統編程)。P1.6:MISO(用于系統編程)。P1.7:SCK(用于系統編程)。P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動4個TTL邏輯電平。對P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數據存儲器時,P2口送出高八位地址。在這種應用中,P2口使用很強的內部上發送1。在使用8位地址訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在Flash編程和校驗時,P2口也接收高8位地址字節和一些控制信號表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單片機在火災報警器的設計中,單片機是其核心部件。它一方面要接收來自傳感器送來的溫度、煙霧對應的兩種模擬信號分別進行處理,以控制后續電路進行相應動作;與此同時查詢是否有鍵按下的請求。在單片機完成這些工作的過程中,尤其是信號處理中,比較濃度值后送入顯示的軟件實現比較復雜,要求單片機具備較快的運算速度,使檢測人員能夠較準確地觀測到煙霧濃度,并根據情況進行相應的處理。并且也要考慮選擇低價實用的機型,并為研制同一系列的低功耗產品做準備。根據多方面的比較,本設計選用ATMEL公司的AT89S52單片機作為控制器。AT89S52片內資源有4組I/O控制端口、3個定時器、8個中斷、軟件設置低能耗模式、看門狗和斷電保護。可以在4V到5.5V寬電壓范圍內正常工作。不斷發展的半導體工藝也讓該單片機的功耗不斷降低。根據本次設計的具體情況,采用雙列直插DIP-40封裝。AT89S52的實物圖如圖2-3所示。圖2-3DIP-40封裝AT89S52實物圖2.3.2集成溫度傳感器DS18B20DS18B20有三只引腳:VCC、DQ和VDD。采用了外部供電的鏈接方式,而總線必須鏈接上拉電阻,線總線在空置狀態時,都是一直處于高電平。DS18B20的內部有64位的ROM單元和9字節的暫存器單元,64位ROM包含了DS18B20唯一的序列號。原理圖如圖2-4。圖2-4DS18B20原理圖DS18B20特性介紹DS18B20是DALLAS公司的最新單線數字溫度傳感器,它的體積更小、適用電壓更寬、更經濟。DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。他的測量溫度范圍為-55~+125℃,在-10~+85℃范圍內,精度為±0.5℃。現場溫度直接以“一線總線”的數字方式傳輸大大提高了系統的抗干擾性。適合于惡劣環境的現場溫度測量,如:環境控制、設備或過程控制、測溫類消費電子產品等。DS18B20可以程序設定9~12位的分辨率,精度為±0.5℃。可以選擇更小的封裝方式,更寬的電壓適用范圍分辨率設定及用戶設定的報警溫度存儲在E2PROM中,掉電后依然保存。DS18B20的性能是新一代產品中最好的,性能價格比也非常出色,繼“一線總線”的早期產品后,DS18B20開辟了溫度傳感器技術的新概念。DS18B20內部結構DS18B20內部結構主要由4部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL,配置寄存器。DS18B20的管腳排列如圖2-5所示。圖2-5DS18B20的管腳排列DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB表2-2轉換后得到的12位數據表2-2是12位轉化后得到的12位數據,存儲在18B20的2個8bit的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0℃,則這5位為0,只要將測到的數值乘于0.0625即可得到實際溫度,如果溫度小于0℃,則這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際溫度。DS18B20溫度傳感器的存儲器DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發器TH、TL和結構寄存器。暫存存儲器包含了8個連續字節,前2個字節是測得的溫度信息,第1個字節的內容是溫度的低8位,第2個字節是溫度的高8位。第3個和第4個字節是TH、TL的易失性拷貝,第5個字節是結構寄存器的易失性拷貝,這3個字節的內容在每一次上電復位時被刷新。第6、7、8個字節用于內部計算。第9個字節是冗余檢驗字節。根據DS18B20的通訊協議,主機控制DS18B20完成溫度轉換必須經過3個步驟:每一次讀寫之前都要對DS18B20進行復位;復位成功后發送一條ROM指令;最后發送RAM指令。這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500μs,然后釋放,DS18B20收到信號后等待16~60μs左右,后發出60~240μs低脈沖,主CPU收到此信號表示復位成功。DS18B20使用中的注意事項DS18B20雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題:①DS18B20從測溫結束到將溫度值轉換成數字量需要一定的轉換時間,這是必須保證的,不然會出現轉換錯誤的現象,使溫度輸出總是顯示85。②在實際使用中發現,應使電源電壓保持在5V左右。若電源電壓過低,會使所測得的溫度與實際溫度出現偏高現象,經過試驗發現,一般在5V左右。③較小的硬件開銷需要相對復雜的軟件進行補償,由于DS18B20與微處理器間采用串行數據傳送,因此在對DS18B20進行讀寫編程時,必須嚴格保證讀寫時序,否則將無法讀取測溫結果。④在DS18B20測溫程序設計中,向DS18B20發出溫度轉換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20接觸不好或斷線,將沒有返回信號,程序進入死循環。這一點在進行DS18B20硬件連接和軟件設計時也要給予一定的重視。2.3.3氣體傳感器MQ-2本設計中采用的MQ-2型煙霧傳感器屬于二氧化錫半導體氣敏材料,屬于表面離子式N型半導體。當與煙霧接觸時,如果晶粒間界處的勢壘受到該煙霧的調制而變化,就會引起表而電導率的變化。利用這一點就可以獲得這種煙霧存在的信息。例如遇到可燃氣體(如CH4等)時,原來吸附的氧脫附,而由可燃煙霧以正離子狀態吸附在二氧化錫半導體表面;氧脫附放出電子,煙霧以正離子狀態吸附也要放出電子,從而使二氧化錫半導體導帶電子密度增加,電阻值下降。而當空氣中沒有煙霧時,二氧化錫半導體又會自動恢復氧的負離子吸附,使電阻值升高到初始狀態。這就是MQ-2型燃性煙霧傳感器檢測可燃煙霧的基本原理。圖2-6MQ-氣體傳感器結構和外形MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2)。當傳感器所處環境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大。使用簡單的電路即可將電導率的變化轉換為與該氣體濃度相對應的輸出信號。這種傳感器可檢測多種可燃性氣體,是一款適合多種應用的低成本傳感器。結構和外形如圖2-6所示,封裝好的氣敏元件有6只針狀管腳,其中4個用于信號取出2個用于提供加熱電流。2.3.4數碼管驅動芯片74HC24574HC245是數碼管的總線驅動器,典型的CMOS型三態緩沖門電路,74HC245引腳圖如圖2-7。單片機或CPU的數據/地址/控制總線端口都有一定的負載能力,如果負載超過其負載能力就應加驅動器。因此可驅動本設計使用的數碼管。74HC245功能表如表2-3所示。圖2-774HC245引腳圖第1腳DIR,為輸入輸出端口轉換用。DIR=“1”,OE=“0”則A1輸入,對應B1輸出,其它類同。如果DIR=“0”、OE=“0”則B1輸入,對應A1輸出。第19腳OE為使能端,為“1”時A/B端的信號將不導通,只有為“0”時A/B端才啟用,也就是起到開關的作用。表2-374HC245功能表InputInput/OutputOEDIRAnBnLLA=BInputLHInputB=AHXZZH:高電平L:低電平X:懸空2.3.5模數轉換芯片ADC0832ADC0832是美國國家半導體公司生產的一種8位分辨率A/D轉換芯片,可以適應一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉換時間僅為32μS,有雙數據輸出可作為數據校驗,轉換速度快且穩定性能好。通過DI數據輸入端,可以輕易的實現通道功能的選擇。其引腳如圖2-8所示。圖2-8ADC0832引腳圖正常情況下ADC0832與單片機的接口應為4條數據線:CS、CLK、DO、DI。由于DO端與DI端在通信時未同時有效并與單片機的接口是雙向的,所以電路設計時可將DO和DI并在一根數據線上使用。當CS輸入端應為高電平時芯片禁用,CLK和DO/DI的電平可任意。當進行A/D轉換時,CS使能端應置于低電平并且保持到轉換結束。芯片開始轉換工作時,由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數據信號。第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。第2、3個脈沖下沉之前DI端輸入2位數據用于選擇通道功能,其功能表如表2-4所示。表2-4ADC0832功能表MUXAddressChannel#SGL/ODD/SIGN0100+-01-+

3系統硬件設計3.1AT89S52復位電路復位是使單片機或系統恢復某種確定的初始狀態。單片機就是從復位開始工作的。開機瞬間RST引腳獲得高電平,隨著電容C1的充電,引腳的高電平將逐漸下降。若RST引腳的高電平保持2個機器周期,單片機就復位,持續保持則循環復位。復位操作有兩種基本形式:一種是上電復位,另一種是上電與按鍵均有效的復位,本設計使用的是上電復位方式,上電復位電路圖如圖3-1所示。圖3-1單片機的復位電路3.2溫度傳感器電路DS18B20可以使用外部電源VDD,也可以使用內部的寄生電源。當VDD端口接3.0V—5.5V的電壓時是使用外部電源;當VDD端口接地時使用了內部的寄生電源。無論是內部寄生電源還是外部供電,I/O口線要接6.8KΩ左右的上拉電阻。本設計采用的是外部電源供電方式,連接圖如圖3-2所示。圖3-2溫度采集電路DS18B20的外部電源供電方式在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度。在外部供電的方式下應注意GND引腳不能懸空,否則不能轉溫度,讀取的溫度總是85℃。3.3MQ-2煙霧感器電路本設計煙霧傳感器采用MQ-2,在可燃氣體或煙霧中MQ-2煙霧傳感器的電阻會有相應的變化,測量電極和加熱器構成的敏感元件固定在塑料或不銹鋼制成的腔體內,加熱器為氣敏元件提供了必要的工作條件。氣敏元件共有6只針狀管腳,其中4個用于信號取出,2個用于提供加熱電流。直流電壓直接供傳感器MQ-2的加熱絲H-H工作,H兩端接到電源的兩端起預熱的作用,檢測煙霧之前要加熱絲給傳感器MQ-2預熱一定時間。當采集到電壓后經過AD模數轉換器將模擬量轉換為數字量。經過校準就可以得到準確的煙霧或者可燃氣體的濃度。這種傳感器具有輕微的極性,在滿足傳感器電性能要求的前提下,為更好利用傳感器的性能,還需要通過滑動變阻器的調節與校準,才能得到精確的煙霧信號。其電路圖如圖3-3所示。圖3-3MQ-2基本電路3.4A/D轉換ADC0832電路A/D轉換電路在本設計中采用的是數模轉換常用芯片ADC0832,煙霧傳感器的輸出端接到ADC0832的CH0。經煙霧傳感器MQ-2所檢測的電壓信號為模擬信號,無法直接被單片機所識別,所以在經過放大電路后對信號進行A/D裝換,將模擬信號轉化為數字信號輸入單片機。ADC0832電路圖如圖3-4所示。圖3-4A/D轉換電路3.5報警器電路由AT89S52實現聲音報警控制。蜂鳴器為無源蜂鳴器,低電平時發出聲音,當室內可燃性氣體濃度、煙霧濃度或溫度超過設定的限定值時,單片機將P3.7置為低電平,三極管導通,揚聲器發出蜂鳴報警,直到有工作人員將電路斷開,或煙霧、溫度降到限值以下。蜂鳴器負極接地,正極接三極管輸出,其電路原理圖如圖3-5所示。圖3-5聲音報警電路在報警的同時,設計加入了一個自救電路,煙霧濃度過高時,可以通過電機把煙霧抽去,使室內煙霧濃度降低。當溫度過高時還可以通過電機,將冷氣吹入,降低溫度,若發現火災,則將CO2吹入,(此步驟需用戶手動完成)。如圖3-6所示。圖3-6馬達電路3.6七段數碼管顯示電路數據采集進來并被成功地由模擬量轉化為數字量后,就被傳送到系統的顯示模塊,讓人們更直接地觀察到相關數據。在本系統中,對LED進行的是動態掃描,除了給顯示器提供段的輸入之外,還要對顯示器進行位控制。顯示器的第一位顯示煙霧濃度級別,而后兩位則顯示當前實際溫度,中間顯示“-”將溫度和煙霧分開。本系統顯示用的4位七段共陽數碼管由數碼管專用數碼驅動芯片74HC245驅動,P2為數據段碼輸出口,P2.0至P2.7分別接驅動芯片74HC245的A0至A7,74HC245的B0至B7分別接數碼管的a、b、c、d、e、f、g、dp,P0.0、P0.1、P0.2、P0.3引腳用作位選,分別控制4位數碼管的亮滅。數碼管的位選引腳接上拉電阻為共陽,可以由位選引腳輸出高低電平經過74HC07驅動器控制數碼管亮滅。七段數碼管電路圖如圖3-7所示。圖3-7數碼管顯示電路圖3.7狀態指示燈、控制鍵電路狀態指示燈控制電路如圖3-8所示,單片機AT89S52引腳的P3.4、P3.5、P3.6控制輸出的狀態指示燈。綠燈亮表示室內環境處于正常狀態,環境中沒有火災危險。紅燈表示溫度超過了設定的報警限值。黃燈亮表示環境中煙霧濃度超過報警限值,若同時亮,說明溫度和煙霧都超過了設定的報警限值,即可能會發生火災,提醒用戶盡快采取相應措施。圖3-8狀態指示燈電路控制鍵電路采用獨立式按鍵設計。4個按鍵分別接單片機的P0.0、P0.1、P0.2、P0.3,單片機的P0口接上拉電阻。單片機掃描是否有按鍵閉合,如有鍵閉合,則判斷鍵號并轉入相應的鍵處理。功能控制鍵電路如圖3-9所示,4個鍵定義如下:P0.0:手動報警鍵,按此鍵可以手動啟動報警功能。P0.1:限值設置鍵,按此鍵則可以進入報警值的設定。P0.2:限值減鍵,按此鍵當前設定項報警限值逐減。P0.3:限值加鍵,按此鍵當前設定項報警限值逐加。圖3-9功能控制鍵電路

4系統軟件設計4.1主函數的程序火災報警器主程序流程圖如圖4-1所示。圖4-1主程序流程圖系統啟動后首先進行初始化,然后開啟中斷,在中斷中對數據進行及時采集,并且在中斷中將檢測值與報警限設定值相比較,判斷是否要報警。然后進入主程序的死循環中,不斷循環執行四項功能:顯示數據、判斷是否手動報警、判斷是否要設定報警值、判斷是否需要顯示精確值。而數據采集于報警判斷則在定時中斷中執行,在主函數中顯示的數據是煙霧的級別與整數位溫度值。主函數程序如下:voidmain() { sysrest(); //系統初始化 while(1){ xianshi(); //顯示溫度和煙霧數據 if(SD==0)sdong(); //檢查是否啟動手動報警 if(SET==0)czhi(); //檢查是否啟動設置報警值 if(Jia==0||Jian==0)jingque(); //是否顯示精確值}}4.2中斷服務的程序系統設定定時器工作方式后開啟系統中斷,以便響應中斷定時,及時對室內煙霧濃度和溫度進行采樣,并及時判斷是否超過設定的限值。系統初始化成功后便開始接受中斷申請,定時中斷間隔時間為65乘以16毫秒即約1秒左右對煙霧數據和溫度數據進行一次采樣,然后把數據送入主程序的顯示函數中等待中斷退出然后顯示。中斷中同時判斷是否需要報警進行判斷,能即使報警。因此本設計對數據有良好的時效性,不會因主程序的運行而影響對數據的處理。中斷服務程序如下: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數據處理的程序由于煙霧數據采集、AD轉換后得到的是煙霧濃度,設計中要求數碼管中顯示的是煙霧濃度的級別,所以對數據采集后,還要對煙霧濃度數據對煙霧濃度進行分等級。煙霧等級數據放在disdata[0]中,由主函數里的xianshi()函數調用。本設計中將煙霧濃度等級分為6個級別:F0、F1、F2、F3、F4、F5,各個級別對應煙霧濃度值如下:F0:煙霧濃度小于等于5;F1:煙霧濃度小于等于20;F2:煙霧濃度小于等于40;F3:煙霧濃度小于等于80;F4:煙霧濃度小于等于120;F5:煙霧濃度大于120;溫度數據采集并數據轉換后直接存放在disdata[2]和disdata[3]中,disdata[2]存放的是溫度的十位數,disdata[3]則存放的是溫度的個位數。temp是用于判斷是否報警用的。數據處理程序如下: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];}4.4數據顯示的程序為了將煙霧級別與溫度數據在數碼管中分開,設計中把煙霧級別現在是第一個數碼管,第二個數碼管顯示“-”將其分開,第三四個數碼管分別顯示溫度的個位十位。這樣對數據的實際情況一目了然。數據顯示子程序如下:voidxianshi() //將disdata[]里的溫度數據在數碼管上顯示{ 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(200); }}4.5報警的程序報警程序流程圖如圖4-2所示。圖4-2報警程序流程圖報警程序分為手動報警和自動報警,用戶可以自己啟動報警程序,也可以由系統自動報警。手動報警程序中sign為手動報警標志,1秒內兩次按下報警鍵為取消手動報警。報警時蜂鳴器發聲,3個通道的燈輪流閃亮,同時啟動馬達自救工作。手動報警程序如下:voidsdong() //sign為手動報警標志 {while(SD==0){sign=0;xianshi();} //短按一次取消報警delayt(350); while(SD==0){sign=1;xianshi();} //1秒鐘內兩次按下表示手動報警}當煙霧濃度或溫度值超過報警限設定值時,系統自動報警,蜂鳴器發聲,對應通道的燈亮起,綠燈滅掉,以提示操作人員采取安全對策或自動控制相關安全裝置,從而保障生產安全,避免火災和爆炸事故的發生。為及時判斷煙霧、溫度數據,在程序設計上,對煙霧濃度和溫度的采集程序放在了中斷服務程序里,定時性的檢測和報警。系統自動報警子程序如下:voidBaoj(){ if(temp>=tuxian||sign==1||ywu>=ybz) { Md=0; //3個LED代替馬達 { 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) //非手動報警 { Ledzc=1; if(temp>=tuxian){Ledrbj=0;Md=0;}elseLedrbj=1; if(disdata[0]>=yuxian){Ledybj=0;Md=0;}elseLedybj=1; } if(sign==1) //手動報警 { 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); } }//判斷是否報警 else{Ledzc=0;Ledrbj=1;Ledybj=1;Md=1;} //不報警}4.6報警值設置的程序系統初始化后,用戶可以根據自己修要對報警值進行設置,溫度的設置值為整數,設置的是溫度的實際值。煙霧的設置是對煙霧濃度的級別進行設置。煙霧濃度分為6個級別(0~5),P0^1為設置鍵,當檢測到啟動設置報警值按鍵被按下時,則系統進入設置程序。P0^2、P0^3對應減和加。“設置”鍵處于按下狀態時,顯示當前所設置的煙霧級別與溫度報警值,釋放后則默認進入煙霧報警級別設置,數碼管只顯示當前煙霧級別。再次按下設置按鍵時則進入溫度報警值設置,數碼管只顯示當前設定溫度。按“加”和“減”鍵進行報警值的遞增、遞減設置,長按設置按鍵表示確認設置并退出,若用戶在進入設置狀態持續6秒沒有動作,系統則自動退出到正常狀態。報警值設置程序流程圖如圖4-3所示。圖4-3報警值設置程序流程圖系統自動報警子程序如下:voidczhi(void)// {js=1000;ys=js;ts=js; //js=60為一秒while(SET==0)show();while((ys>0)&&(ts>0)) //設置溫度報警值{shezhi[1]=11;shezhi[2]=11;shezhi[3]=11;//溫度的設定值不亮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;//煙霧的設定值不亮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(); //重載設定值}while(SET==0)show();}4.7精確值顯示的程序在正常狀態下,數碼管上顯示的是當前煙霧濃度的級別和當前溫度數據的整數部分,為了讓用戶能得到當前精確的數據,本設計中對P0.2、P0.3對應的減鍵和加鍵添加了第二功能:在煙霧級別與溫度顯示的正常狀態下,P0.2對應的“加”鍵是“顯示當前精確煙霧數據”的功能、P0.3對應的“減”鍵是“顯示當前精確溫度數據”的功能,這兩個功能拓展了本設計的基本功能。在正常狀態下,“加鍵”處于按下狀態時,顯示當前設置的煙霧報警級別所對應的精確煙霧濃度值,當釋放按鍵后,則顯示當前煙霧實際精確濃度,直到第二次按下則退出顯示。“減鍵”處于按下狀態時,顯示所設置的報警溫度值,釋放按鍵后則顯示當前保留一位小數的精確溫度值,直到第二次按下則退出顯示。精確值顯示的程序流程圖如圖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();//顯示煙霧報警濃度 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; //小數位 if(jque[0]==0){jque[0]=11;if(jque[1]==0)jque[1]=11;} disjque();} while(Jian==0)disjque();tg=0;}

5系統程序調試5.1調試的步驟(1)源文件的建立:使用菜單“File-New”即可在項目窗口的右側打開一個新的文本編輯窗口,在該窗口中輸入匯編語言源程序。同時保存該文件,加上擴展名(*.asm或*.C),這里將文件名保存為54LZX.C。(2)建立工程文件:點擊“Project-NewProject”菜單,出現給工程起一個名的對話框,我們輸入54LZX,這個不需要擴展名。這個對話框要求選擇目標CPU,選擇ATMEL的AT89S52。回到主界面,在工程窗口的文件頁中,展開“Target1”前面的“+”號,手動把剛才編寫好的源程序加入下一層的“SourceGroup1”,右鍵點擊“SouceGroup”,選中其中下拉菜單的“AddfiletoGroup”SouceGroup1”對話框,要求尋找源文件,選擇54LZX.C文件,將文件加入項目,點擊”Close”即可返回主界面,會發現54LZX.C文件以在其中。雙擊文件可打開源程序。(3)工程的設置:右鍵點擊左邊Project窗口的Target1,然后使用菜單“Proget-Optionfortarget‘target1’”即出現對工程設置的對話框,對這個對話框可謂非常復雜,共有8個頁面,要全部高清可不容易,好在絕大部分設置項取默認值就行了。設置完成以后安確認返回主界面,工程建立、設置完畢。(4)編譯、連接:在設置好工程后,既可以進行編譯、連接。選擇菜單Project-Buildtarget,對當前工程進行連接。編譯過程中的信息將出現在輸出窗口中的Build頁中,如果源程序有語法錯誤,會有錯誤報告出現,雙擊該行,可以定到出錯的位置,對源程序反復修改后,最終會得到如圖5-1所示的結果,提示獲得了名為54LZX.hex的文件,該文件即可被編程器讀入并寫到芯片中,同時還產生了一些其他相關文件可被用于KEIL的仿真與調試。5.2調試過程中遇到的問題及解決方法在進入Keil的調試環境以后,發現調試程序過程中遇到了很多問題,總結如下:(1)編譯時候提示:Buildtarget'Target1'compiling54LZX.c...54LZX.C(215):warningC206:'show':missingfunction-prototype54LZX.C(226):errorC231:'show':redefinition54LZX.C(235):errorC231:'show':redefinitionTargetnotcreated解決方法:在程序開始處,對所定義的函數進行函數申明,即可解決上述問題。重新生成項目,即可生成54LZX.HEX文件。(2)程序調試時提示:54LZX.C(11):errorC132:'xianshi':notinformalparameterlist54LZX.C(11):errorC141:syntaxerrornear'void'解決方法:檢查對應函數的位置附近是否缺少符號“;”。(3)程序調試時提示:***WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESSSEGMENT:?PR?CZHI?54LZX"54LZX"-0Error(s),1Warning(s).解決方法:找到對應的函數,檢查函數沒有沒調用的原因。(4)匯編出現數字、字母混淆。解決方法:仔細檢查有字母“o”和數字“0”或數字“1”和字母“l”的位置。經過仔細排查,程序成功調試。沒出現任何錯誤時,這時可以載入Protues進行仿真。程序調試成功圖如圖5-1所示。圖5-1程序調試成功的截圖

6總結與展望火災報警器可保障生產與生活的安全,避免火災和爆炸事故以及煤氣中毒的發生,降低風險,是防火和安全生產所必備的安全儀器。本論文是在對煙霧、溫度傳感器和報警技術進行深入研究的基礎上,通過比較,最后合理地確定系統的設計方案,并對儀器的整體設計和各個組成部分進行了詳細的分析和詳細設計。整個系統最終實現了預期的目標。本系統通過設計一個以AT89S52單片機為核心的火災報警器可以實現聲光報警、濃度顯示、報警限設置、精確數據顯示等功能。是一種結構簡單、性能穩定以及使用方便的智能化的火災報警器。本報警器的電路結構設計的很簡單,易于維護。由于實現了對普通環境中煙霧濃度和溫度的實時監控,能廣泛應用于居民家庭、企事業單位等多方面的安全防范。本設計的程序以C51語言編寫,充分利用了芯片的資源,提高了測量精度和代碼執行效率,減小了代碼容量,本論文研制的報警器的基礎上,可以進行適當的功能擴展,使智能火災報警器的功能更加的完善,安全性更加的高,通過現場標定及測試,以及煙霧濃度與溫度的實驗數據的具體分析,計算本報警器顯示數據與實際數據之間的誤差已近較小,滿足了檢測的基本要求,達到了預期的設計效果。本設計還可以作出更進一步的創新,在設計中可以增加一個自動控制功能,可以設計成通過馬達的作用來控制室內溫度。例如,溫度過高時,通過馬達吹入冷空氣,冷空氣溫度由當前溫度超過設定限值的差確定,差值越大溫度越低;當煙霧濃度較大時,通過另一馬達將煙霧抽出,馬達速度由當前煙霧濃度超過設定限值的差確定,差值越大馬達速度越快。這樣系統可以自動控制室內煙霧及溫度,更進一步的降低了火災發生的可能性。

參考文獻[1]馬爭,汪亞南.微計算機與單片機原理及應用[M].北京:高等教育出版社,2009.[2]林立,張俊靚,曹旭東,劉得軍.單片機原理及應用[M].北京:電子工業出版社,2010.[3]盧元元,王暉.電路理論基礎[M].西安:西安電子科技大學出版社,2004.[4]呂俊芳,錢政,袁梅.傳感器接口與檢測儀器電路[M].北京:國防工業出版社,2009.[5]蘭吉昌.單片機C51完全學習手冊[M].北京:化學工業出版社,2009.[6]楊素行.模擬電子技術基礎簡明教程(第三版)[M].北京:高等教育出版社,2005.[7]鄒其洪,黃智偉,高嵩等.電工電子實驗與計算機仿真[M].北京:電子工業出版社,2005.[8]朱定華.單片微機原理、匯編與C51及接口技術[M].北京:清華大學出版社,2010.[9]譚博學.集成電路原理及應用[M].北京:電子工業出版社,2003.[10]鄧元慶,關宇,賈鵬.數字設計基礎與應用[M].北京:清華大學出版社,2005.[11]DavidCJ.TheCProgrammingLanguage(ThethirdEdition)[M].Prentice-Hall,2008.[12]StephenL.Herman,WalteN.Alerich.Industrialmotocontrol[J].DelmarPublishers,2010.

附錄附錄1報警器仿真圖附錄2報警器實物圖附錄3報警器元件清單元件名稱型號數量/個用途單片機AT89S521控制核心電容30pF2晶振電路晶振12MHz1晶振電路電解電容10uF/10v1復位電路電阻10kΩ1復位電路按鍵1復位電路按鍵4選手輸入三極管C85502馬達、蜂鳴器驅動蜂鳴器1報警電阻10K/1K/150Ω5/3/4限流排阻A512J1上拉電阻數碼管4位共陰1顯示電路模數轉換器ADC08321模數轉換集成塊74HC245N1數碼段驅動集成塊74HC071位選驅動電位器W2041調節精確度LED發光二級管3狀態顯示煙霧傳感器MQ-21檢測煙霧信號ISP接線口2*5接口1下載程序萬用板140腳IC測試座1附錄4系統程序代碼#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)Disdat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論