河南科技大學(xué)畢業(yè)設(shè)計(jì)(論文)
前 言
一、課題研究的目的及意義
空氣質(zhì)量的好壞反映了空氣污染程度,它是依據(jù)空氣中污染物濃度的高低來判斷的。來自固定和流動污染源的人為污染物排放大小是影響空氣質(zhì)量的最主要因素之一?諝赓|(zhì)量檢測種類包括裝修污染、辦公室內(nèi)空氣檢測、作業(yè)場所有害物質(zhì)檢測、食堂油煙檢測、鍋爐大氣及工業(yè)窯爐檢測及工廠排放工業(yè)廢氣檢測。
當(dāng)今,人類正面臨“煤煙污染”、“光化學(xué)煙霧污染”之后,又出現(xiàn)了“室內(nèi)空氣污染”為主的第三次環(huán)境污染。美國專家檢測發(fā)現(xiàn),在室內(nèi)空氣中存在500多種揮發(fā)性有機(jī)物,其中致癌物質(zhì)就有20多種,致病病毒200多種。危害較大的主要有:氡、甲醛、苯、氨以及酯、三氯乙烯等。大量觸目驚心的事實(shí)證實(shí),室內(nèi)空氣污染已成為危害人類健康的“隱形殺手”,也成為全世界各國共同關(guān)注的問題。據(jù)統(tǒng)計(jì),全球近一半的人處于室內(nèi)空氣污染中,室內(nèi)環(huán)境污染已經(jīng)引起35.7%的呼吸道疾病,22%的慢性肺病和15%的氣管炎、支氣管炎和肺癌。
本課題主要研究設(shè)計(jì)基于量化檢測的“空氣質(zhì)量檢測儀”系統(tǒng),此系統(tǒng)旨在實(shí)現(xiàn)室內(nèi)空氣溫度、濕度、有害氣體的預(yù)警監(jiān)測,有利于進(jìn)行全方位的評價(jià)室內(nèi)空氣質(zhì)量,為人類營造一個(gè)健康的室內(nèi)生存空間?諝赓|(zhì)量檢測儀體積小,功耗低,操作簡單,適合應(yīng)用于家庭和社區(qū)的醫(yī)療健康保健,能夠?qū)崟r(shí)知道室內(nèi)空氣的質(zhì)量。
二、國內(nèi)外的研究狀況
氣體傳感器測定甲醛成為近年來甲醛檢測研究的新熱點(diǎn)。早在1983年,壓電類甲醛傳感器就已問世。這種傳感器可以不需要對樣品進(jìn)行任何處理就可以測定,但易受水分子的影響而使晶體震動頻率發(fā)生漂移,故基本無實(shí)用性。為適應(yīng)室內(nèi)空氣甲醛現(xiàn)場快速檢測的要求,目前已開發(fā)出不少甲醛快速測定儀,這些儀器可直接在現(xiàn)場測定甲醛濃度,操作方便,適用于室內(nèi)和公共場所空氣中甲醛濃度的現(xiàn)場測定,也適用于環(huán)境測試艙法測定木質(zhì)板材中的甲醛釋放量。但這些儀器的工作原理、響應(yīng)性能、適應(yīng)范圍等都不同。
在測試甲醛、苯等害氣體方面,國外比較出名的有:美國ESC公司生產(chǎn)的Z一300甲醛檢測儀、英國PPM公司生產(chǎn)的PPM-400甲醛檢測儀;國內(nèi)的有:江蘇安普電子工程有限公司生產(chǎn)的400型甲醛分析儀、北京賓達(dá)綠創(chuàng)科技有限公司生產(chǎn)的甲醛測定儀抑一308等。
這些儀器可實(shí)現(xiàn)對有害氣體的檢測功能,適用于專業(yè)檢測機(jī)構(gòu)或?qū)嶒?yàn)研究機(jī)構(gòu)。準(zhǔn)確測定甲醛、苯、氨等有害氣體的設(shè)備昂貴(如英國PPM公司生產(chǎn)的PPM400甲醛儀約兩萬多元),測定時(shí)間較長,每隔一段時(shí)間就需進(jìn)行重新標(biāo)定,需要專業(yè)人員進(jìn)行操作,很難連續(xù)測定;目前國內(nèi)外產(chǎn)品的設(shè)計(jì)差異主要集中在監(jiān)測傳感器和控制單片機(jī)芯片的選用,操作方面國外的產(chǎn)品操作界面方便,功能加完備。
- 本課題的主要研究內(nèi)容、方法及總體設(shè)計(jì)
§1.1 課題設(shè)計(jì)的內(nèi)容
以單片機(jī)為核心,選擇合適的傳感器,實(shí)現(xiàn)對空氣質(zhì)量的檢測。
§1.2課題設(shè)計(jì)的方法
查閱相關(guān)資料,應(yīng)用電腦軟件進(jìn)行仿真、調(diào)試,制作硬件設(shè)備,在實(shí)際環(huán)境中測試并進(jìn)行修改、調(diào)試,直至達(dá)到課題要求。
§1.3總體方案設(shè)計(jì)
本設(shè)計(jì)集VOC氣體及溫濕度監(jiān)測,顯示與報(bào)警于一體,利用MCU進(jìn)行數(shù)據(jù)采集保證了前臺數(shù)據(jù)的及時(shí)、準(zhǔn)確,有利于進(jìn)行全方位的評價(jià)。儀器采用鋰電池供電,具有良好的便攜性和通用性,并且使用LCD點(diǎn)陣式液晶屏顯示菜單,有良好的人機(jī)對話界面。
§1.3.1系統(tǒng)框圖
圖1-1 系統(tǒng)總框圖
§1.3.2功能設(shè)定
- 顯示部分采用LCD1602顯示屏,循環(huán)顯示各項(xiàng)測量值的上下限及實(shí)際濃度、實(shí)際溫度、濕度。并在按鍵選擇情況下連續(xù)顯示一個(gè)測量值的變化。
- 當(dāng)有害氣體濃度超出安全范圍時(shí)進(jìn)行聲光報(bào)警。
- 按鍵操作可進(jìn)行測量值范圍的調(diào)整,及手動和自動測量的轉(zhuǎn)換。
第2章 空氣質(zhì)量檢測儀的硬件設(shè)計(jì)
§2.1 空氣質(zhì)量檢測儀系統(tǒng)簡介
基于STC90C51的室內(nèi)便攜式智能空氣質(zhì)量監(jiān)測儀是以室內(nèi)空氣中有毒有害氣體的監(jiān)測監(jiān)控為背景,能夠?qū)崿F(xiàn)對室內(nèi)溫度,濕度,VOC氣體的實(shí)時(shí)采集處理、顯示、報(bào)警等功能。儀器采用鋰電池供電,具有良好的便攜性和通用性,并且使用LCD點(diǎn)陣式液晶屏顯示菜單,有良好的人機(jī)對話界面。同時(shí)設(shè)計(jì)了聲光報(bào)警系統(tǒng),實(shí)現(xiàn)在參數(shù)超標(biāo)時(shí)及時(shí)的報(bào)警。室內(nèi)智能空氣品質(zhì)監(jiān)測儀體積小,功耗低,操作簡單,適合應(yīng)用于家庭和社區(qū)的醫(yī)療健康保健,能夠?qū)崟r(shí)知道室內(nèi)空氣的質(zhì)量。
§2.1.1 系統(tǒng)硬件結(jié)構(gòu)及原理
本文研究的室內(nèi)便攜式智能空氣品質(zhì)監(jiān)測儀是以STC工公司的一款8位超低功耗單片機(jī)STC90C51為控制核心。室內(nèi)空氣中有害氣體通過傳感器輸出一個(gè)與氣體濃度相對應(yīng)的電壓信號,該信號經(jīng)過A/D轉(zhuǎn)換電路按一定得采樣頻率將模擬信號轉(zhuǎn)換為數(shù)字信號送入單片機(jī)進(jìn)行數(shù)據(jù)采集以便進(jìn)行顯示處理,溫濕傳感器直接與單片機(jī)相連。單片機(jī)對采樣值進(jìn)行數(shù)字處理后驅(qū)動液晶顯示器分別顯示出被測室內(nèi)空氣中的VOC氣體濃度值及溫濕度。若被測室內(nèi)空氣中VOC氣體的濃度有超過國家標(biāo)準(zhǔn)或設(shè)定的危險(xiǎn)值或溫濕度超出設(shè)定范圍時(shí)報(bào)警電路對應(yīng)的發(fā)出聲光報(bào)警信號。
§2.2 STC90C51單片機(jī)簡介
隨著計(jì)算機(jī)技術(shù)的發(fā)展,單片機(jī)因具有集成度高、體積小、速度快、價(jià)格低等特點(diǎn)而在許多領(lǐng)域如過程控制、數(shù)據(jù)采集、機(jī)電一體化、智能化儀表、家用電器以及網(wǎng)絡(luò)技術(shù)等方面得到廣泛應(yīng)用,從而使這些領(lǐng)域的技術(shù)水平、自動化程度大大提高。根據(jù)上述幾方面及本課題的實(shí)際情況,單片機(jī)型號的選擇主要從以下兩點(diǎn)考慮:
一是要有較強(qiáng)的抗干擾能力。由于一般室內(nèi)電子電器產(chǎn)品比較多,這對單片機(jī)的干擾較大,所以應(yīng)采用抗干擾性能較好的單片機(jī)機(jī)型。
二是要有較高的性價(jià)比。由于高度的通用性和出色的穩(wěn)定性,本系統(tǒng)采用宏晶公司產(chǎn)的低功耗,高性能CMOS 8位單片機(jī)的STC90C51作為控制器。片內(nèi)含4k bytes的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲器既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,可提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。
§2.2.1STC90C51主要性能參數(shù):
- 與MCS.51產(chǎn)品指令系統(tǒng)完全兼容
- 4k字節(jié)在系統(tǒng)編程(ISP)Flash閃速存儲器
- 1000次擦寫周期
- 4.0-5.5V的工作電壓范圍
- 全境態(tài)工作模式:0Hz-33MHz
- 三級程序加密鎖
- 128×8字節(jié)內(nèi)部RAM
- 32個(gè)可編程I/O口線
- 2個(gè)16位定時(shí)器/計(jì)數(shù)器
10、6個(gè)中斷源
11、全雙工串行UART通道
12、低功耗空閑和掉電模式
13、中斷可從空閑模喚醒系統(tǒng)
14、看門狗(wDT)及雙數(shù)據(jù)指針
15、掉電標(biāo)識和快速編程特性
16、靈活的在線系統(tǒng)編程
STC90C51芯片管腳如圖2-1。
圖2-1 STC90C51引腳布置
§2.2.2時(shí)鐘電路模塊
時(shí)鐘電路由一個(gè)晶體振蕩器12MHZ和兩個(gè)30pF的瓷片電容組成。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號,而時(shí)序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。單片機(jī)本身就如一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號控制下嚴(yán)格地工作。其電路如圖2-2所示:
圖2-2 時(shí)鐘電路模塊
§2.2.3復(fù)位電路模塊
復(fù)位電路是使單片機(jī)的CPU或系統(tǒng)中的其他部件處于某一確定的初始狀態(tài),并從這狀態(tài)開始工作,除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位電路以重新啟動。本設(shè)計(jì)采用的是按鍵復(fù)位電路。其電路如圖2-3所示:
圖2-3 復(fù)位電路模塊
§2.3傳感器的選用
§2.3.1氣體傳感器
1.氣體傳感器基礎(chǔ)知識
按照氣敏特性來分,氣體傳感器主要分為:半導(dǎo)體型、電化學(xué)型、固體電解質(zhì)型、接觸燃燒型、光化學(xué)型等氣體傳感器,又以前兩種最為普遍。
(1)半導(dǎo)體型氣體傳感器的優(yōu)缺點(diǎn)
半導(dǎo)體氣體傳感器具有成本低廉、制造簡單、靈敏度高、響應(yīng)速度快、壽命長、對濕度敏感低和電路簡單等優(yōu)點(diǎn)。不足之處是必須在高溫下工作、對氣體或氣味的選擇性差、元件參數(shù)分散、穩(wěn)定性不理想、功率高等方面。
(2)半導(dǎo)體傳感器需要加熱的原因
半導(dǎo)體傳感器是利用一種金屬氧化物薄膜制成的阻抗器件,其電阻隨著氣體含量不同而變化。氣體分子在薄膜表面進(jìn)行還原反應(yīng)以引起傳感器電導(dǎo)率的變化。為了消除氣體分子達(dá)到初始狀態(tài)就必須發(fā)生一次氧化反應(yīng)。傳感器內(nèi)的加熱器可以加速氧化過程,這也是為什么有些低端傳感器總是不穩(wěn)定,其原因就是沒有加熱或加熱電壓過低導(dǎo)致溫度太低反應(yīng)不充分。
(3)電化學(xué)氣體傳感器的工作原理
電化學(xué)氣體傳感器是通過監(jiān)測電流來監(jiān)測氣體的濃度,分為不需供電的原電池式以及需要供電的可控電位電解式,目前可以監(jiān)測許多有毒氣體和氧氣,后者還能監(jiān)測血液中的氧濃度。電化學(xué)傳感器的主要優(yōu)點(diǎn)是氣體的高靈敏度以及良好的選擇性。不足之處是有壽命的限制一般為兩年。
(4)半導(dǎo)體傳感器和電化學(xué)傳感器的區(qū)別
半導(dǎo)體傳感器因其簡單低價(jià)已經(jīng)得到廣泛應(yīng)用,但是又因?yàn)樗倪x擇性差和穩(wěn)定性不理想目前還只是在民用級別使用。而電化學(xué)傳感器因其良好的選擇性和高靈敏度被廣泛應(yīng)用在幾乎所有工業(yè)場合。
(5)固態(tài)電解質(zhì)氣體傳感器
顧名思義,固態(tài)電解質(zhì)就是以固體離子導(dǎo)電為電解質(zhì)的化學(xué)電池。它介于半導(dǎo)體和電化學(xué)之間。選擇性,靈敏度高于半導(dǎo)體而壽命又長于電化學(xué),所以也得到了很多的應(yīng)用,不足之處就是響應(yīng)時(shí)間過長。
(6)接觸燃燒式氣體傳感器
接觸燃燒式氣體傳感器只能測量可燃?xì)怏w。又分為直接接觸燃燒式和催化接觸燃燒式,原理是氣敏材料在通電狀態(tài)下,可燃?xì)怏w在表面或者在催化劑作用下燃燒,由于燃燒使氣敏材料溫度升高從而電阻發(fā)生變化。后者因?yàn)榇呋瘎┑年P(guān)系具有廣普特性應(yīng)用更廣。
(7)光學(xué)式氣體傳感器
光學(xué)式氣體傳感器主要包括紅外吸收型、光譜吸收型、熒光型等等,主要以紅外吸收型為主。由于不同氣體對紅外波吸收程度不同,通過測量紅外吸收波長來監(jiān)測氣體。目前因?yàn)樗慕Y(jié)構(gòu)關(guān)系一般造價(jià)頗高。基于本文的實(shí)時(shí)要求和性價(jià)比等方面的原因,本系統(tǒng)選用電化學(xué)傳感器中的定電位電解式氣體傳感器。
本設(shè)計(jì)針對VOC氣體選用能夠偵測0.1ppm以上的氣體的空氣質(zhì)量VOC氣體濃度傳感器MS1100用于檢測空氣中的甲醛、苯、二甲苯等檢測空氣中的甲醛、苯、二甲苯等多種有機(jī)揮發(fā)成分,具有極高的靈敏度和穩(wěn)定性,體積小巧。實(shí)物如圖2-4,使用時(shí)的連接電路如圖2-5。
圖2-4 VOC傳感器實(shí)物圖 圖2-5 VOC傳感器接線圖
§2.3.2溫濕度傳感器
溫濕度傳感器是指能將溫度量和濕度量轉(zhuǎn)換成容易被測量處理的電信號的設(shè)備或裝置。溫濕度傳感器一般是測量溫度量和相對濕度量。
鑒于測量溫濕度的范圍不大,精度要求不高故采用數(shù)字溫濕度傳感器DHT11。實(shí)物如圖2-6。
圖2-6 DHT11實(shí)物圖
具有的特性:相對濕度和溫度測量、全部校準(zhǔn),數(shù)字輸出、卓越的長期穩(wěn)定性、無需額外部件、超長的信號傳輸距離、超低能耗、4引腳安裝、完全互換。
DHT11產(chǎn)品概述
DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。
應(yīng)用領(lǐng)域:
暖通空調(diào)、測試及檢測設(shè)備、汽車、數(shù)據(jù)記錄器、消費(fèi)品、自動控制、氣象站、家電、濕度調(diào)節(jié)器、醫(yī)療、除濕器。
傳感器信息見表2-1。
表2-1 DHT11傳感器信息
表2-2 傳感器性能說明
2、 接口說明
建議連接線長度短于20米時(shí)用5K上拉電阻,大于20米時(shí)根據(jù)實(shí)際情況使用合適的上拉電阻接線方式如圖2-7。
圖2-7 典型接線電路
3、電源引腳
DHT11的供電電壓為 3-5.5V。傳感器上電后,要等待 1s 以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個(gè)100nF 的電容,用以去耦濾波。
4、串行接口 (單線雙向)
DATA 用于微處理器與 DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當(dāng)前小數(shù)部分用于以后擴(kuò)展,現(xiàn)讀出為零.操作流程如下:
一次完整的數(shù)據(jù)傳輸為40bit,高位先出。
數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和
數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號結(jié)束后,DHT11發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分?jǐn)?shù)據(jù)。從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機(jī)發(fā)送開始信號,DHT11不會主動進(jìn)行溫濕度采集,采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。
(1).通訊過程如圖2-8所示
圖2-8 通訊過程
操作時(shí)序如圖2-9,總線空閑狀態(tài)為高電平,主機(jī)把總線拉低等待DHT11響應(yīng),主機(jī)把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機(jī)的開始信號后,等待主機(jī)開始信號結(jié)束,然后發(fā)送80us低電平響應(yīng)信號。主機(jī)發(fā)送開始信號結(jié)束后,延時(shí)等待20-40us后,讀取DHT11的響應(yīng)信號,主機(jī)發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉高。
圖2-9 操作時(shí)序
總線為低電平,說明DHT11發(fā)送響應(yīng)信號,DHT11發(fā)送響應(yīng)信號后,再把總線拉高80us,準(zhǔn)備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時(shí)隙開始,高電平的長短定了數(shù)據(jù)位是0還是1。格式見下面圖示,如果讀取響應(yīng)信號為高電平,則DHT11沒有響應(yīng),請檢查線路是否連接正常。當(dāng)最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進(jìn)入空閑狀態(tài)。
數(shù)字0信號表示方法如圖2-10所示
圖2-10 數(shù)字0信號表示方法
數(shù)字1信號表示方法如圖2-11所示
圖2-11 數(shù)字1信號表示方法
5、測量分辨率
測量分辨率分別為 8bit(溫度)、8bit(濕度)。
6、電氣特性如表2-3
表2-3 電氣特性
注:采樣周期間隔不得低于1秒鐘。
7、應(yīng)用信息
7.1工作與貯存條件
超出建議的工作范圍可能導(dǎo)致高達(dá)3%RH的臨時(shí)性漂移信號。返回正常工作條后,傳感器會緩慢地向校準(zhǔn)狀態(tài)恢復(fù)。要加速恢復(fù)進(jìn)程/可參閱7.3小節(jié)的“恢復(fù)處理”。在非正常工作條件下長時(shí)間使用會加速產(chǎn)品的老化過程。
7.2暴露在化學(xué)物質(zhì)中
電阻式濕度傳感器的感應(yīng)層會受到化學(xué)蒸汽的干擾,化學(xué)物質(zhì)在感應(yīng)層中的擴(kuò)散可能導(dǎo)致測量值漂移和靈敏度下降。在一個(gè)純凈的環(huán)境中,污染物質(zhì)會緩慢地釋放出去。下文所述的恢復(fù)處理將加速實(shí)現(xiàn)這一過程。高濃度的化學(xué)污染會導(dǎo)致傳感器感應(yīng)層的徹底損壞。
7.3恢復(fù)處理
置于極限工作條件下或化學(xué)蒸汽中的傳感器,通過如下處理程序,可使其恢復(fù)到校準(zhǔn)時(shí)的狀態(tài)。在50-60℃和< 10%RH的濕度條件下保持2小時(shí)(烘干);隨后在20-30℃和>70%RH的濕度條件下保持5小時(shí)以上。
7.4溫度影響
氣體的相對濕度,在很大程度上依賴于溫度。因此在測量濕度時(shí),應(yīng)盡可能保證濕度傳感器在同一溫度下工作。如果與釋放熱量的電子元件共用一個(gè)印刷線路板,在安裝時(shí)應(yīng)盡可能將DHT11遠(yuǎn)離電子元件,并安裝在熱源下方,同時(shí)保持外殼的良好通風(fēng)。為降低熱傳導(dǎo),DHT11與印刷電路板其它部分的銅鍍層應(yīng)盡可能最小,并在兩者之間留出一道縫隙。
7.5光線
長時(shí)間暴露在太陽光下或強(qiáng)烈的紫外線輻射中,會使性能降低。
7.6配線注意事項(xiàng)
DATA信號線材質(zhì)量會影響通訊距離和通訊質(zhì)量,推薦使用高質(zhì)量屏蔽線。
8、封裝信息如圖2-12,
圖2-12 DHT11封裝圖
表2-4 引腳說明
本設(shè)計(jì)采用的為DHT11模塊,原理圖為圖2-13:
圖2-13 DHT11模塊接線圖
§2.4模數(shù)轉(zhuǎn)換電路設(shè)計(jì)
氣體傳感器出來的信號是模擬信號,而微處理器STC90C51只能處理數(shù)字信號,故需要對模擬信號信號進(jìn)行轉(zhuǎn)換,將其轉(zhuǎn)換為處理器能識別的數(shù)字信號,由于測試電路出來的模擬電壓變化范圍在0~5V,故選擇性價(jià)比比較合適的ADC0809進(jìn)行模數(shù)轉(zhuǎn)換。其管腳定義如圖2-14所示。
圖2-14 ADC0809管腳示意圖
ADC0809各腳功能如表2-5:
表2-5 ADC0809各腳功能
| |
| |
| |
| |
| |
| |
| |
| 轉(zhuǎn)換結(jié)束信號輸出引腳,開始轉(zhuǎn)換時(shí)為低電平,當(dāng)轉(zhuǎn)換結(jié)束時(shí)為高電平 |
| 輸出允許控制端,用以打開三態(tài)數(shù)據(jù)輸出鎖存器。 |
| |
| |
ADC0809對輸入模擬量要求:信號單極性,電壓范圍是0-5V,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。ADC0809的時(shí)序接口為51系列單片機(jī)的標(biāo)準(zhǔn)總線接口,操作方便,如同對存儲器或I/O操作一樣,A/D轉(zhuǎn)換精度為8比特,滿足本課題要求。輸入的模擬電壓為0~5V,一次A/D轉(zhuǎn)換時(shí)間為100μS。
ADC0809與單片機(jī)及VOC傳感器的接線方式如圖2-15:
圖2-15 ADC0809接線原理圖
§2.5聲光報(bào)警電路設(shè)計(jì)
為了使本系統(tǒng)對室內(nèi)空氣品質(zhì)的監(jiān)測更為直觀,采用了如圖2-16由2個(gè)發(fā)光二極管和一個(gè)蜂鳴器構(gòu)成的聲光報(bào)警電路。其中VOC氣體含量超標(biāo)時(shí)雙燈閃爍蜂鳴器報(bào)警,溫度超標(biāo)時(shí)D1燈亮蜂鳴器報(bào)警,濕度超標(biāo)時(shí)D2燈亮蜂鳴器報(bào)警。
圖2-16 聲光報(bào)警電路
§2.6液晶顯示電路設(shè)計(jì)
本課題所要顯示的數(shù)據(jù)一共有6個(gè),分別是有毒氣體的濃度和室內(nèi)的溫度、濕度的范圍和測量值,故選用2行16個(gè)字符的LCD1602作為顯示模塊,滿足顯示要求。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。
字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖2-17:
圖2-17 1602字符型液晶顯示器實(shí)物圖
§2.6.1LCD1602的基本參數(shù)及引腳功能
1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖2-18所示:
圖2-18 1602LCD尺寸圖
1602LCD主要技術(shù)參數(shù):
顯示容量:16x2個(gè)字符芯片
工作電壓:4.5V—5.5V
工作電流:2.0Ma(5V)
模塊兒最佳工作電壓:5.0V
字符尺寸:2.95×4.35(W×H)mm
引腳功能說明:
1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(有背光)接口,各引腳說明如表2-6所示:
表2-6 1602引腳說明
編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) |
2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) |
3 | VL | 液晶顯示偏壓 | 11 | D4 | 數(shù)據(jù) |
4 | RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | 數(shù)據(jù) |
5 | R/W | 讀/寫選擇 | 13 | D6 | 數(shù)據(jù) |
6 | E | 使能信號 | 14 | D7 | 數(shù)據(jù) |
7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 |
8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負(fù)極 |
第1腳:VSS為地電源。
第2腳:VDD接+5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度。
第4腳:PS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號,當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),夜景模塊執(zhí)行命令。
第7~14腳:D0~D7為八位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負(fù)極。
§2.6.2LCD1602的指令說明及時(shí)序
1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2-7所示:
表2-7 控制命令表
序號 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 光標(biāo)返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
4 | 顯示開/關(guān)控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
5 | 光標(biāo)或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
7 | 置字符發(fā)生存貯器地址 | 0 | 0 | 0 | 1 | 字符發(fā)生存貯器地址 |
8 | 置數(shù)據(jù)存貯器地址 | 0 | 0 | 1 | 顯示數(shù)據(jù)存貯器地址 |
9 | 讀忙標(biāo)志或地址 | 0 | 1 | BF | 計(jì)數(shù)器地址 |
10 | 寫數(shù)到CGRAM或DDRAM | 1 | 0 | 要寫的數(shù)據(jù)內(nèi)容 |
11 | 從CGRAM或DDRAM讀數(shù) | 1 | 1 | 讀出的數(shù)據(jù)內(nèi)容 |
1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。
指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。
指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動顯示的文字,低電平時(shí)移動光標(biāo)。
指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。
指令7:字符發(fā)生器RAM地址設(shè)置。
指令8:DDRAM地址設(shè)置。
指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。
指令10:寫數(shù)據(jù)。
指令11:讀數(shù)據(jù)。
與HD44780相兼容的芯片時(shí)序如表2-8:
表2-8 基本操作時(shí)序表
讀狀態(tài) | 輸入 | RS=L,R/W=H,E=H | 輸出 | D0—D7=狀態(tài)字 |
寫指令 | 輸入 | RS=L,R/W=L,D0—D7=指令碼,E=高脈沖 | 輸出 | 無 |
讀數(shù)據(jù) | 輸入 | RS=H,R/W=H,E=H | 輸出 | D0—D7=數(shù)據(jù) |
寫數(shù)據(jù) | 輸入 | RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖 | 輸出 | 無 |
讀寫操作時(shí)序如圖2-19和2-20所示:
圖2-19 讀操作時(shí)序
圖2-20 寫操作時(shí)序
§2.6.31602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫表
液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖2-21是1602的內(nèi)部顯示地址。
圖2-21 1602LCD內(nèi)部顯示地址
第二行第一個(gè)字符的地址是40H,寫入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是:
01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。
1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼。
§2.6.4LCD1602的一般初始化過程
延時(shí)15mS
寫指令38H(不檢測忙信號)
延時(shí)5mS
寫指令38H(不檢測忙信號)
延時(shí)5mS
寫指令38H(不檢測忙信號)
以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號
寫指令38H:顯示模式設(shè)置
寫指令08H:顯示關(guān)閉
寫指令01H:顯示清屏
寫指令06H:顯示光標(biāo)移動設(shè)置
寫指令0CH:顯示開及光標(biāo)設(shè)置
LCD1602的具體接線路圖如圖2-22所示。
圖2-22 LCD1602接線電路圖
§2.7按鍵電路設(shè)計(jì)
考慮到整個(gè)測量系統(tǒng)中不同環(huán)境對氣體濃度及溫濕度范圍要求不同,故設(shè)置了按鍵功能,用于實(shí)現(xiàn)測量范圍的調(diào)整,參考單片機(jī)引腳使用情況,共設(shè)置五個(gè)獨(dú)立按鍵如圖2-23,實(shí)現(xiàn)功能為設(shè)定鍵可進(jìn)行設(shè)定的進(jìn)入與退出,同時(shí)可實(shí)現(xiàn)三種范圍的切換,另設(shè)左右移位鍵、上下調(diào)值鍵各兩個(gè),與此同時(shí)考慮到用戶可能需要在一定時(shí)間內(nèi)連續(xù)測量一種量,故設(shè)計(jì)了上調(diào)鍵的第二功能:當(dāng)只有上調(diào)鍵按下時(shí)完成顯示的自動與手動的切換以實(shí)現(xiàn)良好的人機(jī)對話。
圖2-23 按鍵電路
§2.8電路電源設(shè)計(jì)
本設(shè)計(jì)采用集成穩(wěn)壓器7805,C29、C30分別為輸入端和輸出端濾波電容,D1為續(xù)流二極管。當(dāng)輸出電流較大時(shí),7805應(yīng)配上散熱板。電源電路如圖2-24所示:
圖2-24 電源電路
§2.9本章小結(jié)
本章首先介紹了便攜式室內(nèi)空氣質(zhì)量監(jiān)測儀的硬件結(jié)構(gòu)以及系統(tǒng)功能,該儀器以8位單片機(jī)STC90C51作為控制核心,設(shè)計(jì)并構(gòu)建了系統(tǒng)的硬件平臺,完成了有毒氣體濃度信號的采集轉(zhuǎn)換電路、液晶顯示電路、聲光報(bào)警電路等的設(shè)計(jì)。該儀器能夠?qū)崿F(xiàn)有毒氣體濃度信號和溫濕度信號采集與顯示及超標(biāo)聲光報(bào)警等功能。本章重點(diǎn)介紹了信號采集模擬電路和以主控制器為中心的數(shù)字電路的設(shè)計(jì)與工作原理。首先討論了有毒氣體采集模塊中傳感器選擇問題,最后討論了系統(tǒng)的外圍接口電路模塊,包括液晶顯示,聲光報(bào)警等,實(shí)現(xiàn)了各外圍接口電路模塊與STC90C51的硬件接口設(shè)計(jì)。
這一章比較具體的說明了系統(tǒng)硬件設(shè)計(jì)的內(nèi)容,通過模塊化的設(shè)計(jì)思想,把一個(gè)復(fù)雜的單片機(jī)系統(tǒng)按照功能劃分成一個(gè)個(gè)單獨(dú)的電路模型,分別進(jìn)行設(shè)計(jì),最后在集成到一起。這種方法對于設(shè)計(jì)復(fù)雜的單片機(jī)系統(tǒng)很有效。大大提高系統(tǒng)設(shè)計(jì)的效率與質(zhì)量。(說明:系統(tǒng)硬件設(shè)計(jì)的電路原理圖附在論文的附錄里面。)
第3章 空氣質(zhì)量檢測儀的軟件設(shè)計(jì)
§3.1 系統(tǒng)軟件設(shè)計(jì)思路
§3.1.1 編程語言的選擇
在系統(tǒng)硬件電路確定以后,其主要功能的實(shí)現(xiàn)將依賴于軟件來實(shí)現(xiàn)。對同一硬件電路,配以不同的軟件,它所實(shí)現(xiàn)的功能也就不同,其設(shè)計(jì)軟件基本要求:
1.可靠性?煽啃允擒浖O(shè)計(jì)的重要指標(biāo),具有較強(qiáng)的抗干擾能力。
2.易理解性、易維護(hù)性。編制的軟件要求易閱讀,容易發(fā)現(xiàn)和糾正錯(cuò)誤,容易修改和補(bǔ)充。
3.實(shí)時(shí)性。系統(tǒng)能夠及時(shí)響應(yīng)外部事件的發(fā)生并能及時(shí)做出處理結(jié)果。
4.準(zhǔn)確性。保證系統(tǒng)進(jìn)行計(jì)算數(shù)據(jù)的精度。
目前存在有4種編程語言支持單片機(jī),即匯編語言、PL/M51語言、C語言和BASI語言。其中匯編語言和C語言應(yīng)用的較多,匯編語言的機(jī)器代碼生成效率高,控制性好,但就是移植性不高。結(jié)合本系統(tǒng)的特點(diǎn),這里選用了功能強(qiáng)、效率高的C語言。C語言主要有以下特點(diǎn):用C語言編制的程序效率高,占用存儲空間小,運(yùn)行速度快。C語言能寫出最優(yōu)化程序,且能反映出計(jì)算機(jī)的實(shí)際運(yùn)行情況。C語言能直接與存儲器、接口電路打交道,也能申請中斷。具有良好的模塊化、容易閱讀、維護(hù)等優(yōu)點(diǎn),且編寫的模塊程序易于移植;贑語言和匯編語言的優(yōu)缺點(diǎn),本系統(tǒng)采用C語言編寫方法。
§3.1.2 軟件功能需求
室內(nèi)空氣質(zhì)量檢測儀系統(tǒng)軟件主要由溫濕傳感器采集模塊、AD轉(zhuǎn)換模塊、人機(jī)接口模塊、聲光報(bào)警模塊、核心控制器模塊構(gòu)成,各模塊功能概述如表3-1所示。
表3-1 各功能模塊功能描述
| |
| 對室內(nèi)溫濕度測點(diǎn)進(jìn)行實(shí)時(shí)監(jiān)測 |
| 1.完成信號采樣 2.完成與核心處理器間的數(shù)據(jù)傳輸 |
| 1.系統(tǒng)時(shí)基分配 2.人機(jī)接口控制 3.各模塊協(xié)調(diào)工作 |
| |
根據(jù)軟件設(shè)計(jì)的基本要求,采取了如下的措施:
1.程序模塊化。軟件設(shè)計(jì)中包含有:主程序模塊、顯示模塊、DHT11傳感器檢測函數(shù)、A/D數(shù)據(jù)轉(zhuǎn)換子模塊、聲光報(bào)警模塊、數(shù)據(jù)轉(zhuǎn)換模塊、按鍵函數(shù)。
2.軟件設(shè)計(jì)采用C語言編程。
3.中斷響應(yīng)外部事件,提高了系統(tǒng)的實(shí)時(shí)處理事件能力。
4.軟、硬件抗干擾。軟件抗干擾措施提高了系統(tǒng)的可靠性。
以下就對一些主要模塊進(jìn)行詳細(xì)的闡述。
§3.2軟件模塊設(shè)計(jì)
§3.2.1主程序模塊
主程序運(yùn)行流程圖如圖3-1所示。由主程序流程圖可以看出,軟件要實(shí)現(xiàn)的主要功能是實(shí)現(xiàn)對傳感器信號的數(shù)據(jù)采集,然后進(jìn)行數(shù)據(jù)的計(jì)算、分析、送液晶進(jìn)行顯示及報(bào)警功能。程序開始時(shí),對系統(tǒng)進(jìn)行初始化,包括單片機(jī)的各寄存器、RAM、定時(shí)器裝載初值、中斷設(shè)置及各模塊初始化等。完成初始化后,CPU等待傳感器傳入信號及AD轉(zhuǎn)換結(jié)束,從而完成當(dāng)前監(jiān)測參數(shù)的正確顯示。
圖3-1 主程序流程圖
§3.2.2AD轉(zhuǎn)換模塊
AD完成轉(zhuǎn)換需要一定的時(shí)間,AD應(yīng)用中我們可以有兩種方法來:
1.中斷查詢法,AD完成模數(shù)轉(zhuǎn)換后會向中斷輸出端輸出一個(gè)中斷請求信號,告訴CPU轉(zhuǎn)換已經(jīng)完成,CPU可以讀取數(shù)據(jù)。
2.延時(shí)等待法,設(shè)定一定的時(shí)間讓CPU處于等待狀態(tài),此時(shí)間足夠AD完成轉(zhuǎn)換,過了等待時(shí)間CPU再去讀取數(shù)據(jù)。
綜合考慮各方面的因素,本研究采用第一種方法:延時(shí)等待法。所用的芯片為AD0809,根據(jù)所需的要求。
§3.2.3液晶顯示模塊
本設(shè)計(jì)所用的顯示器件為1602液晶面板,該液晶能顯示32個(gè)字符,滿足顯示要求。1602液晶與CPU是并口通信,由單片機(jī)的P2.5、P2.6、P2.7引腳來控制1602的讀寫數(shù)據(jù)命令功能,單片機(jī)P0口傳輸數(shù)據(jù)到1602進(jìn)行顯示。
系統(tǒng)上電LCD初始化,液晶顯示首先需要要按照時(shí)序給定顯示地址,然后傳送數(shù)據(jù)。上電后液晶顯示開始循環(huán)顯示三個(gè)被測量的范圍和測量結(jié)果。
§3.2.4聲光報(bào)警模塊
聲音報(bào)警采用的是蜂鳴器,光報(bào)警是通過6個(gè)發(fā)光二極管來顯示,3個(gè)綠色和三個(gè)紅色的,當(dāng)毒氣含量沒超標(biāo)時(shí)顯示綠色,超標(biāo)時(shí)顯示紅色并啟動蜂鳴器,報(bào)警子程序執(zhí)行之前,設(shè)定的報(bào)警閾值存放在兩個(gè)變量中,傳感器輸入AD轉(zhuǎn)換值后,調(diào)用比較程序,小于閾值則執(zhí)行顯示程序,若大于閾值進(jìn)行聲光報(bào)警。。
§3.2.5按鍵模塊
本設(shè)計(jì)設(shè)定按鍵功能為調(diào)整測量數(shù)據(jù)的安全范圍并可進(jìn)行手動和自動的切換考慮到實(shí)現(xiàn)按鍵功能所用按鍵數(shù)目不多及單片機(jī)引腳數(shù)量決定選用五個(gè)獨(dú)立式按鍵,其中設(shè)定鍵用于進(jìn)入和退出上下限的調(diào)整,上下左右四個(gè)鍵在設(shè)定鍵被按下的情況下可以對數(shù)值進(jìn)行調(diào)整;同時(shí),當(dāng)設(shè)定鍵未按下且上調(diào)鍵被按下時(shí)進(jìn)入上調(diào)鍵的第二功能,實(shí)現(xiàn)用戶手動控制和自動控制的切換。已滿足用戶對環(huán)境條件檢測要求的不同,實(shí)現(xiàn)良好的人機(jī)交流。
§3.3本章小結(jié)
在這一章里對室內(nèi)便攜式只能空氣品質(zhì)監(jiān)測儀的軟件設(shè)計(jì)進(jìn)行了較詳細(xì)的介紹。軟件采用了模塊化設(shè)計(jì)的思路,以單片機(jī)高級語言C51編程。在本章開始給出了主程序結(jié)構(gòu)流程圖,然后分別對各個(gè)子模塊的軟件流程進(jìn)行介紹。(說明:程序見附錄二)
1
河南科技大學(xué)畢業(yè)設(shè)計(jì)(論文)
第4章 仿真調(diào)試
§4.1系統(tǒng)硬件調(diào)試
§4.1.1 常見的硬件故障
(1)邏輯錯(cuò)誤:硬件的邏輯錯(cuò)誤是由于設(shè)計(jì)錯(cuò)誤和加工過程中的工藝性錯(cuò)誤所造成的,主要包括:錯(cuò)線、開路、短路等,其中短路最為常見,在印刷電路板布線密度高的情況下,極易因工藝原因造成短路。
(2)器件失效:元器件失效主要是因?yàn)槠骷旧硪褤p壞或性能不符合要求,或者是由于組裝錯(cuò)誤造成的元器件失效,如電解電容、二極管的極性錯(cuò)誤,集成塊安裝方向錯(cuò)誤等。
(3)可靠性差:系統(tǒng)不可靠可能受多種因素影響,如金屬化孔、接插件接觸不良會造成系統(tǒng)時(shí)好時(shí)壞;內(nèi)部和外部的干擾、器件負(fù)載過大等造成邏輯電平不穩(wěn)定;另外,走線和布局的不合理等也是系統(tǒng)可靠性差的重要因素之一。
(4)電源故障:若系統(tǒng)中存在電源故障,則加電后將造成器件損壞。
§4.1.2硬件調(diào)試方法
拿到印刷電路板后,用萬用表直接檢查線路板各處是否有明顯短路、斷路的地方,尤其是電源是否短路。接著,焊接各元器件及插座,在焊接過程中要對各元件做逐一檢查,比如二極管極性、電容容量及耐壓、電阻值大小等。在插座、元件焊接完畢后,仔細(xì)檢查元件面各元件之間裸露部分有無相互接觸現(xiàn)象,焊接面的各焊點(diǎn)間、焊點(diǎn)和近鄰線有無連接。最后,再給電路板空載上電(未插芯片),檢查線路板各管腳及插件上的電位是否正確,特別是單片機(jī)管腳上的各點(diǎn)電壓。若上述的一切都正常,則硬件調(diào)試的準(zhǔn)備工作完成。
硬件實(shí)物如圖4-1。
§4.2 系統(tǒng)軟件調(diào)試
對系統(tǒng)軟件編寫完成之后,可以利用Keil C51仿真軟件進(jìn)行仿真運(yùn)行調(diào)試,其調(diào)試界面如圖4-2所示。
圖4-2 KeilC51軟件調(diào)試截面圖
在具體的調(diào)試過程中,采取以下方法進(jìn)行調(diào)試:在Keil C51編譯環(huán)境中編寫、編譯軟件模塊,進(jìn)行軟件仿真調(diào)試,對功能模塊的軟件仿真。通過Keil C51的調(diào)試窗口觀察各個(gè)寄存器、變量以及并行口輸出的結(jié)果,監(jiān)測軟件模塊運(yùn)行的狀態(tài),在調(diào)試過程中不斷地調(diào)整修改系統(tǒng)的軟件程序,使系統(tǒng)實(shí)現(xiàn)預(yù)定功能。
調(diào)試過程中單步運(yùn)行和斷點(diǎn)運(yùn)行調(diào)試只能驗(yàn)證程序正確與否,而不能確定定時(shí)精度、CPU的實(shí)時(shí)響應(yīng)等問題,故在單步和斷點(diǎn)調(diào)試之后,又進(jìn)行了連續(xù)調(diào)試。待全部完成后,應(yīng)反復(fù)運(yùn)行調(diào)試多次,對系統(tǒng)的穩(wěn)定性和操作是否符合原始設(shè)計(jì)要求、安排的操作是否合理等都要進(jìn)行詳細(xì)的觀察,必要時(shí)作適當(dāng)?shù)男拚?/div>
調(diào)試完成后將程序?qū)雙rotues中進(jìn)行仿真,觀察系統(tǒng)運(yùn)行結(jié)果如圖4-3。通過調(diào)試,確定基本可行后,將程序燒寫單片機(jī)進(jìn)行實(shí)物調(diào)整,通過不斷燒寫、試驗(yàn),最終完成整個(gè)軟件,準(zhǔn)確實(shí)現(xiàn)要求的功能如圖4-4。
圖4-3 protues仿真調(diào)試
圖4-4 實(shí)物調(diào)試
§4.3本章小結(jié)
本章首先詳細(xì)描述用Keil C51對軟件進(jìn)行調(diào)試的過程以及其方法,通過輸入不同的數(shù)據(jù)對系統(tǒng)進(jìn)行調(diào)試,以確定本設(shè)計(jì)方案的正確性。本章工作內(nèi)容使得硬件部分與軟件部分結(jié)合實(shí)現(xiàn)預(yù)定的功能。
結(jié) 論
§1主要結(jié)論
1.本系統(tǒng)綜合利用傳感器技術(shù),自動監(jiān)測技術(shù),和微控制器技術(shù),開發(fā)了一套對室內(nèi)的空氣質(zhì)量進(jìn)行監(jiān)控的操作方便、簡潔實(shí)用的自動監(jiān)測系統(tǒng)。
2.系統(tǒng)軟硬件設(shè)計(jì)合理,其中單片機(jī)軟件采用模塊化的程序設(shè)計(jì)方法,各模塊相互獨(dú)立,提高了系統(tǒng)的可靠性和可擴(kuò)展性,整個(gè)系統(tǒng)具有較高的性能價(jià)格比。
3.系統(tǒng)C51語言編程,程序結(jié)構(gòu)清晰,顯示板界面非常友好,使得操作者在使用該系統(tǒng)時(shí)就像是在操作一臺實(shí)際的控制儀器一樣。
4.系統(tǒng)功能獨(dú)立,配置合理。鍵盤設(shè)置為不同的用戶提供了一定的選擇空間。
5.經(jīng)運(yùn)行驗(yàn)證,系統(tǒng)具有響應(yīng)速度快,操作簡便,工作可靠等特點(diǎn)。
§2展望
1.本系統(tǒng)選用了集傳感器,轉(zhuǎn)換器于一體,能直接輸出標(biāo)準(zhǔn)模擬信號的傳感器,這無疑會增加系統(tǒng)的成本,今后可選用能達(dá)到要求的價(jià)格低廉的傳感器,而信號的放大和調(diào)理電路部分可自行設(shè)計(jì)。
2.由于室內(nèi)各種環(huán)境因子相互影響,而本系統(tǒng)的控制輸出僅為簡單的百分比信號量,這顯然不能滿足高精度的控制要求,應(yīng)引入模糊算法,專家系統(tǒng)等技術(shù)以進(jìn)一步提高系統(tǒng)的智能決策水平。
3.系統(tǒng)可以開發(fā)成多機(jī)監(jiān)控模式,這就能同時(shí)監(jiān)測多個(gè)環(huán)境室內(nèi)的空氣品質(zhì),通過串行通信傳到上位機(jī)進(jìn)行綜合處理。
5.可通過網(wǎng)絡(luò)與其他家電相聯(lián)系,將把家庭中原來孤立、各不相關(guān)的設(shè)備統(tǒng)一起來。
6. 本設(shè)計(jì)可改為多路氣體檢測,未來可以實(shí)現(xiàn)更多的檢測功能。
7. 本設(shè)計(jì)的主要強(qiáng)調(diào)智能化和人性化,例如可以適用于特殊人群——病人,他們可以把舒適的環(huán)境的指標(biāo)通過相應(yīng)的按鍵來控制,按下按鍵后,通過本系統(tǒng)控制相應(yīng)的設(shè)備調(diào)節(jié)來達(dá)到是以病人的環(huán)境。
8.可以用來開發(fā)新型空調(diào),現(xiàn)代空調(diào)都是針對空氣溫濕進(jìn)行調(diào)節(jié),可以將本設(shè)計(jì)加入空調(diào)內(nèi)部,使其既能控制溫濕度,還可以對空氣中的各種氣體進(jìn)行檢測,并通過控制“新風(fēng)系統(tǒng)”改善空氣各方面的質(zhì)量。
參考文獻(xiàn)
[1] 余永權(quán).單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,1998.12
[2] 余錫存、曹國華.單片機(jī)原理及接口技術(shù)[M].第二版.西安:西安電子科技大學(xué)出版社,2007.12
[3] 諸邦田.電子電路實(shí)用抗干擾技術(shù)[M].北京:人民郵電出版社,1994.5
[4] 曲喜新.電子元件材料手冊[M].北京:電子工業(yè)出版社,1989.4
[5] 汪吉鵬、馬云峰.微機(jī)原理與接口技術(shù)[M].北京:高等教育出版社,2001.7
[6] 田崴.電工技術(shù)(電工學(xué)1)[M].北京:高等教育出版社,2010.12
[7] 孫立功.電子技術(shù)(電工學(xué)2)[M].北京:高等教育出版社,2010.12
[8] 馬玉春.串行通信協(xié)議的研究及應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究.2004
[9] 胡漢才.單片機(jī)原理及其接口技術(shù)[M].清華大學(xué)出版社,1996.
[10] 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京航空航天大學(xué)出版社,2003.
[11] 趙亮,侯國銳.單片機(jī)C語言編程與實(shí)例[M].人民郵電出版社,2003.
[12] 張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.
[13] 何立民.單片機(jī)與嵌入式系統(tǒng)應(yīng)用[M].北京航空航天出版社,2003.
[14]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].清華大學(xué)出版社,2005.
[15]清源科技.Protel 99 SE電路原理圖與PCB設(shè)計(jì)及仿真[M].機(jī)械工業(yè)出版社,2007.
致 謝
為期兩個(gè)多月的畢業(yè)設(shè)計(jì)終于完成了,對我個(gè)人而言,凝聚了許多努力和汗水,也經(jīng)受住了嚴(yán)峻的考驗(yàn)。和普通的課程設(shè)計(jì)不同,由于畢業(yè)設(shè)計(jì)的綜合性,幾乎用到所學(xué)的全部知識,而且是我第一次接觸傳感器的使用,對我來說這是一個(gè)全新的任務(wù)。由于基礎(chǔ)過于薄弱,專業(yè)知識有限,浮躁的心理讓我一開始舉步維艱,滿腦子想的就是放棄。在心理最為脆弱的時(shí)候,黃老師耐心地開導(dǎo)我,給我鼓勵(lì)和信心,畢業(yè)設(shè)計(jì)才得以步入正軌。
萬事開頭難,從研究課題,搜集材料,到正式投入設(shè)計(jì),我花費(fèi)了很多時(shí)間和精力。對于這次全新的設(shè)計(jì),老師給了我很大的自由空間,可以充分發(fā)揮自己的創(chuàng)造思維。但是,對于很多新的嘗試,我還是有所拘束?赡苁切愿袷谷话,每當(dāng)遇到問題,設(shè)計(jì)處于混沌狀態(tài)時(shí),煩躁焦慮接踵而來,讓我迷失了方向。又是黃老師在最繁忙的時(shí)候,給我做細(xì)致的分析指導(dǎo),讓我茅塞頓開,使設(shè)計(jì)得以延續(xù)直至順利完成。所以,在這次畢業(yè)設(shè)計(jì)中,我最感謝的是黃曉東老師,他給我們提供一流的設(shè)計(jì)場所,還提供了許多實(shí)用的設(shè)計(jì)資料,為我們的設(shè)計(jì)提供了保障。
在我看來,黃老師不僅是一位態(tài)度嚴(yán)謹(jǐn),學(xué)識淵博的優(yōu)秀教師,也是一位心理調(diào)節(jié)師,他總是能在設(shè)計(jì)氛圍緊張的時(shí)候,給同學(xué)們帶來歡樂,緩解同學(xué)們的壓力。他那自信樂觀的生活態(tài)度,也值得我們學(xué)習(xí)。從黃老師那里,我不僅學(xué)到了許多專業(yè)知識和實(shí)踐經(jīng)驗(yàn),而且懂得許多做人的道理和生活的真諦,這些都是一輩子受用的財(cái)富,讓我受益匪淺,終生難忘。
最后,再次對黃老師表示真誠的謝意和崇高的敬意。同時(shí)也對同組同學(xué)的幫助表示衷心的感謝。
附 錄
附錄一
硬件電氣原理圖
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define Data P0 //數(shù)據(jù)端口
- /*****1602管腳定義*****/
- sbit RS=P2^6;
- sbit RW=P2^5;
- sbit E=P2^7;
- /******AD管腳定義*****/
- sbit STA=P3^0;
- sbit OE=P3^1;
- sbit EOC=P3^2;
- sbit CLK=P3^3;
- /*****按鍵管腳定義******/
- sbit key_U=P2^0;
- sbit key_D=P2^1;
- sbit key_L=P2^2;
- sbit key_R=P2^3;
- sbit key_S=P2^4;
- /******報(bào)警用管腳******/
- sbit beep=P3^4;
- sbit led1=P3^5;
- sbit led2=P3^6;
- unsigned char num=0;//記錄設(shè)定鍵按下次數(shù)
- unsigned char k_flag=0;//記錄設(shè)置鍵按下次數(shù)(用于調(diào)用)
- unsigned char wei=0;//光標(biāo)位置
- unsigned char c_num=0;//記錄切換鍵按下次數(shù)
- unsigned char c_flag=0;//記錄切換鍵按下次數(shù)(用于調(diào)用)
- unsigned char voc_ad;//AD讀取數(shù)據(jù)
- unsigned char flag;//DHT11函數(shù)用到
- /****************************/
- sbit DHT=P3^7;
- uchar WEN1[]="wen:16.00-28.00"; //溫度第一行數(shù)據(jù)
- uchar WEN2[]=" 20.00 "; //溫度第二行數(shù)據(jù)
- uchar SHI1[]="shi:30.00-70.00"; //濕度第一行數(shù)據(jù)
- uchar SHI2[]=" 20.00 "; //濕度第二行數(shù)據(jù)
- uchar VOC1[]="voc:0.00-2.70 "; //濕度第一行數(shù)據(jù)
- uchar VOC2[]=" 0.00 "; //濕度第二行數(shù)據(jù)
- unsigned char shiZ,shiX,wenZ,wenX,check;
- unsigned char tr_shiZ,tr_shiX,tr_wenZ,tr_wenX;
- /*********延時(shí)*******************************/
- void delay_1ms(uint x)
- {
- uchar i;
- while(x--)
- for(i=0;i<120;i++);
- }
- void delay_10us()
- {
- unsigned char i;
- i--;
- i--;
- i--;
- i--;
- i--;
- i--;
- }
- void DelayUs(unsigned char us) //--延時(shí)函數(shù)
- {
- unsigned char uscnt;
- uscnt=us>>1; /*12MHz頻率*/
- while(--uscnt);
- }
- /*******1602顯示*******************************************/
- /**********寫命令**********/
- void lcd_write_com(uchar c)
- {
- delay_1ms(5);//操作前短暫延時(shí),保證信號穩(wěn)定
- E=0;
- RS=0;
- RW=0;
- _nop_();
- E=1;
- Data=c;
- E=0;
- }
- /**********寫數(shù)據(jù)*************/
- void lcd_write_dat(uchar c)
- {
- delay_1ms(5); //操作前短暫延時(shí),保證信號穩(wěn)定
- E=0;
- RS=1;
- RW=0;
- _nop_();
- E=1;
- Data=c;
- E=0;
- RS=0;
- }
- /**********LCD初始化********/
- void lcd_init()
- {
- delay_1ms(15);
- lcd_write_com(0x38); //display mode
- lcd_write_com(0x38); //display mode
- lcd_write_com(0x38); //display mode
- lcd_write_com(0x06); //顯示光標(biāo)移動位置
- lcd_write_com(0x0c); //顯示開及光標(biāo)設(shè)置
- lcd_write_com(0x01); //顯示清屏
- }
- /*********顯示單個(gè)字符**********/
- void ShowChar(uchar pos,uchar c)
- {
- unsigned char p;
- if (pos>=0x10)
- p=pos+0xb0; //是第二行則命令代碼高4位為0xc
- else
- p=pos+0x80; //是第二行則命令代碼高4位為0x8
- lcd_write_com(p);//寫命令
- lcd_write_dat(c); //寫數(shù)據(jù)
- }
- /*********顯示字符串**********/
- void ShowString (uchar line,char *ptr)
- {
- unsigned char l,*p;
- p=ptr;
- l=line<<4;
- while((*p)!='\0')
- {
- ShowChar(l++,*(p));
- p++;
- }
- }
- /*********溫度顯示函數(shù)***********/
- void WENdisp(void)
- {
- ShowString(0,WEN1);
- _nop_();
- ShowString(1,WEN2);
- }
- /*********濕度顯示函數(shù)***********/
- void SHIdisp(void)
- {
- ShowString(0,SHI1);
- _nop_();
- ShowString(1,SHI2);
- }
- /*********VOC調(diào)用的顯示函數(shù)***********/
- void VOCdisp(void)
- {
- ShowString(0,VOC1);
- _nop_();
- ShowString(1,VOC2);
- }
- /***********報(bào)警用函數(shù)************/
- void Beep(unsigned char i,j)//i用于確定亮燈方式,j用于確定蜂鳴器是否報(bào)警
- {
- unsigned char m;
- led1=led2=1;
- for(m=0; m<250; m++)
- {
- switch(i)
- {
- case 0:break;
- case 1:led1=led2=0;break;//低電平點(diǎn)亮
- case 2:led1=0;break;
- case 3:led2=0;break;
- }
- beep = j;
- delay_1ms(2);
- led1=led2=1;
- beep = 0;
- delay_1ms(2);
- }
- }
- void voc_warning()
- {
- unsigned char voc_t;
- unsigned char voc_h;
- voc_t=('0'+VOC2[6])*10+('0'+VOC2[8]);
- voc_h=('0'+VOC1[9])*10+('0'+VOC1[11]);
- if(voc_t>voc_h)
- {
- Beep(1,1);
- }
- else Beep(0,0);
- }
- void wen_warning()
- {
- unsigned char wen_t;
- unsigned char wen_h;
- unsigned char wen_l;
- wen_t=('0'+WEN2[6])*10+('0'+WEN2[7]);
- wen_l=('0'+WEN1[4])*10+('0'+WEN1[5]);
- wen_h=('0'+WEN1[10])*10+('0'+WEN1[11]);
- if(wen_t>wen_h||wen_t<wen_l)
- {
- Beep(2,1);
- }
- else Beep(0,0);
- }
- void shi_warning()
- {
- unsigned char shi_t;
- unsigned char shi_h;
- unsigned char shi_l;
- shi_t=('0'+SHI2[6])*10+('0'+SHI2[7]);
- shi_l=('0'+SHI1[4])*10+('0'+SHI1[5]);
- shi_h=('0'+SHI1[10])*10+('0'+SHI1[11]);
- if(shi_t>shi_h||shi_t<shi_l)
- {
- Beep(3,1);
- }
- else Beep(0,0);
- }
- /*******************按鍵***************************/
- /*************進(jìn)入設(shè)定功能***************/
- unsigned char key_set(void)
- {
- if(key_S==0)
- {
- delay_1ms(10);
- if(key_S==0)
- {
- while(!key_S);
- num++;
- k_flag=num%4;
- }
- else k_flag=num%4;
- }
- else k_flag=num%4;
- return k_flag;
- }
- /********************調(diào)整數(shù)據(jù)******************/
- unsigned char key_adddec(unsigned char dat)
- {
- if(key_U==0)
- {
- delay_1ms(10);
- if(key_U==0)
- {
- while(!key_U);
- if(dat<'9')
- dat++;
- else
- dat='9';
- }
- }
- if(key_D==0)
- {
- delay_1ms(10);
- if(key_D==0)
- {
- while(!key_D);
- if(dat>'0')
- dat--;
- else
- dat='0';
- }
- }
- return dat;
- }
- /***************左右移位*******************/
- unsigned char key_LR()
- {
- if(key_L==0)
- {
- delay_1ms(10);
- if(key_L==0)
- {
- while(!key_L);
- if(wei==0)
- wei=3;
- else wei--;
- }
- }
- if(key_R==0)
- {
- delay_1ms(10);
- if(key_R==0)
- {
- while(!key_R);
- if(wei==3)
- wei=0;
- else wei++;
- }
- }
- return wei;
- }
- /*********主函數(shù)調(diào)用的按鍵函數(shù)*********/
- void set_updn_dat(void)
- {
- while(key_set())
- {
- unsigned j=key_LR();
- if(key_set()==1)
- {
- switch(j>0)
- {
- case 1:j=2;break;
- case 0:j=0;break;
- }
- VOCdisp();
- VOC1[j+9]=key_adddec(VOC1[j+9]);
- lcd_write_com(0x80+j+9);
- lcd_write_dat(VOC1[j+9]);
- }
- else
- if(key_set()==2)
- {
- switch(j)
- {
- case 2:j=6;break;
- case 3:j=7;break;
- }
- WENdisp();
- WEN1[j+4]=key_adddec(WEN1[j+4]);
- lcd_write_com(0x80+j+4);
- lcd_write_dat(WEN1[j+4]);
- }
- else
- if(key_set()==3)
- {
- switch(j)
- {
- case 2:j=6;break;
- case 3:j=7;break;
- }
- SHIdisp();
- SHI1[j+4]=key_adddec(SHI1[j+4]);
- lcd_write_com(0x80+j+4);
- lcd_write_dat(SHI1[j+4]);
- }
- }
- }
- /*************手動自動切換功能**************/
- unsigned char key_change(void)
- {
- if(key_U==0)
- {
- delay_1ms(10);
- if(key_U==0)
- {
- while(!key_U);
- c_num++;
- c_flag=c_num%4;
- }
- else c_flag=c_num%4;
- }
- else c_flag=c_num%4;
- return c_flag;
- }
- /*************************傳感器函數(shù)************************/
- /**************DHT測試**************/
- /******溫濕度讀取函數(shù)*******/
- char DHTread_data()
- {
- unsigned char i,num,temp;
- num=0;
- for(i=0;i<8;i++)
- {
- flag=2;
- while((!DHT)&&flag++);
- delay_10us();
- delay_10us();
- delay_10us();
- if(DHT==1)
- {
- temp=1;
- flag=2;
- while(DHT&&flag++);
- }
- else
- temp=0;
- num<<=1;
- num|=temp;
- }
- return(num);
- }
- /********初始化及采集程序*********/
- void DHTread_init()
- {
- DHT=0; //主機(jī)使DHT11低電平并延時(shí)至少18ms
- delay_1ms(21);
- DHT=1; //主機(jī)置DHT11高電平20~40us,并等待從機(jī)相應(yīng)
- delay_10us();
- delay_10us();
- delay_10us();
- DHT=1;
- if(!DHT) //從機(jī)發(fā)出相應(yīng)信號
- {
- flag=2;
- while((!DHT)&&flag++);
- flag=2;
- while(DHT&&flag++); //開始采集數(shù)據(jù)
- tr_shiZ=DHTread_data();//采集濕度整數(shù)部分
- tr_shiX=DHTread_data();//采集濕度小數(shù)部分
- tr_wenZ=DHTread_data();//采集溫度整數(shù)部分
- tr_wenX=DHTread_data();//采集溫度小數(shù)部分
- check=DHTread_data(); //采集校驗(yàn)位
- DHT=1;
- }
- }
- /*********顯示測試結(jié)果*********/
- void DHT11()
- {
- unsigned char temp;
- {
- DHTread_init();
- temp=tr_shiZ+tr_shiX+tr_wenZ+tr_wenX;
- if(check==temp)
- {
- shiZ=tr_shiZ;
- shiX=tr_shiX;
- wenZ=tr_wenZ;
- wenX=tr_wenX;
- }
- WEN2[6]='0'+wenZ/10;
- WEN2[7]='0'+wenZ%10;
- WEN2[9]='0'+wenX/10;
- WEN2[10]='0'+wenX%10;
- SHI2[6]='0'+shiZ/10;
- SHI2[7]='0'+shiZ%10;
- SHI2[9]='0'+shiX/10;
- SHI2[10]='0'+shiX%10;
- }
- }
- /****************氣體濃度檢測************/
- /*********系統(tǒng)初始化***********/
- void init()
- {
- TMOD = 0x01; //設(shè)定定時(shí)器T0工作方式
- TH0=(65536-2)%256;
- TL0=(65536-2)/256;
- ET0=1; //允許T0中斷
- EA=1; //開總中斷
- TR0=1; //啟動定時(shí)器T0
- }
- /**********T0中斷服務(wù)程序***********/
- void t0(void) interrupt 1 //using 1
- {
- TH0=(65536-2)%256;
- TL0=(65536-2)/256;
- CLK=~CLK;
- }
- /**********AD轉(zhuǎn)換函數(shù)**********/
- void AD()
- {
- STA=0;
- OE=0;
- STA=1; //啟動AD轉(zhuǎn)換
- _nop_();
- STA=0;
- while(EOC==1);
- OE=1;
- voc_ad=P1;
- }
- /*******數(shù)據(jù)處理********/
- void VOC()
- {
- AD();
- VOC2[6]='0'+voc_ad/51;
- VOC2[8]='0'+voc_ad%51*10/51;
- VOC2[9]='0'+voc_ad%51*10%51*10/51;
- }
- /************切換程序*************/
- void change(void)
- {
- while(!key_set() && key_change())
- {
- unsigned k=key_change();
- switch(k)
- {
- case 1:
- VOC();
- VOCdisp();
- voc_warning();
- break;
- case 2:
- DHT11();
- WENdisp();
- wen_warning();
- break;
- case 3:
- DHT11();
- SHIdisp();
- shi_warning();
- break;
- }
- }
- }
- /**********************主函數(shù)**************************/
- void main()
- {
- lcd_init();
- delay_1ms(50);
- init();
- num=0;
- while(1)
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼