CO氣體濃度監(jiān)測(cè)儀設(shè)計(jì)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)_第1頁(yè)
CO氣體濃度監(jiān)測(cè)儀設(shè)計(jì)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)_第2頁(yè)
CO氣體濃度監(jiān)測(cè)儀設(shè)計(jì)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)_第3頁(yè)
CO氣體濃度監(jiān)測(cè)儀設(shè)計(jì)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)_第4頁(yè)
CO氣體濃度監(jiān)測(cè)儀設(shè)計(jì)單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、遼遼 寧寧 工工 業(yè)業(yè) 大大 學(xué)學(xué) 單片機(jī)原理及接口技術(shù)單片機(jī)原理及接口技術(shù) 課程設(shè)計(jì)(論文)課程設(shè)計(jì)(論文) 題目:題目: coco氣體濃度監(jiān)測(cè)儀設(shè)計(jì)氣體濃度監(jiān)測(cè)儀設(shè)計(jì) 院(系):院(系): 電氣工程學(xué)院電氣工程學(xué)院 專業(yè)班級(jí):專業(yè)班級(jí): 學(xué)學(xué) 號(hào):號(hào): 學(xué)生姓名:學(xué)生姓名: 指導(dǎo)教師:指導(dǎo)教師: (簽字) 起止時(shí)間:起止時(shí)間:2012013 3.06.24-201.06.24-2013 3.07.07.1212 課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ)課程設(shè)計(jì)(論文)任務(wù)及評(píng)語(yǔ) 院(系):電氣工程學(xué)院 教研室: 注:成績(jī):平時(shí)20% 論文質(zhì)量60% 答辯20% 以百分制計(jì)算 學(xué) 號(hào)學(xué)生姓名專業(yè)班級(jí) 課程

2、設(shè)計(jì) (論文) 題目 co氣體濃度監(jiān)測(cè)儀設(shè)計(jì) 課程設(shè)計(jì)(論文)任務(wù) 該監(jiān)測(cè)儀主要用于公共場(chǎng)所及某些車間空氣中 co 濃度的監(jiān)測(cè),檢測(cè)標(biāo)準(zhǔn)是:co 濃度小時(shí)均值應(yīng)低于 3mg/m3,日均值應(yīng)低于 4mg/m3。. 設(shè)計(jì)任務(wù):設(shè)計(jì)任務(wù): 1. cpu 最小系統(tǒng)設(shè)計(jì)(包括 cpu 選擇,晶振電路,復(fù)位電路) 2. 傳感器選擇以及模擬量檢測(cè)電路設(shè)計(jì) 3. 人機(jī)對(duì)話接口電路設(shè)計(jì)(要求強(qiáng)弱電隔離) 4. .程序流程圖設(shè)計(jì)機(jī)程序清單編寫 技術(shù)參數(shù):技術(shù)參數(shù): 1co 濃度小時(shí)均值應(yīng)低于 3mg/m3,日均值應(yīng)低于 4mg/m3。 2工作電源 220v 設(shè)計(jì)要求設(shè)計(jì)要求: 1、分析系統(tǒng)功能,選擇合適的單片機(jī)及

3、傳感器,模擬量輸入電路設(shè)計(jì)等; 2、應(yīng)用專業(yè)繪圖軟件繪制硬件電路圖和軟件流程圖; 3、按規(guī)定格式,撰寫、打印設(shè)計(jì)說明書一份,其中程序開發(fā)要有詳細(xì)的軟件設(shè)計(jì) 說明,詳細(xì)闡述系統(tǒng)的工作過程,字?jǐn)?shù)應(yīng)在 4000 字以上。 進(jìn)度計(jì)劃 第 1 天 查閱收集資料 第 2 天 總體設(shè)計(jì)方案的確定 第 3-4 天 cpu 最小系統(tǒng)設(shè)計(jì) 第 5 天 傳感器選擇以及模擬量檢測(cè)電路設(shè)計(jì) 第 6 天人機(jī)對(duì)話接口電路設(shè)計(jì) 第 7 天 程序流程圖設(shè)計(jì) 第 8 天 軟件編寫與調(diào)試 第 9 天 設(shè)計(jì)說明書完成 第 10 天 答辯 指導(dǎo)教師評(píng)語(yǔ)及成績(jī) 平時(shí): 論文質(zhì)量: 答辯: 總成績(jī): 指導(dǎo)教師簽字: 年 月 日 摘 要 本

4、系統(tǒng)利用 51 單片機(jī)做核心控制模塊,利用 mq-7 一氧化碳傳感器探測(cè)一 氧化碳。實(shí)時(shí)監(jiān)控多處一氧化碳濃度變化,如果某處一氧化碳濃度過高,系統(tǒng)將 發(fā)出聲音報(bào)警,并顯示報(bào)警傳感器號(hào)碼,提醒人們及時(shí)搶險(xiǎn)。本系統(tǒng)可用于家庭 環(huán)境,也適用于工業(yè)環(huán)境。 由于單片機(jī)成本低廉,自動(dòng)控制功能比較強(qiáng)大,運(yùn)行穩(wěn)定,環(huán)境適應(yīng)性好, 所以本系統(tǒng)采用單片機(jī)做控制的核心元件。 mq-7 一氧化碳傳感器對(duì)一氧化碳的靈敏度高;長(zhǎng)壽命,低成本;簡(jiǎn)單的驅(qū) 動(dòng)電路即可。因此,很適用于家庭的一氧化碳檢測(cè)。 數(shù)碼管能清晰的顯示報(bào)警的房間號(hào)碼,即使在光線較暗時(shí),所以選用數(shù)碼管 做顯示模塊。 關(guān)鍵詞:一氧化碳;單片機(jī);檢測(cè);報(bào)警 目 錄

5、 目 錄 .iv 第 1 章 緒論 .1 1.1 co 濃度監(jiān)測(cè)儀研究概況 .1 1.2 本文研究?jī)?nèi)容 .1 第 2 章 cpu 最小系統(tǒng)設(shè)計(jì).2 2.1 co 氣體濃度監(jiān)測(cè)儀總體設(shè)計(jì)方案 .2 2.2 cpu 的選擇 .3 2.3 時(shí)鐘電路設(shè)計(jì) .6 2.4 復(fù)位電路設(shè)計(jì) .7 2.5 單片機(jī)最小系統(tǒng)設(shè)計(jì) .7 第 3 章 co 濃度監(jiān)測(cè)儀輸入輸出電路設(shè)計(jì).8 3.1 co 傳感器的選擇 .8 3.2 運(yùn)算放大器選擇 .10 3.3 a/d 轉(zhuǎn)換電路 .10 3.4 聲光報(bào)警電路 .11 3.5 顯示電路 .12 第 4 章 軟件設(shè)計(jì) .13 4.1 流程圖設(shè)計(jì) .13 4.2 程序編寫 .

6、14 4.2.1 主程序.14 4.2.2 調(diào)零子程序.15 4.2.3 顯示子程序.16 4.2.4 報(bào)警子程序.19 4.2.5 中斷取值子程序.19 第 5 章 軟件仿真 .22 第 6 章 課程設(shè)計(jì)總結(jié) .24 參考文獻(xiàn) .25 附錄 硬件原理圖 .26 第 1 章 緒論 1.1 co 濃度監(jiān)測(cè)儀研究概況 燃?xì)?人工煤氣、天然氣、液化石油氣)的普及,提高了生產(chǎn)效率、市民的生 活質(zhì)量,但在使用燃?xì)獾倪^程中,因燃?xì)庑孤?、廢氣等原因造成的燃?xì)獗?、?毒等意外事故時(shí)有發(fā)生,給人們的生命和財(cái)產(chǎn)安全帶來了嚴(yán)重的威脅,因此安全 使用燃?xì)庖恢笔侨細(xì)庵鞴懿块T工作的重中之重。co 濃度監(jiān)測(cè)儀能有效監(jiān)測(cè)環(huán)

7、境中 可燃?xì)怏w或毒性氣體 co 的濃度,一旦其濃度超出報(bào)警限定值,就能發(fā)出聲光報(bào) 警信號(hào),并且能自動(dòng)開啟排風(fēng)扇把燃?xì)馀懦鍪彝?,甚至能通過聯(lián)動(dòng)裝置自動(dòng)切斷 燃?xì)夤?yīng)防止燃?xì)饫^續(xù)泄漏,起到安全防范的作用。但監(jiān)測(cè)儀選用得是否合理, 直接關(guān)系到其功能的充分發(fā)揮。該設(shè)計(jì)所研究的 co 濃度監(jiān)測(cè)儀正是應(yīng)這種要求 而開發(fā)的。 一氧化碳是一種無色、無味的氣體,它與血液中的血紅素結(jié)合的能力是氧的 240 倍,它與血紅素形成穩(wěn)定的絡(luò)合物,使血紅蛋白喪失了輸送氧氣的能力,從 而導(dǎo)致組織低氧癥,甚至死亡。一氧化碳濃度的高低是評(píng)價(jià)空氣質(zhì)量好壞的重要 指標(biāo)之一,也是工廠、煤礦井下是否發(fā)生自燃火災(zāi)的重要標(biāo)志之一。為了保證人

8、 們身體健康和環(huán)境潔凈,世界各國(guó)都紛紛致力于防止空氣污染的產(chǎn)生 監(jiān)測(cè)儀是否靈敏可靠關(guān)系到人身財(cái)產(chǎn)安全,因此監(jiān)測(cè)儀屬于強(qiáng)制檢定的計(jì)量 器具。目前大多數(shù)報(bào)警器用戶都使用汽油或液化氣等超過以上高濃度的易揮發(fā)可 燃?xì)怏w對(duì)報(bào)警器進(jìn)行檢測(cè), 若報(bào)警即判斷監(jiān)測(cè)儀正常。這樣做雖然省缺了購(gòu)買可 燃?xì)怏w標(biāo)準(zhǔn)物質(zhì)的麻煩和費(fèi)用, 但實(shí)際上達(dá)不到保證安全的目的, 從而形成重大 安全隱患, 有時(shí)還會(huì)造成報(bào)警器檢測(cè)元件中毒。如果使用標(biāo)準(zhǔn)氣體檢測(cè)報(bào)警器, 就能保證人身安全, 同時(shí)杜絕報(bào)警器檢測(cè)探頭中毒現(xiàn)象。 1.2 本文研究?jī)?nèi)容 本文所設(shè)計(jì)的數(shù)字氣體報(bào)警器采用單片機(jī) at89c51,其價(jià)格便宜,易于產(chǎn)品 化。本設(shè)計(jì)能將置于測(cè)

9、試環(huán)境中的氣體傳感器輸出的模擬電壓通過 a/d 轉(zhuǎn)換器送 入單片機(jī) at89c51 中進(jìn)行處理并通過數(shù)碼管顯示,通過設(shè)置報(bào)警值,當(dāng)檢測(cè)到 的濃度達(dá)到或者超過設(shè)定值時(shí),用單片機(jī)控制發(fā)光二極管發(fā)光報(bào)警,同時(shí)打開喇 叭發(fā)出聲音報(bào)警,來達(dá)到報(bào)警的目的,并通過外接排風(fēng)扇與電磁閥對(duì)其進(jìn)行程控, 以防事故的發(fā)生。而當(dāng)系統(tǒng)出現(xiàn)故障時(shí),黃色 led 亮啟,便于用戶及時(shí)對(duì)報(bào)警器進(jìn)行維修。 系統(tǒng)以 mq-7 氣體傳感器和 at89c51 單片機(jī)為核心, 設(shè)計(jì)氣體泄漏報(bào)警器。 實(shí)現(xiàn): 1準(zhǔn)確測(cè)量周圍環(huán)境中的可燃性氣體、有毒有害氣體的泄漏; 2實(shí)現(xiàn)系統(tǒng)各個(gè)模塊的功能控制; 3實(shí)現(xiàn)單片機(jī)編程語(yǔ)言系統(tǒng)的控制及傳感器電路的控

10、制。 4研究單片機(jī)各接口的作用及功能; 5了解 mq-7 氣體傳感器的具體功能; 6實(shí)現(xiàn)對(duì)基本報(bào)警電路的控制。 第 2 章 cpu 最小系統(tǒng)設(shè)計(jì) 2.1 co 氣體濃度監(jiān)測(cè)儀總體設(shè)計(jì)方案 單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)分三個(gè)層次: (1)單片機(jī):通常指應(yīng)用系統(tǒng)主處理機(jī),即所選擇的單片機(jī)器件。 (2)單片機(jī)系統(tǒng):指按照單片機(jī)的技術(shù)要求和嵌入對(duì)象的資源要求而構(gòu)成的基 本系統(tǒng),如時(shí)鐘電路、復(fù)位電路和擴(kuò)展存儲(chǔ)器等與單片機(jī)構(gòu)成了單片機(jī)系統(tǒng)。 (3)單片機(jī)應(yīng)用系統(tǒng):能滿足嵌入對(duì)象要求的全部電路系統(tǒng)。在單片機(jī)系統(tǒng)的基 礎(chǔ)上加上面向?qū)ο蟮慕涌陔娐?,如前向通道、后向通道、人機(jī)交互通道(鍵盤、顯 示器、打印機(jī)等)和串行通行

11、口(rs232)以及應(yīng)用程序等。 以此理解,一氧化碳報(bào)警器同樣具有單片機(jī)應(yīng)用系統(tǒng)的三個(gè)層次。其中以 at89c51 單片機(jī)為核心構(gòu)成單片機(jī)系統(tǒng)。在此系統(tǒng)中,檢測(cè)信號(hào)進(jìn)入單片機(jī)進(jìn)行 運(yùn)算處理。為了更好的理清設(shè)計(jì)思路,將整個(gè)系統(tǒng)細(xì)分為三部分加以設(shè)計(jì)說明。 整個(gè)報(bào)警器由三個(gè)部分組成,分為三大模塊:濃度檢測(cè)模塊、主控模塊和報(bào)警模 塊。在本次設(shè)計(jì)中,使用的核心器件是單片機(jī)和一氧化碳傳感器。為了保重整個(gè) 系統(tǒng)可靠的運(yùn)行,設(shè)計(jì)中必須明確三大部分的實(shí)際聯(lián)系:以單片機(jī)為中心,其他 各大模塊一一展開。其中,濃度檢測(cè)及顯示模塊所實(shí)現(xiàn)的功能是將房間中的一氧 化碳濃度值轉(zhuǎn)換成為單片機(jī)能夠處理的數(shù)字信號(hào),并且濃度值顯示出

12、來:主控模 塊以單片機(jī)為主,對(duì)其他模塊的運(yùn)行進(jìn)行控制;報(bào)警模塊是此系統(tǒng)的外部電路, 它的功能是實(shí)現(xiàn)報(bào)警。系統(tǒng)框圖如圖 2-1 所示。 圖 2-1 總體框圖 2.2 cpu 的選擇 數(shù)據(jù)處理過程是主要由 at89c51 單片機(jī)等芯片完成的。at89c51 是一種帶 4k 字節(jié)的閃爍可編程可擦除只讀存儲(chǔ)器(fperom-flash programmable and erasable read only memory)的低電壓,高性能 cmos8 位微處理器,俗稱單片 機(jī)。其中包括 128 字節(jié)內(nèi)部 ram,32 個(gè) i/o 口線,2 個(gè) 16 位定時(shí)/計(jì)數(shù)器,一個(gè) 5 向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工

13、串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí), at89c51 降至 0hz 的靜態(tài)邏輯操作,并支持兩種可選的節(jié)電工作模式26??臻e 方式體制 cpu 的工作,但允許 ram,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù) 工作。掉電方式保存 ram 中的內(nèi)容,但振蕩器體制工作并禁止其他所有不見工作 直到下一個(gè)硬件復(fù)位。 單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除 100 次。該器件采用 atmel 高密 度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 mcs-51 指令集和輸出管腳相兼容。 由于將多功能 8 位 cpu 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel 的 at89c51 是一種高效微控制器。at89c51

14、單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性 高且廉價(jià)的方案。at89c51 單片機(jī)管腳圖如圖 2-2 所示 ad單片機(jī)轉(zhuǎn)換 顯示報(bào)警 聲音報(bào)警 傳感器 e a /v p 31 x 1 19 x 2 18 r e se t 9 r d 17 w r 16 in t 0 12 in t 1 13 t 0 14 t 1 15 p1 0 1 p1 1 2 p1 2 3 p1 3 4 p1 4 5 p1 5 6 p1 6 7 p1 7 8 p0 0 39 p0 1 38 p0 2 37 p0 3 36 p0 4 35 p0 5 34 p0 6 33 p0 7 32 p2 0 21 p2 1 22 p2

15、2 23 p2 3 24 p2 4 25 p2 5 26 p2 6 27 p2 7 28 ps e n 29 a l e /p 30 t x d 11 r x d 10 u 1 89 c5 1 圖 2-2 at89c51 單片機(jī)管腳圖 引腳功能說明如下: vcc:電源電壓 gnd:地 p0口:p0口是一組8 位漏極開路型雙向i/o口,也即地址/數(shù)據(jù)總線復(fù)用。 作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)ttl 邏輯門電路,對(duì)端口寫 “1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口 線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在 flash 編程時(shí)

16、,p0口接受指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí), 要求外接上拉電阻。 p1口:p1是一個(gè)帶內(nèi)部上拉電阻的8 位雙向i/o口,p1的輸出緩沖級(jí)可驅(qū)動(dòng) (吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻 把端口拉到高電平,此時(shí)可作輸入口。作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電 阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(iil)。flash 編程和程序校 驗(yàn)期間,p1接受低8 位地址。 p2口:p2是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向i/o 口,p2的輸出緩沖級(jí)可 驅(qū)動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉 電阻把端口拉到高電平,此時(shí)

17、可作輸入口。作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上 拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(iil)。在訪問外部程序 存儲(chǔ)器或16位四肢的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx dptr指令)時(shí),p2口送出 高8 位地址數(shù)據(jù),在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx ri 指令) 時(shí),p2口線上的內(nèi)容(也即特殊功能寄存器(sfr)區(qū)中r2 寄存器的內(nèi)容),在 整個(gè)訪問期間不改變。flash編程和程序校驗(yàn)時(shí),p2也接收高位地址和其他控制 信號(hào)。 p3口:p3是一個(gè)帶有內(nèi)部上拉電阻的8位雙向i/o口,p3的輸出緩沖級(jí)可驅(qū) 動(dòng)(吸收或輸出電流)4個(gè)ttl邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上

18、拉電 阻把端口拉到高電平,此時(shí)可作輸入口。作為輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉 電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(iil)。p3 口還接收一些用 于flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 rst:復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平 將使單片機(jī)復(fù)位。 ale/prog:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ale(地址鎖存允許) 輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ale仍以時(shí)鐘振蕩 頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要 注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ale脈沖。對(duì)flash存儲(chǔ)器編

19、程 期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過對(duì)特殊功能寄存 器(sfr)區(qū)中的8eh單元d0位置位,可禁止ale操作。該位置,只有一條movx和 movc指令ale 才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí), 應(yīng)設(shè)置ale無效。 psen:程序存儲(chǔ)允許輸出是外部程序存儲(chǔ)器的讀選通型號(hào),當(dāng)89c51由外 部存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次psen有效,即輸出兩個(gè)脈沖。 在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的psen信號(hào)不出現(xiàn)。 ea/vpp:外部訪問允許。欲使cpu僅訪問外部程序存儲(chǔ)器(地址為0000h ffffh),ea端必須保持低電平(接

20、地)。需注意的是:如果加密位lb1被編程, 復(fù)位時(shí)內(nèi)部會(huì)鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序 存儲(chǔ)器中的指令。flash存儲(chǔ)器編程時(shí),該引腳加上+12v的編程允許電源vpp,當(dāng) 然這必須是該器件使用12v編程電壓vpp。 xtal1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 xtal2:振蕩器反相放大器的輸出端。89c51 中有一個(gè)用于構(gòu)成內(nèi)部振蕩器 的高增益反相放大器,引腳 xtal1 和 xtal2 分別是該放大器的輸入端和輸出端。 這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器, 外接石英晶體或陶瓷諧振器及電容 c1、c2 接在放大

21、器的反饋回路中構(gòu)成并聯(lián)振 蕩電路。對(duì)電容 c1、c2 雖沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響 振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性,如果使 用石英晶體,我們推薦電容使用 30pf10pf,而如使用陶瓷諧振器建議選擇 40pf10pf。用戶也可以采用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接到 xtal 端, 即內(nèi)部時(shí)鐘發(fā)生器的輸入端 xtal 則懸空。 2.3 時(shí)鐘電路設(shè)計(jì) 單片機(jī)工作時(shí),從取指令到譯碼再進(jìn)行微操作,必須在時(shí)鐘信號(hào)控制下才能 有序地進(jìn)行,時(shí)鐘電路就是為單片機(jī)工作提供基本時(shí)鐘的。單片機(jī)的時(shí)鐘信號(hào)通 常有兩種產(chǎn)生方式:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本課題

22、采用內(nèi)部時(shí)鐘方式。 在單片機(jī) xtal1 和 xtal2 引腳上跨接上一個(gè)晶振和兩個(gè)穩(wěn)頻電容,可以與 單片機(jī)片內(nèi)的電路構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。晶振頻率取 12 mhz。外接電容 的作用是對(duì)振蕩器進(jìn)行頻率微調(diào),使振蕩信號(hào)頻率與晶振頻率一致,同時(shí)起到穩(wěn) 定頻率的作用,本課題選用 33pf 的電容。 易知:本單片機(jī)最小系統(tǒng)的振蕩周期=1/(12mhz)=1/12us,時(shí)鐘周期=1/6us, 機(jī)器周期=1us。 圖 2-3 時(shí)鐘電路原理圖 2.4 復(fù)位電路設(shè)計(jì) 無論是在單片機(jī)剛開始接上電源時(shí),還是運(yùn)行過程中發(fā)生故障都需要復(fù)位。 復(fù)位電路用于將單片機(jī)內(nèi)部各電路的狀態(tài)恢復(fù)到一個(gè)確定的初始值,并從這個(gè)狀

23、態(tài)開始工作。 單片機(jī)的復(fù)位條件:必須使其 rst 引腳上持續(xù)出現(xiàn)兩個(gè)(或以上)機(jī)器周期的 高電平。 單片機(jī)的復(fù)位形式:上電復(fù)位、按鍵復(fù)位。本課題采用按鍵復(fù)位。 c 1 33p c 2 33p x 1 c ry st a l 在單片機(jī)啟動(dòng) 0.1s 后,電容 c 兩端的電壓持續(xù)充電為 5v,這是時(shí)候 10k 電 阻兩端的電壓接近于 0v,rst 處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時(shí) 候,開關(guān)導(dǎo)通,這個(gè)時(shí)候電容兩端形成了一個(gè)回路,電容被短路,所以在按鍵按 下的這個(gè)過程中,電容開始釋放之前充的電量。隨著時(shí)間的推移,電容的電壓在 0.1s 內(nèi),從 5v 釋放到變?yōu)榱?1.5v,甚至更小。根據(jù)串聯(lián)

24、電路電壓為各處之和, 這個(gè)時(shí)候 10k 電阻兩端的電壓為 3.5v,甚至更大,所以 rst 引腳又接收到高電 平。單片機(jī)系統(tǒng)自動(dòng)復(fù)位。 圖 2-4 復(fù)位電路原理圖 2.5 單片機(jī)最小系統(tǒng)設(shè)計(jì) 單片機(jī)的最小系統(tǒng)是由組成單片機(jī)系統(tǒng)必需的一些元件構(gòu)成的,除了單片機(jī) 之外,還需要包括電源供電電路、時(shí)鐘電路、復(fù)位電路。 r 2 10 0 +5 v c 2 1u f b r 1 1k e a /v p 31 x 1 19 x 2 18 r e se t 9 r d 17 w r 16 in t 0 12 in t 1 13 t 0 14 t 1 15 p1 0 1 p1 1 2 p1 2 3 p1 3 4

25、 p1 4 5 p1 5 6 p1 6 7 p1 7 8 p0 0 39 p0 1 38 p0 2 37 p0 3 36 p0 4 35 p0 5 34 p0 6 33 p0 7 32 p2 0 21 p2 1 22 p2 2 23 p2 3 24 p2 4 25 p2 5 26 p2 6 27 p2 7 28 ps e n 29 a l e /p 30 t x d 11 r x d 10 u 1 89 c5 1 c 1 33 p c 2 33 p x 1 c ry st a l r 2 10 0 +5 v c 2 1u f b r 1 1k +5 v 圖 2-5 單片機(jī)最小系統(tǒng)原理圖 第 3

26、 章 co 濃度監(jiān)測(cè)儀輸入輸出電路設(shè)計(jì) 3.1 co 傳感器的選擇 選擇一氧化碳傳感器主要考慮以下的性能指標(biāo): (1)輸入和輸出之間成比例,直線性好、靈敏度高、分辨力強(qiáng)、測(cè)量范圍寬。 (2)滯后、漂移誤差小 (3)動(dòng)態(tài)特性好 (4)功耗小 (5)時(shí)間老化特性優(yōu)良 (6)與被測(cè)體匹配良好,既不因接入傳感器而使得被測(cè)對(duì)象受到影響,受被測(cè) 量之外的影響小。 (7)體積小、重量輕、價(jià)格低廉。 (8)故障率低,易于校準(zhǔn)和維護(hù)。 (9)由于傳感元件的輸出信號(hào)一邊比較小,為了便于能夠驅(qū)動(dòng)控制電路,在傳 感器電路中還應(yīng)該包括放大器。 鑒于以上選擇要點(diǎn),本文中用到的傳感器必須具備良好的測(cè)量效果、功耗小、 動(dòng)態(tài)特

27、性良好和體積小、重量輕、價(jià)格低廉等幾個(gè)主要特性。為此我們選擇了 mq-7 系列傳感器。 半導(dǎo)體一氧化碳傳感器 mq-7 所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低 的二氧化錫(sno2)。采用高低溫循環(huán)檢測(cè)方式低溫(1.5v 加熱)檢測(cè)一氧化碳,傳 感器的電導(dǎo)率隨空氣中一氧化碳?xì)怏w濃度增加而增大,高溫(5.0v 加熱)清洗低溫 時(shí)吸附的雜散氣體。使用簡(jiǎn)單的電路即可將電導(dǎo)率的變化,轉(zhuǎn)換為與該氣體濃度 相對(duì)應(yīng)的輸出信號(hào)。mq-7 氣體傳感器對(duì)一氧化碳的靈敏度高,這種傳感器可檢 測(cè)多種含一氧化碳的氣體,是一款適合多種應(yīng)用的低成本傳感器。 主要特點(diǎn)及應(yīng)用: 對(duì)一氧化碳的高靈敏度。 長(zhǎng)壽命,低成本。 簡(jiǎn)單

28、的驅(qū)動(dòng)電路即可 家用氣體泄漏報(bào)警器 工業(yè)用一氧化碳報(bào)警器 便攜式氣體檢測(cè)器 mq-7 氣敏元件的結(jié)構(gòu)和外形如圖 3-1 所示,由微型 al2o3 陶瓷管、sno2 敏感層, 測(cè)量電極和加熱器構(gòu)成的敏感元件固定在塑料或不銹鋼制成的腔體內(nèi),為了改善 傳感器的選擇性,傳感器氣室用活性炭過濾層與外界隔開。加熱器為氣敏元件提 供了必要的工作條件。封裝好的氣敏元件有 6 只針狀管腳,其中 4 個(gè)用于信號(hào)取 出,2 個(gè)用于提供加熱電流。 圖 3-1 mq-7 實(shí)物圖 3.2 運(yùn)算放大器選擇 由于氣體傳感器輸出的電壓值過低,無法直接使用 a/d 讀取,必須要加入放 大電路,對(duì)電壓放大然后再經(jīng)過 a/d 讀取。

29、在此,選擇 lm358 作為運(yùn)算放大器。 lm358 內(nèi)部包括有兩個(gè)獨(dú)立的、高增益、內(nèi)部頻率補(bǔ)償?shù)碾p運(yùn)算放大器,適合于 電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件 下,電源電流與電源電壓無關(guān)。它的使用范圍包括傳感放大器、直流增益模塊和 其他所有可用單電源供電的使用運(yùn)算放大器的場(chǎng)合。 lm358具備以下特性:內(nèi)部頻率補(bǔ)償;直流電壓增益高(約100db);單位增益 頻帶寬(約1mhz);電源電壓范圍寬:?jiǎn)坞娫?3-30v)、雙電源(1.5-15v) ;低功 耗電流,適合于電池供電;低輸入偏流,低輸入失調(diào)電壓和失調(diào)電流;共模輸入 電壓范圍寬,包括接地;差模輸入電壓范圍寬,

30、等于電源電壓范圍;輸出電壓擺 幅大(0 至 vcc-1.5v) 。 圖 3-2 運(yùn)算放大器電路原理圖 3.3 a/d 轉(zhuǎn)換電路 為了方便與 at89c5 單片機(jī)的鏈接,本系統(tǒng)采用 ad0809 模數(shù)轉(zhuǎn)換芯片對(duì)采集 到的氣體信息進(jìn)行數(shù)模轉(zhuǎn)換。其分辨率為 8 位,不必進(jìn)行零點(diǎn)和滿度調(diào)整,且具 有高阻抗斬波穩(wěn)定比較器,8 個(gè)通道的多路開關(guān)可直接存取 8 個(gè)單端模擬信號(hào)中 的一個(gè)。利用單片機(jī)啟動(dòng) ad0809 轉(zhuǎn)換器,轉(zhuǎn)換結(jié)束后再由 ad0809 向 at89c51 發(fā) 出中斷請(qǐng)求信號(hào), cpu 響應(yīng)中斷請(qǐng)求。通過對(duì)譯碼器的讀操作,讀取轉(zhuǎn)換結(jié)果并 送到被測(cè)量的響應(yīng)存儲(chǔ)區(qū)。再重新選擇被測(cè)量,并再次啟動(dòng)

31、ad0809 轉(zhuǎn)換器轉(zhuǎn)換 后中斷返回。ad0809 與單片機(jī) at89c51 連線線路如圖 3-3 所示。 圖 3-3 ad0809 與單片機(jī) at89c51 連線線路 3.4 聲光報(bào)警電路 系統(tǒng)的聲,光報(bào)警電路由發(fā)光二極管和低電壓蜂鳴器構(gòu)成,分別由 pic 單片 機(jī)的 2 個(gè)端口控制。發(fā)光二極管 led 具有體積小,抗沖擊和抗震性能好,可靠性 高,壽命長(zhǎng),工作電壓低,功耗小,響應(yīng)速度快等優(yōu)點(diǎn),常用于顯示系統(tǒng)的工作 狀態(tài),有益于控制系統(tǒng)的設(shè)計(jì)和維護(hù)。當(dāng)該部分工作時(shí),整機(jī)的工作電流將增加 為未報(bào)警狀態(tài)時(shí)的電流的數(shù)倍,消耗的功率會(huì)比較大,因此采用了分時(shí)供電的方 法,通過單片機(jī)控制該部分電源的通斷,

32、即質(zhì)量濃度達(dá)到報(bào)警時(shí)才給其供電;另 外,用單片機(jī)輸出的周期脈沖報(bào)警信號(hào)控制振蕩器的啟停,用振蕩器輸出信號(hào)控 制蜂鳴器和發(fā)光二極管,振蕩器可以用 ttl 門電路構(gòu)成的多諧振蕩器。采用這 2 種方法可降低該部分的電路的功耗。設(shè)計(jì)中,led 發(fā)光二極管的工作電流為 5- 20ma,最大不超過 50ma,否則會(huì)燒壞器件。為了獲得良好的發(fā)光效果,led 工作 電流控制在 10-15ma 較為合理。在圖 3-4 中所示電路中,d 口得 rd4,rd5,rd6,rd7,接聲,光報(bào)警電路,其中 d 口的 rd5-rd7 分別接質(zhì)量濃度 過高,相等,過低的 led。當(dāng)氣體檢測(cè)儀檢測(cè)質(zhì)量濃度低于設(shè)定值時(shí),綠燈亮;

33、 當(dāng)氣體質(zhì)量濃度達(dá)到某一定值時(shí),黃燈亮;當(dāng)高于設(shè)定值時(shí),紅燈亮并發(fā)出警報(bào) 信號(hào)。 圖 3-4 聲光報(bào)警電路原理圖 3.5 顯示電路 在該設(shè)計(jì)中, led 顯示器的顯示方法采用動(dòng)態(tài)顯示。 led 動(dòng)態(tài)顯示的基 本做法在于分時(shí)輪流選通數(shù)碼管的公共端,使得各數(shù)碼管輪流導(dǎo)通,在選通相 應(yīng)的 led 后,即在顯示字段上得到顯示字形碼。這種方式不但能提高數(shù)碼管 的發(fā)光效率,并且由于各個(gè)數(shù)碼管的字段線是并聯(lián)使用的,從而大大簡(jiǎn)化了硬 件線路。本設(shè)計(jì)中處理結(jié)果采用 4 位 led 顯示,首次顯示氣體類別,后 3 位顯示氣體濃度。逐位輪流點(diǎn)亮各個(gè)led,每一位保持 1ms,在 10-20ms 之 內(nèi)再一次點(diǎn)亮,重

34、復(fù)不止。這樣利用人的視覺停留,好像4 位 led 同時(shí)點(diǎn) 亮一樣。 圖 3-5 顯示電路原理圖 第 4 章 軟件設(shè)計(jì) 4.1 流程圖設(shè)計(jì) 圖4-1 軟件流程圖 4.2 程序編寫 4.2.1 主程序 整個(gè)程序一共使用了兩個(gè)中斷,一個(gè)外部中斷即 int0 中斷,一個(gè)定時(shí)/計(jì)數(shù)器 中斷即 it0 中斷.這兩個(gè)中斷各有其作用,int0 中斷是用來判斷 a/d 轉(zhuǎn)換器 adc0809 對(duì)模擬信號(hào)的轉(zhuǎn)換是否完成,當(dāng) a/d 轉(zhuǎn)換結(jié)束后,adc0809 發(fā)出結(jié)束 eoc(高電平)信號(hào),該信號(hào)可供單片機(jī)查詢,也可反相后作為向單片機(jī)發(fā)出中斷信號(hào), 而本設(shè)計(jì)正是用的這個(gè)方法,使得程序進(jìn)入中斷取值程序.而程序中所用

35、到的 it0 中斷,是為產(chǎn)生一個(gè)周期為 2s 的方波而設(shè)計(jì)的,其作用是為看門狗產(chǎn)生喂狗子信號(hào). 具體程序如下: org 00h jmp start ;主程序入口地址 org 03h jmp into ;外中斷 into 入口 org 0bh jmp itop ; 定時(shí)器 0 中斷入口 org 0100h start: mov ie,#10000001b ;int0 中斷使能 mov ip,#00000001b ;int0 中斷優(yōu)先 mov tcon,#00000000b ;設(shè)置 int0 為電平觸發(fā) mov scon,#00000000b ;串行口發(fā)送,接收標(biāo)志位請(qǐng) 0 mov sp,#60h

36、 ;設(shè)堆棧指針 mov tmod,#01h ;設(shè)置 t0 為方式 1 call pt0m0 here: ajmp here ;自身跳轉(zhuǎn) pt0m0: mov tl0,#0ch ;t0 中斷服務(wù)程序,t0 重新置初值 mov th0,#0feh setb tr0 ;啟動(dòng) t0 setb et0 ;允許 t0 中斷 setb ea ;cpu 開中斷 ret itop: mov tl0,#0ch ;t0 中斷服務(wù)程序,t0 置初值 mov th0,0feh cpl p1.0 ;p1.0 狀態(tài)取反 reti acall led ;調(diào)用 led 自檢子程序 mov 33h,#00h ;設(shè)置中斷完成標(biāo)志為

37、 0 mov dptr,#0feffh ;adc0809 的端口地址 movx dptr,a ;使 bus 為高阻抗,令 adc0809 開始轉(zhuǎn)換 wait:mov a,33h ;等待 a/d 轉(zhuǎn)換完成信號(hào) jnz intok jmp wait ;未完成則跳回等待 intok: mov a,32h ;將最新的濃度值存入累加器中, (若 a/d 未工作,則 a=0) jnz l1 mov a,30h jmp l2 l1: mov 30h,31h mov a,31h ;將新濃度載入累加器 l2: call bcd ;調(diào)用 bcd 碼調(diào)整程序 call disp ;顯示當(dāng)前濃度 call adzer

38、o ;調(diào)用零點(diǎn)調(diào)整子程序 call alarm ;調(diào)用判斷報(bào)警程序 call bcd call disp ;調(diào)用顯示子程序 clr a ;清除累加器值 jmp start ;返回 在主程序通過對(duì) 33h 中數(shù)值的判斷斷定 a/d 是否轉(zhuǎn)換完成,當(dāng) 33h 中為 1 時(shí),轉(zhuǎn)換完成,程序調(diào)用調(diào)零、報(bào)警、顯示模塊對(duì)輸入數(shù)據(jù)進(jìn)行處理。 4.2.2 調(diào)零子程序 由于未知問題,可能造成送入單片機(jī)中顯示的模擬電壓量與真實(shí)電壓存在區(qū) 別,這種誤差可以通過在中斷處理中對(duì) a/d 轉(zhuǎn)換的數(shù)值加上一個(gè)調(diào)整值來解決。 這樣,我們就能根據(jù)實(shí)際情況來對(duì)報(bào)警器輸出的數(shù)值進(jìn)行控制,使其記數(shù)更加精 確,使用更方便。我們可以利用

39、對(duì)端口的電平高低來判斷是否需要進(jìn)行調(diào)零處理, 故可將按鍵開關(guān)接于端口 p2.2.若開關(guān)按下,則說明有調(diào)零需要,于是進(jìn)入調(diào)零處理 程序;若開關(guān)沒有按下,則說明沒有調(diào)零需要,系統(tǒng)進(jìn)入下一步.通過設(shè)置一個(gè)按鍵,既 可保證程序順利進(jìn)行,又方便用戶使用.具體程序如下: adzero: call delay jb p2.2,jmp1 ;判斷調(diào)零按鈕是否按下,沒按則跳 jmp1 . jmp1: ret 通過對(duì) p2.2 位的判斷來分辨是否有調(diào)零請(qǐng)求,若有則跳入調(diào)零模式,調(diào)零模 式中程序如下: loop1:call delay jnb p2.2,$ ;消除抖動(dòng)延時(shí) mov a,40h ;將調(diào)零預(yù)設(shè)值 40h

40、送入 clr c ;清除進(jìn)位標(biāo)志 subb a,#01h ;調(diào)零值減 1 jnc loop2 ;未借位則跳 loop2 mov a,#05h ;有借位則重設(shè)調(diào)零值為 5 loop2:mov 40h,a ;將調(diào)零值送回 40h 保存 mov a,r3 ;將當(dāng)前濃度值送入 a jz xend dec a ;當(dāng)前濃度值減 1(響應(yīng)調(diào)整變化) xend1 :mov 30h,a ;送回 30h 保存 mov 31h,a ;送回 31h 保存 call bcd ;調(diào)用 bcd 碼調(diào)整 call disp ;調(diào)用顯示子程序 jmp loop xend: mov a,#63h jmp xend1 進(jìn)入調(diào)零模式

41、后,若有按鍵則,led 數(shù)碼管示數(shù)響應(yīng)按鍵變化。若 3 秒無任 何按鍵,則退出調(diào)零模式返回主程序。 4.2.3 顯示子程序 因?yàn)橥ㄟ^ a/d 轉(zhuǎn)換進(jìn)入單片機(jī) 8051 的濃度值以十六進(jìn)制存在,為了讓 led 顯示需要轉(zhuǎn)換為 bcd 碼,其 bcd 碼轉(zhuǎn)換程序如下: bcd:mov 55h,#00h ;存放 bcd 轉(zhuǎn)換中的百位數(shù) mov 56h,#00h ;存放 bcd 轉(zhuǎn)換中的十位數(shù) clr c ;清除進(jìn)位標(biāo)志為下面的 subb 準(zhǔn)備 mov r2,#00h ;清除 r2 chan:subb a,#64h ;減 100 jc chan1 ;不能減,轉(zhuǎn) inc r1 ;百位值 jmp chan

42、 ;循環(huán)判斷百位 chan1: add a,#64h ;還原百位數(shù) clr c ;清除進(jìn)位標(biāo)志為下面的 subb 準(zhǔn)備 chan2: subb a,#0ah ;減 10 jc chan3 ;不夠減,跳 inc r2 ;夠減十位加 1 jmp chan2 ;重復(fù)減 10 chan3: add a,#0ah ;還原十位數(shù) mov 60h,r2 ;把十位數(shù)放 60h 中 mov 61h,a ;把個(gè)位數(shù)放 61h 中 ret 這樣把轉(zhuǎn)換成的 bcd 碼,個(gè)位存于 61h 中,十位存入 60h 中,再編寫顯示 模塊如下: disp: mov r7,#03h mov r0,#60h led1: mov a

43、,r0 mov dptr,#table led2: movc a,a+dptr mov sbuf,a jnb ti,$ clr ti inc r0 djnz r7,led1 ret 將數(shù)值送入到 led 顯示 74ls164 驅(qū)動(dòng)數(shù)碼管的過程: 在單片機(jī)應(yīng)用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。 所謂靜態(tài)顯示,就是每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的 i/o 接口用于 筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用 管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片 機(jī)中 cpu 的開銷小??梢蕴峁﹩为?dú)鎖存的 i/o 接口電路很

44、多,這里以常用的串并 轉(zhuǎn)換電路 74ls164 為例,介紹一種常用靜態(tài)顯示電路,以使大家對(duì)靜態(tài)顯示有一 定的了解。 mcs-51 單片機(jī)串行口方式 0 為移位寄存器方式,外接 3 片 74ls164 作為 3 位 led 顯示器的靜態(tài)顯示接口,把 8031 的 rxd 作為數(shù)據(jù)輸出線,txd 作為移位 時(shí)鐘脈沖。74ls164 為 ttl 單向 8 位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。 其中 a、b(第 1、2 腳)為串行數(shù)據(jù)輸入端,2 個(gè)引腳按邏輯與運(yùn)算規(guī)律輸入信 號(hào),共一個(gè)輸入信號(hào)時(shí)可并接。t(第 8 腳)為時(shí)鐘輸入端,可連接到串行口的 txd 端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到 t 端時(shí)

45、,移位寄存器移一位,8 個(gè)時(shí)鐘脈 沖過后,8 位二進(jìn)制數(shù)全部移入 74ls164 中。r(第 9 腳)為復(fù)位端,當(dāng) r=0 時(shí), 移位寄存器各位復(fù) 0,只有當(dāng) r=1 時(shí),時(shí)鐘脈沖才起作用。q1q8(第 3-6 和 10-13 引腳)并行輸出端分別接 led 顯示器的 hga 各段對(duì)應(yīng)的引腳上。在給出 了 8 個(gè)脈沖后,最先進(jìn)入 74ls164 的第一個(gè)數(shù)據(jù)到達(dá)了最高位,然后再來一個(gè)脈 沖會(huì)有什么發(fā)生呢?再來一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出,搞清了這一 點(diǎn),下面讓我們來看電路,3 片 7ls164 首尾相串,而時(shí)鐘端則接在一起,這樣, 當(dāng)輸入 8 個(gè)脈沖時(shí),從單片機(jī) rxd 端輸出的數(shù)據(jù)就

46、進(jìn)入到了第一片 74ls164 中 了,而當(dāng)?shù)诙€(gè) 8 個(gè)脈沖到來后,這個(gè)數(shù)據(jù)就進(jìn)入了第二片 74ls164,而新的數(shù) 據(jù)則進(jìn)入了第一片 74ls164,這樣,當(dāng)?shù)诹鶄€(gè) 8 個(gè)脈沖完成后,首次送出的數(shù)據(jù) 被送到了最左面的 164 中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三片 74ls164 中。 由于本設(shè)計(jì)采用的是機(jī)械按鍵,與地線想連,按鍵按下,輸入為低電平,釋 放按鍵則輸入為高電平。實(shí)際上,機(jī)械式按鍵的落片存在著輕微的彈跳現(xiàn)象其時(shí) 間由操作員按鍵的動(dòng)作所確定,為了確保 cpu 對(duì)按鍵的一次閉合僅做一次處理, 必須去除抖動(dòng),一般通過調(diào)用子程序延時(shí)來解決,在鍵的穩(wěn)定閉合或釋放時(shí)才讀 出鍵的狀態(tài),具體程序

47、如下: delay: movr 5,#60 設(shè)定 30 毫秒 d1: mov r6,#248 ;設(shè)定 0.5 毫秒 djnz r6,$ djnz r5,d1 ret 因?yàn)槭⒕w為 12mhz,一個(gè)機(jī)器周期為 1 微秒,這樣如上程序可達(dá)到延時(shí) 30 毫秒的目的。 4.2.4 報(bào)警子程序 本設(shè)計(jì)采用了聲光報(bào)警,當(dāng)探測(cè)器探測(cè)的濃度超過報(bào)警設(shè)定值時(shí)就會(huì)同時(shí)產(chǎn)生 音樂報(bào)警和燈光報(bào)警,此時(shí)紅燈亮啟,喇叭發(fā)出音樂,而正常時(shí),喇叭關(guān)閉,紅燈關(guān)閉, 而顯示正常的綠色 led 亮啟,本設(shè)計(jì)為了安全起見,還設(shè)置了事故處理裝置,即出現(xiàn) 危險(xiǎn)使,探測(cè)器除了報(bào)警外,還會(huì)使排氣扇的閥門打開,對(duì)室內(nèi)進(jìn)行排氣,以免產(chǎn)生氣 體

48、爆炸或是中毒.具體程序如下 alarm: mov a,30h ;將當(dāng)前濃度值送如累加器 clr c ;清除進(jìn)位標(biāo)志 subb a,50h ;與預(yù)警值進(jìn)行判斷 jnc good1 ;若無借位,則當(dāng)前濃度值高于或 者等于預(yù)警值,跳 good1 報(bào)警 setb p1.6 ;關(guān)閉聲光報(bào)警 setb p1.7 clr p2.3 ;關(guān)閉排氣閥門 setb p1.5 ;關(guān)閉黃色 led clr p1.4 ;打開綠色 led(顯示正常) ret good1: clr p1.6 ;打開聲光報(bào)警(危險(xiǎn)報(bào)警) clr p1.7 clr p2.3 ;打開排氣閥門 setb p1.5 ;關(guān)閉黃色 led setb p1

49、.4 ;關(guān)閉綠色 led(顯示不正常? ret 4.2.5 中斷取值子程序 從硬件電路圖可以看出,a/d0809 的 intr 端通過反相器與單片機(jī)的外部中 斷 int0 相連,由 a/d0809 的管腳功能可知,當(dāng) a/d 開始轉(zhuǎn)換送入的模擬電壓時(shí), intr 端為低電平,轉(zhuǎn)換完成后,intr 端變成高電平,通過反相器變成低電平使 單片機(jī) 89c51 產(chǎn)生外部中斷,進(jìn)入中斷處理程序: ;* * * * * * * * * * * * * * * * * into: push acc ;將累加器值壓入堆棧保存 push psw ;將 psw 值壓入堆棧保存 movx a,dptr ;將 a/d

50、 轉(zhuǎn)換好的值送入累 加器 mov 32h,a ;將 a/d 讀得的值存入 32h 保存 clr c subb a,51h ;判斷獲得的電壓是否小于 1v(50) jnc ok1 mov 32h,#00h ;當(dāng)前 a/d 轉(zhuǎn)換的電壓小于 1v, 則 a/d 轉(zhuǎn)換得的示數(shù)為 00 jmp emp1 ok1: mov a,32h call adjust ;調(diào)用 adjust 將其調(diào)整為濃度 對(duì)應(yīng)的 16 進(jìn)制 call addd ;調(diào)用 addd 將其與調(diào)零預(yù)設(shè)值 相加,得到調(diào)整后的 16 進(jìn)制 mov 31h,a ;將調(diào)整后的值送入 31h 保存 emp1: mov ie,#10000000b ;

51、關(guān)閉 int0 中斷使能,關(guān)閉中斷 pop psw ;至堆棧取回 psw 值 pop acc ;至堆棧取回 acc 值 mov 33h,#01h ;中斷完成,設(shè)置完成標(biāo)記 33h 為 1 reti ;* * * * * * * * * * * * * * * * * ; 調(diào)整相加子程序 ;* * * * * * * * * * * * * * * * * adjust: clr c subb a,#32h ;將 a/d 轉(zhuǎn)換的值減 50 再除 10 乘 5 可得當(dāng)前濃度的 16 進(jìn)制值 mov b,#0ah div ab mov b,#05h mul ab ret addd: add a,40h table: db 0c0h,0f9h,0a4h,0b0h,99h db 92h, 82h, 0f8h,80h, 90h end 在中斷處理過程中,因?yàn)?a/d0809 在模擬電壓為 15v 時(shí)送入單片機(jī)的數(shù)值 為 50250,為了使示數(shù)在 099 間變化,編寫數(shù)值轉(zhuǎn)換程序如下: adjust: clr c subb a,#32h ;將 a/d 轉(zhuǎn)換的值減 50 再除 10 乘 5 可

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論