單片機(jī)典型案例開發(fā)(五)
MOVPl,A;撥號(hào)MOV30H.#2;延時(shí)時(shí)間常數(shù)
以上程序若改為其他號(hào)碼時(shí),只需更改TABF面一行的數(shù)據(jù)表即可。
五、使用
平時(shí),該裝置的電源開關(guān)應(yīng)處于關(guān)閉狀態(tài),與該裝置并聯(lián)在一起的電話機(jī)可以正常使用。當(dāng)用戶需要使用回?fù)芊?wù)時(shí),只需將開關(guān)K打開即可,系統(tǒng)加電后指示燈立即點(diǎn)亮,隨即開始按照程序自動(dòng)摘機(jī)和撥號(hào),撥號(hào)時(shí),隨著一個(gè)個(gè)數(shù)字號(hào)碼的發(fā)出,指示燈同時(shí)閃爍,每發(fā)出一個(gè)號(hào)碼,指示燈熄滅一次,號(hào)碼撥完后,指示燈仍處于點(diǎn)亮狀態(tài),延時(shí)大約2s后指示燈熄滅,系統(tǒng)掛機(jī),等待回?fù)堋T撗b置使用完畢以后,應(yīng)將電源關(guān)掉,因?yàn)殡m然線路已處于掛機(jī)狀態(tài),但是電源仍在工作,會(huì)白白消耗電能。
三、單片機(jī)實(shí)現(xiàn)多氣體檢測(cè)系統(tǒng)
氣體傳感器是一種能將氣體種類及其與濃度有關(guān)的信息轉(zhuǎn)換成電氣信號(hào)的裝置。根據(jù)這些電氣信號(hào)的強(qiáng)弱就可以獲得與待測(cè)氣體在環(huán)境中存在情況有關(guān)的信息,從而可以進(jìn)行檢測(cè)、監(jiān)控、報(bào)警。
本設(shè)計(jì)采用酒精傳感器、甲烷傳感器、一氧化碳傳感器等多種氣體傳感器組成傳感器陣列,通過傳感器陣列能把氣體中的特定成分檢測(cè)出來,并將其轉(zhuǎn)化為電信號(hào),然后采用ADC0809 將傳感器輸出的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),運(yùn)用AT89C51 進(jìn)行數(shù)據(jù)處理和計(jì)算,并通過LED 顯示氣體種類和濃度信息,實(shí)現(xiàn)了對(duì)多種氣體的識(shí)別和檢測(cè)。
1 硬件電路設(shè)計(jì)
本設(shè)計(jì)硬件電路由數(shù)據(jù)采集、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理、結(jié)果顯示和報(bào)警等部分組成,涉及的芯片有AD0809 模數(shù)轉(zhuǎn)換芯片、AT89C51單片機(jī)、SUN7474頻率發(fā)生器以及一些氣體傳感器、驅(qū)動(dòng)電路、復(fù)位電路和LED 顯示模塊。系統(tǒng)的功能框圖如圖1 所示。
圖1 系統(tǒng)功能框圖
1.1 氣體傳感器陣列
氣體傳感器陣列是電子嗅覺系統(tǒng)的關(guān)鍵組成單元,相當(dāng)于初級(jí)嗅覺神經(jīng)元,由具有廣譜響應(yīng)特性、交叉靈敏度較大、對(duì)不同氣味/氣體有不同靈敏度的氣敏元件組成。
氣體傳感器是組成氣體傳感器陣列的核心器件。氣體傳感器是一種把氣體中的特定成分檢測(cè)出來,并將其轉(zhuǎn)化為電信號(hào)的器件。通常,氣體傳感器陣列可以采用數(shù)個(gè)單獨(dú)的氣體傳感器組合而成,并采用集成工藝制作,體積小,功耗低,便于信號(hào)的集中采集與處理。單個(gè)氣體傳感器與傳敏陣列在特性上有質(zhì)的區(qū)別,單個(gè)氣體傳感器對(duì)氣味/ 氣體的響應(yīng)可用強(qiáng)度來表示,而氣敏傳感器陣列除了各個(gè)傳感器的響應(yīng)外,在全部傳感器組成的多維空間中形成響應(yīng)模式,在環(huán)境條件一定的情況下,陣列上的響應(yīng)模式與其激勵(lì)是一一對(duì)應(yīng)的,而這正是該系統(tǒng)能對(duì)多種氣味和氣體進(jìn)行辨識(shí)的關(guān)鍵所在。
本設(shè)計(jì)要求實(shí)現(xiàn)對(duì)酒精、甲烷、一氧化碳?xì)怏w的定性和定量分析,首先最重要的工作是選擇合適的傳感器,通過對(duì)性能、可實(shí)現(xiàn)性、價(jià)格等的對(duì)比,針對(duì)酒精氣體,選擇的是MQ-303A酒精傳感器,針對(duì)甲烷氣體,采用的是MQ-4 半導(dǎo)體氣體傳感器,針對(duì)一氧化碳?xì)怏w,選擇的是V-40 一氧化碳傳感器,由這三種傳感器組成傳感器陣列。
該設(shè)計(jì)通過氣體傳感器陣列采集氣體信息,并將采集到的信息轉(zhuǎn)化為電信號(hào),然后送到ADC0809 進(jìn)行模數(shù)轉(zhuǎn)換。
1.2 數(shù)據(jù)采集和數(shù)據(jù)處理系統(tǒng)
由氣體傳感器陣列輸出的微弱電信號(hào),經(jīng)各自信號(hào)放大電路對(duì)信號(hào)進(jìn)行預(yù)處理,使其轉(zhuǎn)換為O ~5V 范圍內(nèi)變化的直流信號(hào),送到A/D 轉(zhuǎn)換電路變換為數(shù)字信號(hào),對(duì)其進(jìn)行數(shù)據(jù)采集處理。
為了方便與89C51 單片機(jī)的連接,本系統(tǒng)選用ADC0809芯片對(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)A / D 轉(zhuǎn)換器,轉(zhuǎn)換結(jié)束后再由ADC0809 向89C51 發(fā)出中斷請(qǐng)求信號(hào),CPU 響應(yīng)中斷請(qǐng)求。通過對(duì)譯碼器的讀操作,讀取轉(zhuǎn)換結(jié)果并送到被測(cè)量的相應(yīng)存儲(chǔ)區(qū)。再重新選擇被測(cè)量,并再次啟動(dòng)A/D轉(zhuǎn)換后中斷返回。ADC0809與單片機(jī)89C51 連線線路如圖2 所示。
圖2 ADC0809 與89C51 的連線線路
微處理器采用的是AT89C51 芯片。
89C51 單片機(jī)是ATMEL、PHILIPS和SST等公司生產(chǎn)的與80C51 兼容的低功耗、高性能8 位單片機(jī),具有比8031 更豐富的硬件資源,特別是其內(nèi)部增加的閃速可電改寫的存儲(chǔ)器Flash ROM給單片機(jī)的開發(fā)及應(yīng)用帶來了很大的方便,且芯片價(jià)格非常便宜。在該系統(tǒng)中89C51 主要對(duì)采集數(shù)據(jù)進(jìn)行處理,按各種氣體濃度的數(shù)學(xué)模型計(jì)算出其濃度,由數(shù)碼管顯示其相應(yīng)的氣體種類及濃度值,當(dāng)濃度超標(biāo)時(shí),進(jìn)行報(bào)警。
該系統(tǒng)還采用了分頻器SUN7474.分頻器對(duì)脈沖信號(hào)進(jìn)行2的n次方分之一的分頻,例如把32768HZ 的脈沖信號(hào)變成1HZ的秒信號(hào)。通常利用T觸發(fā)器實(shí)現(xiàn),每來一個(gè)脈沖后觸發(fā)器狀態(tài)改變一次,經(jīng)過n個(gè)T觸發(fā)器處理后就可以得到2的n次方分之一的分頻信號(hào)。89C51接12MHZ晶振,經(jīng)ALE端后輸出到分頻器為2MHZ,分頻器進(jìn)行分頻后為ADC0809 提供所需的工作時(shí)鐘。
1.3 顯示電路
在該設(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)亮,重復(fù)不止。這樣利用人的視覺停留,好像4 位LED 同時(shí)點(diǎn)亮一樣。
綜上可得,基于單片機(jī)的多氣體檢測(cè)系統(tǒng)的數(shù)據(jù)采集、數(shù)據(jù)處理及結(jié)果顯示電路如圖3。
圖3 多氣體檢測(cè)系統(tǒng)電路
2 軟件設(shè)計(jì)
本設(shè)計(jì)由數(shù)據(jù)采集、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理、顯示和報(bào)警幾個(gè)模塊組成。
主程序流程圖為圖4。
評(píng)論