基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作_第1頁
基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作_第2頁
基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作_第3頁
基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作_第4頁
基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學號:密級:基于單片機的CO濃度檢測及報警系統(tǒng)設計與制作學院名稱:培黎工程技術學院專業(yè)名稱:電子信息科學與技術學生姓名:指導教師:二〇一五年五月DesignandManufactureofCOConcentrationDetectionandAlarmSystemBasedonSCMCollege:SchoolofBailieEngineering﹠TechnologySubject:ElectronicInformationScienceandTechnologyName:Directedby:May2015鄭重聲明本人呈交的學位論文,是在導師的指導下,獨立進行探討工作所取得的成果,全部數(shù)據(jù)、圖片資料真實牢靠。盡我所知,除文中已經注明引用的內容外,本學位論文的探討成果不包含他人享有著作權的內容。對本論文所涉及的探討工作做出貢獻的其他個人和集體,均已在文中以明確的方式標明。本學位論文的學問產權歸屬于培育單位。本人簽名:日期:摘要本文是以STC89C52芯片為核心設計制作了一種CO濃度檢測及報警系統(tǒng)。通過CO傳感器檢測空氣中CO濃度,經電路處理實現(xiàn)報警及降低其濃度作用。該系統(tǒng)主要包括ADC0832模數(shù)轉換芯片,CO檢測,蜂鳴器預警電路,LCD液晶顯示電路等。軟件編程采納C語言,具有功耗低,成本低等特點。關鍵詞:CO檢測;單片機;報警系統(tǒng)ABSTRACTAdetectionandalarmsystemforCOconcentrationisdesignedwithSTC89C52chip.ItdetectsconcentrationofCOinairthroughcarbonmonoxidesensors,theroleofalarmandreduceitsconcentrationisachievedbycircuit.ThissystemmainlyconsistsofADC0832chip,detectionofCO,buzzeralarmcircuitandLCDliquidcrystaldisplaycircuit.ThesoftwareisprogrammedwithClanguage.Therefore,thesystemischaracterizedbylowpowerdissipationandlowcost.Keywords:detectionofCO;Singlechipmicrocomputer;alarm

system

目錄TOC\o"1-3"\h\u21777第1章緒論 173411.1課題的背景和意義 1125611.2CO檢測儀的種類 2280751.3設計任務 222583第2章CO檢測系統(tǒng)硬件設計 3200902.1STC89C52單片機簡介 3177132.2單片機最小系統(tǒng)的設計 589542.3數(shù)據(jù)采集系統(tǒng)的簡介 762792.4模數(shù)轉換器的簡介 8197352.5按鍵電路的設計 9271162.6外圍擴充存儲器的簡介 9136452.7上拉電阻電路的設計 10146522.8液晶顯示器簡介 10225672.9報警電路的設計 119326第3章CO檢測系統(tǒng)軟件設計 1322943.1軟件設計結構 13291753.2主程序模塊的設計 14233203.3模數(shù)轉換的設計 15152253.4按鍵模塊的設計和時鐘模塊的設計 16282833.5液晶顯示模塊的設計 178882第4章系統(tǒng)調試及功能實現(xiàn) 183304.1總體系統(tǒng)調試 1828134.1.1軟件調試 18306874.1.2軟件下載 18255894.2實物展示 1921875結論 2113802參考文獻 2213091致謝 2326444附錄 24第1章緒論1.1課題的背景和意義一氧化碳是無色、無臭、無味、有毒的氣體,熔點﹣199℃,沸點﹣191.5℃。標準狀況下氣體密度為l.25g/L,和空氣密度(標準狀況下1.293g/L)相差很小,這也是簡潔發(fā)生煤氣中毒的因素之一。一氧化碳分子中碳元素的化合價是+2價,能進一步被氧比成+4價,從而使一氧化碳具有可燃性和還原性,一氧化碳能夠在空氣中或氧氣中燃燒,生成二氧化碳。一氧化碳中毒(carbonmonoxidepoisoning),亦稱煤氣中毒。一氧化碳是無色、無臭、無味的氣體,故易于忽視而致中毒。常見于家庭居室通風差的狀況下,煤爐產生的煤氣或液化氣管道漏氣或工業(yè)生產煤氣以及礦井中的一氧化碳吸入而致中毒。中毒原理:一氧化碳會與肺部的血紅蛋白結合,造成機體缺氧。一是輕度中毒?;颊呖沙霈F(xiàn)頭痛、頭暈、失眠、視物模糊、耳鳴、惡心、嘔吐、全身乏力、心動過速、短暫昏厥。血中碳氧血紅蛋白含量達10%-20%。二是中度中毒。除上述癥狀加重外,口唇、指甲、皮膚粘膜出現(xiàn)櫻桃紅色,多汗,血壓先上升后降低,心率加速,心律失常,煩躁,一時性感覺和運動分別(即尚有思維,但不能行動)。癥狀接著加重,可出現(xiàn)嗜睡、昏迷。血中碳氧血紅蛋白約在30%-40%。經剛好搶救,可較快醒悟,一般無并發(fā)癥和后遺癥。三是重度中毒?;颊呖焖龠M入昏迷狀態(tài)。初期四肢肌張力增加,或有陣發(fā)性強直性痙攣;晚期肌張力顯著降低,患者面色蒼白或青紫,血壓下降,瞳孔散大,最終因呼吸麻痹而死亡。經搶救存活者可有嚴峻合并癥及后遺癥。一氧化碳的后遺癥。中、重度中毒病人有神經衰弱、震顫麻痹、偏癱、偏盲、失語、吞咽困難、智力障礙、中毒性精神病。部分患者可發(fā)生繼發(fā)性腦病。在當今社會發(fā)展中,現(xiàn)代化的發(fā)展給人類帶了很大的便利,但與此同時,人生平安越來越受到人們的重視,一氧化碳在工業(yè)領域所給我們帶來的便利不言而喻,但它對人體的危害也是自不待言的。所以我們設計一款基于單片機限制的一氧化碳檢測儀,對一氧化碳進行檢測,為人們供應了平安的保障。1.2CO檢測儀的種類目前,市場上一氧化碳檢測儀的種類是多種多樣,目前應用得較為廣泛的是熱催化監(jiān)測方式,但由于多種可熱性氣體都能催化氧化燃燒,導致檢測精度下降,另外,采納這種方式的檢測儀體積和功率都較大,不便于隨身攜帶,本設計運用的是一種采納點調制非光紅外(NDIR)氣體成分分析技術檢測一氧化碳氣體的方法的一氧化碳傳感器,該方法提高了檢測精度,大大降低了檢測儀的尺度和功耗,延長了電池供應時間,體積和功耗的有效降低。1.3設計任務本設計的任務是設計一個由單片機限制的一氧化碳的濃度檢測及報警系統(tǒng),它將傳感器輸出的電壓信號進行A/D轉換、濾波、線性化,由單片機將電壓值轉換為氣體濃度和溫度送LCD1602液晶顯示,并推斷是否超過報警上限,若超過,則發(fā)出聲光報警,并打開風扇降低一氧化碳的濃度。同時用戶可以自己設定報警上限,運用戶可以依據(jù)實際狀況便利的駕馭平安狀況。該系統(tǒng)以STC89C52單片機為核心,可以實現(xiàn)聲光報警、故障自診斷、濃度顯示、報警限設置。它結構簡潔、性能穩(wěn)定、運用便利、價格低廉、智能化,具有肯定的好用價值。第2章CO檢測系統(tǒng)硬件設計本論文主要完成一氧化碳檢測儀軟件和硬件仿真設計,設計內容包括:A/D轉換器程序、限制程序、超標報警、鍵盤檢測、數(shù)據(jù)顯示等。硬件設計部分主要包括:單片機、A/D轉換器、時鐘芯片、LCD、外圍擴展數(shù)據(jù)RAM等芯片的選擇;硬件主電路設計、數(shù)據(jù)采集、模數(shù)轉換電路設計、液晶顯示電路設計、外圍擴充存儲器接口電路、時鐘電路、復位電路、鍵盤接口電路等功能模塊電路設計。硬件結構框圖2.1。硬件設計總體電路圖見附錄A1。圖2.1硬件結構框圖2.1STC89C52單片機簡介本系統(tǒng)采納STC89C52單片機。而目前世界上較為聞名的8位單片機的生產廠家和主要機型如下:美國Intel公司:MCS—51系列及其增加型系列;美國Motorola公司:6801系列和6805系列;美國Atmel公司:89C51等單片機;美國Zilog公司:Z8系列及SUPER8;美國Fairchild公司:F8系列和3870系列;美國Rockwell公司:6500/1系列;美國TI(德克薩司儀器儀表)公司:TMS7000系列;NS(美國國家半導體)公司:NS8070系列等等。MCS—51系列單片機包括三個基本型8031、8051、8751。本系統(tǒng)采納STC89C52單片機為限制核心。而相比之下52型功能更為強大,ROM和RAM存儲空間更大,52還兼容51指令系統(tǒng)?;诒鞠到y(tǒng)設計內容的須要,綜合考慮后,我們選擇單片機ATME公司的STC89C52為限制核心;主要基于考慮STC89C52是一個低電壓,高性能CMOS8位單片機,片內含8KB的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機存取數(shù)據(jù)存儲器(RAM)、6個中斷源;時鐘頻率0~24MHz;器件采納高密度、非易失性存儲技術生產,并兼容標準MCS-51指令系統(tǒng),功能強大。STC89C52是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含8Kbytes的可反復擦寫的只讀程序存儲器(PEROM)和256Kbytes的隨機存取數(shù)據(jù)存儲器,器件采納ATMEL公司的高密度,非易失性存儲技術生產,與標準MCS-51指令系統(tǒng)及8052產品引腳兼容,片內置通用8位中心處理器和FLASH存儲單元,功能強大,STC89C52單片機適合于很多較為困難限制應用場合。圖2.2引腳圖主要性能參數(shù):與MCS-51產品指令和引腳完全兼容;8K字節(jié)可重擦寫FLASH閃存存儲器;1000次寫/擦循環(huán);時鐘頻率:0Hz~24MHz;三級加密存儲器;256字節(jié)內部RAM;32個可編程I/O口線;3個16位定時/計數(shù)器;6個中斷源;可編程串行UART通道。2.2單片機最小系統(tǒng)的設計采納STC89C52來設計一個單片機系統(tǒng)能運行起來的需求最小的系統(tǒng)[15],電路圖見圖2.3:圖2.3單片機最小系統(tǒng)圖上圖的最小單片機系統(tǒng)包含有晶振電路和復位電路,STC89C52芯片組成。晶振電路在各種指令的微操作在時間上有嚴格的次序,這種微操作的時間次序稱作時序,STC89C52的時鐘產生方式有兩種,一種是內部時鐘方式,一種是外部時鐘方式。本系統(tǒng)中采納了內部時鐘方式,為了盡量降低功耗的原則。電路圖見圖2.4。圖2.4晶振電路圖在89C52單片機的內部有一個震蕩電路,只要在單片機的XTAL1和XTAL2引腳外接石英晶體(簡稱晶振)就構成了自激振蕩器并在單片機內部產生時鐘脈沖信號,圖中電容器C1和C2穩(wěn)定頻率和快速起振,晶振CRY選擇的是12MHz。復位電路在單片機工作中仍舊是不行缺少的主要部件中,單片機工作時必需處于一種確定的狀態(tài)。端口線電平和輸入輸出狀態(tài)不確定可能使外圍設備誤動作,導致嚴峻事故的發(fā)生;內部一些限制寄存器(專用寄存器)內容不確定可能導致定時器溢出、程序尚未起先就要中斷及串口亂傳向外設發(fā)送數(shù)據(jù)[1]。圖2.5上電復位電路圖本設計中復位電路采納的是上電復位與手動復位電路,開關未按下是上電復位電路,上電復位電路在上電的瞬間,由于電容上的電壓不能突變,電容處于充電(導通)狀態(tài),故RST腳的電壓與VCC相同。隨著電容的充電,RST腳上的電壓才漸漸下降。選擇合理的充電常數(shù),就能保證在開關按下時是RST端有兩個機器周期以上的高電平從而使STC89C52內部復位。開關按下時是按鍵手動復位電路,RST端通過電阻與VCC電源接通,通過電阻的分壓就可以實現(xiàn)單片機的復位[4]。電路圖見圖2.6:圖2.6復位電路圖2.3數(shù)據(jù)采集系統(tǒng)的簡介CO傳感器選用CO/CF-1000探頭組成,如下表2.1。表2.1傳感器參數(shù)名稱一氧化碳傳感器CO/CF-1000測量范圍0-1000ppm輸出100±20nA/ppm辨別率0.05ppm響應時間(T90)﹤50seconds濕度范圍15-90%RH(非凝聚)最大零點漂移(20℃to40℃)10ppm長期漂移﹤2%/每月舉薦負載值10Ω線性度輸出線性測量電路由CO/CF-1000一氧化碳傳感器、ADC0832組成。當空氣被內部的采樣系統(tǒng)接收后,產生一個與一氧化碳濃度成正比的電壓信號,該電壓信號經ADC0832與STC89C52單片機相連,在顯示器上顯示出一氧化碳的濃度值,當超過國家規(guī)定的標準時報警[5]。2.4模數(shù)轉換器的簡介由于ADC0832模數(shù)轉換器具有8位辨別率、雙通道A/D轉換、輸入輸出電平與TTL/CMOS相兼容、5V電源供電時輸入電壓在0~5V之間、工作頻率為250KHZ、轉換時間為32微秒、一般功耗僅為15MW等優(yōu)點,適合本系統(tǒng)的應用,所以我們采納ADC0832為模數(shù)轉換器件[3]。電路圖見圖2.7如下:圖2.7模數(shù)轉換電路圖ADC0832具有以下特點:①8位辨別率;②雙通道A/D轉換;③輸入輸出電平與TTL/CMOS相兼容;④5V電源供電時輸入電壓在0~5V之間;⑤工作頻率為250KHZ,轉換時間為32μS;⑥一般功耗僅為15mW;⑦8P、14P—DIP(雙列直插)、PICC多種封裝;⑧商用級芯片溫寬為0℃到+70℃,工業(yè)級芯片溫寬為?40℃到+85℃;芯片接口說明:①CS_片選使能,低電平芯片使能;②CH0模擬輸入通道0,或作為IN+/-運用;③CH1模擬輸入通道1,或作為IN+/-運用;④GND芯片參考0電位(地);⑤DI數(shù)據(jù)信號輸入,選擇通道限制;⑥DO數(shù)據(jù)信號輸出,轉換數(shù)據(jù)輸出;⑦CLK芯片時鐘輸入;⑧Vcc/REF電源輸入及參考電壓輸入(復用)。由于ADC0832模數(shù)轉換器的位數(shù)為8位,所以ADC0832模數(shù)轉換器的精度為:10ppm/256=0.039ppm。2.5按鍵電路的設計本系統(tǒng)選擇獨立式按鍵。鍵盤分為:獨立式和矩陣式兩類,每一類按其編碼方法又可以分為編碼和非編碼兩種。本系統(tǒng)具有人機對話功能,該功能即能隨時發(fā)出各種限制吩咐和數(shù)據(jù)輸入以及和LCD連接顯示運行狀態(tài)和運行結果。由于本系統(tǒng)只有UP、DOWN、OK、CANCEL4個限制吩咐,所需按鍵較少,所以本系統(tǒng)選擇獨立式按鍵[13]。電路圖見圖2.8。圖2.8按鍵電路圖2.6外圍擴充存儲器的簡介由于考慮STC89C52單片機具有8KB的程序存儲器(ROM),256B的數(shù)據(jù)存儲器(RAM),由于考慮到本系統(tǒng)的數(shù)據(jù)處理與存儲所需的容量,現(xiàn)在須要擴充存儲器的容量。在應用中要保存一些參數(shù)和狀態(tài),本系統(tǒng)選用AT24C128存儲器[8]。電路圖見圖2.9。圖2.9外圍擴充存儲電路圖2.7上拉電阻電路的設計在主電路圖中接在P0口處有一個排阻RP1,由于P0口沒有內接上拉電阻,為了為P0口外接線路有確定的高電平,所以要接上排阻RP1,以確保有P0口有穩(wěn)定的電平[11]。電路連接圖見圖2.10。圖2.10上拉電阻電路圖2.8液晶顯示器簡介我們選用了AMPIRE128X64液晶顯示模塊,是由于本系統(tǒng)要有顯示裝置完成顯示功能,顯示器最好能夠顯示數(shù)據(jù)、圖形,考慮到同種LCD顯示器的屏幕越大體積越大,功耗越大的特點,該型號顯示器消耗電量比較低,可以滿意系統(tǒng)要求。該類液晶顯示模塊采納動態(tài)的液晶驅動,可用5V供電。AMPIRE128X64液晶共有22個引腳[9]。AMPIRE128X64液晶顯示模塊與計算機的接口電路有兩種方式。分為干脆訪問方式和間接限制方式。干脆訪問方式是把液晶模塊作為存儲器或I/O設備干脆接在單片機的總線上,單片機以訪問存儲器或I/O設備的方式操作液晶顯示模塊的工作。間接限制方式則不運用單片機的數(shù)據(jù)系統(tǒng),而是利用它的I/O口來實與顯示模塊的聯(lián)系。即將液晶顯示模塊的數(shù)據(jù)線與單片機的Pl口連接作為數(shù)據(jù)總線,另外三根時序限制信號線通常利用單片機的P3口中未被運用的I/O口來限制。這種訪問方式不占用存儲器空間,它的接口電路與時序無關,其時序完全靠軟件編程實現(xiàn)。本系統(tǒng)采納間接限制方式[14]。液晶顯示電路連接原理圖見圖下:圖2.11液晶顯示器電路圖2.9報警電路的設計圖2.12報警電路接線圖報警信號通常有三種類型:一是閃光報警,因為閃動的指示燈更能提示人們留意;二是鳴音報警,發(fā)出特定的音響,作用于人的聽覺器官,易于引起和加強警覺;三是語音報警,不僅能起到報警作用,還能干脆給出警報種類的信息。其中,前兩種報警裝置因硬件結構簡潔,軟件編程便利,經常在單片機應用系統(tǒng)中運用;而語音報警雖然警報信息較干脆,但硬件成本高,結構較困難。單頻音報警實現(xiàn)單頻音報警的接口電路比較簡潔,其發(fā)音元件通??刹杉{壓電蜂鳴器,當在蜂鳴器兩引腳上加3~15V直流工作電壓,就能產生3kHZ左右的蜂鳴振蕩音響。壓電式蜂鳴器,約需10mA的驅動電流,可在某端口接上一只三極管和電阻組成的驅動電路來驅動,如圖2.12所示。在圖2.12中,P1.0接三極管基極輸入端,當P1.0輸出高電平“1”時,三極管導通,蜂鳴器的通電而發(fā)音,當P1.0輸出低電平“0”時,三極管截止,蜂鳴器停止發(fā)音[12]。第3章CO檢測系統(tǒng)軟件設計3.1軟件設計結構軟件設計部分主要包括:主程序/子程序流程的設計、功能模塊程序的編寫、軟/硬件結合調試與演示。主要包括以下功能模塊:51驅動、檢測、液晶顯示、時鐘、鍵盤、模數(shù)軟換[10],軟件結構框圖3.1。系統(tǒng)初始化、按鍵掃描顯示選擇菜單測量相關設置數(shù)據(jù)處理串行通信對軟件進行處理圖3.1軟件結構框圖系統(tǒng)初始化、按鍵掃描顯示選擇菜單測量相關設置數(shù)據(jù)處理串行通信對軟件進行處理3.2主程序模塊的設計主程序實現(xiàn)的功能:與硬件相結合實現(xiàn)便攜式一氧化碳檢測儀的各個功能。主要是檢測與顯示,時間調整與顯示,數(shù)據(jù)存儲,功能子函數(shù)的調用,見圖3.2。檢測主程序程序見附錄A2。開始初始化CPU開始初始化CPU初始化時鐘初始化LED屏顯示開機畫面顯示時間顯示主菜單讀鍵圖3.2主程序流程圖3.3模數(shù)轉換的設計ADC0832轉換的流程圖見下圖3.3;ADC0832程序見附錄A3。起先使能芯片起先使能芯片產生時鐘信號輸入通道限制字讀取2字節(jié)數(shù)據(jù)讀取2字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù)校正送入指定寄存器結束圖3.3數(shù)轉換流程圖3.4按鍵模塊的設計和時鐘模塊的設計按鍵查詢式的流程圖見下圖,按鍵程序見附錄A4。按鍵程序入口按鍵按下調用延時程序按鍵釋放NY按鍵程序入口按鍵按下調用延時程序按鍵釋放NYNN鍵值傳送鍵值傳送圖3.4按鍵查詢式的流程圖時鐘模塊操作流程圖見下圖,時鐘程序見附錄A5。起先初始化起先初始化愛護寄存器操作向DS寫入字節(jié)數(shù)據(jù)向DS讀取字節(jié)數(shù)據(jù)結束圖3.5時鐘模塊操作流程圖3.5液晶顯示模塊的設計LCD模塊在本系統(tǒng)中主要起著開界面漢字顯示,以及各限制效果的顯示。采納干脆訪問方式。液晶顯示的操作流程圖見下圖3.6,液晶程序見附錄A6。入口入口讀狀態(tài)字讀狀態(tài)字否忙?忙?是寫指令代碼寫指令代碼/顯示數(shù)據(jù)讀顯示數(shù)據(jù)圖3.6液晶顯示的操作流程圖系統(tǒng)調試及功能實現(xiàn)4.1總體系統(tǒng)調試軟件調試打開keil軟件,打開程序,檢查后單擊編譯按鍵,假如未發(fā)覺錯誤和警告則說明程序能夠正常運行。編譯結果如圖所示:圖4.1軟件編譯結果圖所以程序能夠正常運行。4.1.2軟件下載通過串口將電腦中已經編寫好的程序傳輸入51單片機中,打開電源,檢查各模塊是否正常工作。首先將STC_ISP_V483這個串口通信軟件打開,選擇打開程序文件選項,找到須要錄入單片機的hex文件,選擇下載選項,點擊后給單片機上電復位,等待信息框中顯示已下載勝利,說明程序已經錄入單片機。接下來首先通過按鍵選擇工作模式,然后依據(jù)傳感器模塊的類型將相應的氣體放置在傳感器探頭旁邊,等待聲光報警模塊工作,當報警模塊工作后,通過按下外部中斷按鍵選擇報警模式,按一下則led二極管關閉,按其次下則蜂鳴器關閉,按第三下則led和蜂鳴器都打開。將三個傳感器模塊都檢查完畢后,按下復位鍵,并關閉電源。通過監(jiān)測總體系統(tǒng)能夠正常工作。4.2實物展示焊接成品如下圖4.2所示:4.2焊接成品圖在焊接過程中,本設計采納萬能板來焊接,同時外接電源采納的是USB供電。接通電源初始圖如4.3所示:4.3接通電源初始圖在電源剛接通時,液晶屏顯示當前CO濃度為000PM,設置的界限值為100PM,風扇處于未轉動狀態(tài),發(fā)光二極管未亮并且蜂鳴器不報警。系統(tǒng)工作時如圖4.4所示:4.4工作實物圖當CO傳感器檢測到的CO濃度大于國家標準值100ppm時,蜂鳴器報警同時紅色指示燈發(fā)光、風扇轉動。結論本次設計的任務是設計制作CO濃度檢測報警器,設計中運用了低電壓、高性能CMOS8位微處理器STC89C52單片機作為限制核心,總體電路具有運行速度快,穩(wěn)定,結構簡潔,散熱快速等特點,采納模塊化設計,這樣不僅有利于系統(tǒng)硬件的設計和調試,同時也便利對系統(tǒng)進行更改和系統(tǒng)硬件的升級。CO/CF-1000氣體傳感器模塊的特點在于其簡易性和高效性,由于其輸出口在監(jiān)測到有害氣體時干脆輸出低電平,這樣就免去了從氣體傳感器上采集信號,這樣硬件設計更加簡潔,所需的器件也更加易于購買,硬件出錯率也就更小,更加符合本設計的目的。本次設計涉及到的學問面較多,由于本人理論水平和實踐閱歷有限,本次設計還存在一些有待改進和優(yōu)化的地方,比如在檢測氣體種類上可以增加對煙霧、NO等方面。在好用性方面可以考慮將濃度監(jiān)測系統(tǒng)與室內換氣系統(tǒng)連接,這樣就不僅做到了氣體監(jiān)測和警報,還做到了對有害氣體剛好處理,使整個室內監(jiān)控系統(tǒng)更加完善。參考文獻[1]何立民.MCS-51系列單片機應用系統(tǒng)設計[M].北京航空航天高校出版社,1990,34-50.[2]馬忠梅.單片機的C語言應用程序設計[M].北京航空航天高校出版社,2001,60-90.[3]陳小忠.單片機接口技術好用子程序[M].人民郵電高校出版社,2005,80-120.[4]張淑清.單片微型計算機接口技術及其應用[M].國防工業(yè)高校出版社,2001,60-70.[5]曹琳琳.單片機原理及接口技術[M].國防科技高校出版社,2000,80-102.[6]郭天祥.新概念51單片機C語言教程[M].北京:電子工業(yè)出版社,2009,120-140.[7]周航慈.單片機應用程序設計技術[M].北京:北京航空航天高校出版社,2011,70-103.[8]石秀名.嵌入式系統(tǒng)原理與應用[M].北京:北京航空航天高校出版社,2009,30-50.[9]王宜懷.嵌入式技術基礎與實踐[M].北京:北京航空航天高校出版社,2007,90-100.[10]譚浩強.C程序設計[M].第四版.北京:清華高校出版社,2010,87-90.[11]陳志旺.51系列單片機系統(tǒng)設計與實踐[M].北京:電子工業(yè)出版社,2008,98-115.[12]余錫存,曹國華.單片機原理及接口技術.其次版.西安:西安電子科技高校出版社,2012,150-170.[13]徐煜明.單片機原理及接口技術[M].電子工業(yè)出版社,2005,110-140.[14]趙新民.智能儀器原理及設計[M].哈爾濱工業(yè)高校出版社,1995,67-98.[15]徐英慧.嵌入式系統(tǒng)設計[M].北京航空航天高校出版社,2010,35-60.致謝我的畢業(yè)課題是便攜式一氧化碳檢測儀的設計,是一個實際的小工程。作為一個本科的學生,我對實際的工程設計相識不夠,閱歷不足,難免在設計的整體框架中,有很多的細微環(huán)節(jié)沒有考慮。但**老師和同學們賜予我激勵和很多珍貴的建議,并且悉心引導,賜予我一個比較清楚的設計思路,幫助我解決了很多設計上的困難。最終還要感謝在百忙之中進行論文評審的老師們,對論文的不足之處敬請指責點。附錄附錄A1硬件設計總體電路圖附錄A2檢測主程序程序#include<STC89X52.H>//調用外函數(shù)//#include<ctype.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<math.h>#include<LCD.h>/**********初始化CPU************[2]/voidinit_cpu()//初始化cpu{EA=1; TR0=1; TR1=1; TMOD=0x11; TH1=0x3c; TL1=0xb0;}/*voidtime1(void)interrupt3using1 {TH1=(65536-50000)/256; TL1=(65536-50000)%256;keyval=P1;}*//初始化CPU結束//voidmain_menu_initial() //LCD主菜單初始化.//{ main1_menu[0].menu_count=4; //有4個菜單項.// main1_menu[0].display=measurearray;//定義一個”起先測量“數(shù)組// main1_menu[0].subs=NULL; main1_menu[0].children_menus=measure_menu; //當前菜單子菜單的指針 main1_menu[0].parent_menus=NULL;}voidmeasure_menu_initial()//“起先測量”菜單設置//{measure_menu[0].menu_count=2;measure_menu[0].display=qr; //起先測量函數(shù),確認. measure_menu[0].subs=start_measure_function;//起先測量函數(shù) measure_menu[0].children_menus=NULL; measure_menu[0].parent_menus=main1_menu; measure_menu[1].menu_count=2; measure_menu[1].display=qx; //起先測量函數(shù),取消.measure_menu[1].subs=NULL;measure_menu[1].children_menus=NULL; measure_menu[1].parent_menus=main1_menu; }//還有voidstore_menu_initial()、voidtime_menu_initial()//voidled_menu_pro(){ max_item=menu_led->menu_count; switch(keyval) { case0:break; case1: //向上鍵. if(user_choosen==0) { user_choosen=max_item; } shuaxin=1; user_choosen--; break; }……//“向上”“向下”“確認”“取消”鍵//if(shuaxin) //是否須要刷新LCD標記位. {Clr_Scr(); shuaxin=0; } led_menu_show(); }voidled_menu_show() { ucharn; max_item=menu_led->menu_count; if(max_item>=4) //菜單項為3則表示為主菜單. { for(n=0;n<4;n++) {draw_bmp(n*2,20,96,0,menu_led[n].display); } select_item(user_choosen); //標記出當前菜單項. } else { switch(temp_choosen) {case0: draw_bmp(0,20,96,0,measurearray);//“起先測量”數(shù)組// break; …… default: break; } for(n=0;n<max_item;n++) { draw_bmp((n+1)*2,20,32,0,menu_led[n].display); } select_item(user_choosen+1); } } voidselect_item(ucharn){ draw_bmp(n*2,2,16,0,curflag);}voidstart_measure_function(void)//起先測量函數(shù)//{main_Menu();}/*主函數(shù)*/main(){init_cpu();Init_Clock();init_lcd();Disp_Img(FirstPage);delay(2000);//延時//ClockMsg();Refresh();delay(2500);Clr_Scr();main_Menu();Clr_Scr();main_menu_initial();measure_menu_initial();store_menu_initial();time_menu_initial();communication_menu_initial(); while(1){keyval=get_key(); //讀鍵. led_menu_pro();}}//適當延時防止因為不斷查忙而耗費大量CUP資源//附錄A3ADC0832程序#defineuintunsignedint//常量/變量定義//uchark,i,j;floatxdatalv;sbitADCS=P3^1;//ADC0832chipseclect//接口定義//……//其它引腳略……ucharxdatadsw[20];//存放sprintf轉換字符ucharxdatavalue[149];//點陣字符儲存ucharcodetable[]={//字符查表0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",0*/……};//采集并返回unsignedintAdc0832(unsignedcharchannel)//AD轉換,返回結果[6]{uchari=0;ucharj;uintdat=0;ucharndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3ADDI=1;//限制吩咐結束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收數(shù)據(jù)ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次時鐘脈沖_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收數(shù)據(jù)ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次時鐘脈沖_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)dat<<=8;dat|=ndat;return(dat);//returnadk}/*點陣字符采集函數(shù)*/voidtra(uchar*p)//數(shù)組dsp[]里面的字符查詢后,再儲儲存到另一個顯示數(shù)組value[]voidmain_Menu(){Clr_Scr();//先清屏//CS2=1;CS1=0;hz_disp16(0,32,1,jiaquan);……//甲//醛//測//量//數(shù)//據(jù)//存//儲//……delay(2000);do{/*k=Adc0832(0);//AD轉換結果l=k/255.0*100.0; ltemp=floor(l); dsw[0]=ltemp/10; dsw[1]=ltemp%10;//sprintf(dsw,"%2.3f",l);//dsw[0]=1;switch(dsw[0]){case0:sz_disp16(2,32,1,sz0);break;case1:……sz_disp16(2,32,1,sz9);}switch(dsw[1]){case0:sz_disp16(2,40,1,sz0);break;case1:……sz_disp16(2,40,1,sz9);}*///sz_disp16(2,40,1,sz0);/*tra(dsw); CS2=1;CS1=0;sz_disp16(2,56,1,value); */}while(P1_3);}附錄A4按鍵程序#definenullkey0//定義//……ucharget_key()//讀鍵//{ ucharpass,kcodebuf; staticucharlastkcode,keytime=0; //定義為靜態(tài)變量,外部不行見,但須要常駐內存. staticucharhavekey=0; staticucharkeylock=0; kcodebuf=P1&0xff; keytime++; if(kcodebuf!=lastkcode)keytime=0; if(kcodebuf==0xff){havekey=0; keylock=0; keytime=0; pass=0;} …… elsepass=nusekey; lastkcode=kcodebuf;return(pass);} /*ucharget_key() elsepass=nusekey;return(pass);}*/附錄A5時鐘程序/*引腳連接*/sbitRST2=P3^5;//復位線引腳//sbitCLK=P3^6;//時鐘線引腳//……//其它引腳略……/*定義時間日期顯示緩存*/unsignedcharCurtime[7];idataunsignedcharday,sec,min,hour,date,month,year,hms,n,fla_cou;Unsignedcharcodeyejing[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};/*子函數(shù)聲明(時鐘部分)*/[7]voidInputByte(unsignedcharDate);voidWriteTo1302(unsignedcharAddr,unsignedcharDate);ReadFrom1302(unsignedcharAddr);voidSetTime(unsignedchar*pSecDa);voidGetTime(unsignedcharCurtime[]);voidInit_T0(void);voidFlashKey(void);voidAdd(void);voidInit_Clock(void);voidRefresh(void);voidStartMenu(void)/*時鐘固定漢字顯示*/voidClockMsg(void){Clr_Scr();//先清屏CS2=1;CS1=0;//左屏hz_disp16(1,32,1,xing);……//星//期//2//0//年//時CS2=0;CS1=1;//右屏hz_disp16(3,0,1,yue);……//月//日//分//秒}/*時鐘部分*//*函數(shù):寫入字節(jié)子函數(shù)*/voidInputByte(unsignedchardat){unsignedchari;ACC=dat;for(i=8;i>0;i--){IO=ACC0;CLK=1;//下降沿寫入數(shù)據(jù)//CLK=0;ACC=ACC>>1;}}/*函數(shù):讀出字節(jié)子函數(shù)*/OutputByte(void)//上升沿讀出數(shù)據(jù)//……/*函數(shù):設置初始時間*/voidSetTime(unsignedchar*pSecDa){……WriteTo1302(0x8e,0x00);//限制吩咐,WP=0,寫操作//for(i=7;i>0;i--){WriteTo1302(Addr,*pSecDa);//秒分時日月星期年//pSecDa++;Addr+=2;}WriteTo1302(0x8e,0x80);//限制吩咐,WP=1,寫愛護//}/*函數(shù):讀取DS1302當前時間*/voidGetTime(void){……for(i=0;i<7;i++){Curtime[i]=ReadFrom1302(Addr);Addr+=2;}sec=Curtime[0];……//Min//hour//day//date//month//year}/*函數(shù):初始化定時器T0子函數(shù)*/voidInit_T0(void){TMOD=0x01;//定時器T0,工作模式1//TH0=0x3c;//50ms//……}/*函數(shù):產生閃耀信號子函數(shù)*/voidT0_flash(void)interrupt1//中斷程序,產生時鐘秒信號///*函數(shù):時間閃耀子函數(shù)*//*功能:選擇確定閃耀位等待調整*/voidFlashKey(void)//閃耀子函數(shù)//voidAdd(void)//調時子函數(shù)//voidInit_Clock(void)//時鐘初始化子函數(shù)//voidRefresh(void)//刷新顯示子函數(shù)//voidAdd(void)//調時子函數(shù)//{if(P1_2==0)//按P0_2鍵進行時間調整//{while(P1_2==0)Refresh();if(KT==1)//檢驗可調標記位KT//{hms++;switch(n){case1:year=hms;break;//依據(jù)n不同,返回給不同的位:n=1->返回給小時位//……}if((sec&0x0f)==0x0a){sec&=0xf0;sec+=0x10;}//假如秒位滿十,向十秒位進一……if(day==8){day=1;}//假如星期滿七,重新從星期一起先計//if((sec&0xf0)==0x60){sec&=0x0f;}//假如十秒位滿六,清零//if(((date&0xf0)==0x30)&((date&0x0f)==0x02)){date&=0x00;} if(((month&0xf0)==0x10)&((month&0x0f)==0x03)){month&=0x00;} if((year&0xf0)==0xa0){year&=0x0f;}Curtime[0]=sec;Curtime[1]=min;……SetTime(&Curtime[0]);//將調整過后的時間值寫入DS1302//}/*時鐘初始化子函數(shù)*/voidInit_Clock(void){K1=1;K2=1;K3=1;K4=1;K5=1;K6=1;K7=1;KT=0;n=0;Init_T0();}/*刷新顯示子函數(shù)*/voidRefresh(void){GetTime();CS1=1;CS2=0;if(K6){sz_disp16(5,40,1,shuzi[sec&0x0f]);//秒位//sz_disp16(5,32,1,shuzi[sec>>4]);}//十秒位//else{hz_disp16(5,32,1,kongbai2);}//秒位十秒位//if(K5){sz_disp16(5,8,1,shuzi[min&0x0f]);//分鐘位//sz_disp16(5,0,1,shuzi[min>>4]);}//非常位//else{hz_disp16(5,0,1,kongbai2);}/*狀態(tài)推斷于提示*/voidState(void){CS1=1;CS2=0;if(KT==1){hz_disp16(1,32,1,tiao); hz_disp16(1,48,1,shi2);}else{hz_disp16(1,32,1,kongbai2); hz_disp16(1,48,1,kongbai2);}附錄A6液晶程序/*位定義*/sbitRST=P2^0;//復位端//sbitE=P2^1;//使能端//……#defineDisp_On0x3f//顯示開指令//#defineDisp_Off0x3e//顯示關指令//#defineCol_Add0x40//定位到第0列指令//#definePage_Add0xb8//定位到第0頁指令//#defineStart_Line0xc0//定位從DDROM中的第0行起先往屏幕上顯示unsignedcharcodemeasurearray[] /*調入了一幅圖像:測量:寬度x高度=96x16*/unsignedcharc

溫馨提示

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

評論

0/150

提交評論