基于51單片機(jī)的酒精測(cè)試儀設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)的酒精測(cè)試儀設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)的酒精測(cè)試儀設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)的酒精測(cè)試儀設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)的酒精測(cè)試儀設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章 研究?jī)?nèi)容TGS822對(duì)酒精濃度的變化,其阻值產(chǎn)生相應(yīng)的變化,然后通過(guò)取樣電阻分壓的變化表現(xiàn)出來(lái);人體血液酒精濃度的不同,其呼出的氣體中酒精濃度也不同。通過(guò)TGS822對(duì)呼出氣體中酒精濃度的反應(yīng)以取樣電壓的形式送入到ADC0809,進(jìn)行A/D轉(zhuǎn)換后并將轉(zhuǎn)換的數(shù)據(jù)送入單片機(jī)進(jìn)行分析處理,并判斷是否醉酒駕車,再通過(guò)液晶板顯示出來(lái)。DS18B20其自身的溫度傳感器所產(chǎn)生的溫度數(shù)字?jǐn)?shù)據(jù)存入其自身的存儲(chǔ)器,單片機(jī)對(duì)其控制讀出溫度數(shù)據(jù),然后經(jīng)過(guò)計(jì)算處理,將當(dāng)前環(huán)境溫度由液晶板輸出。第2章 總體設(shè)計(jì)2.1 本課題的設(shè)計(jì)任務(wù)及要求2.1.1 設(shè)計(jì)任務(wù)設(shè)計(jì)并制作酒精測(cè)試儀,其組成如圖2.1所示。TGS82

2、2對(duì)酒精濃度的變化,其阻值產(chǎn)生相應(yīng)的變化,然后通過(guò)取樣電阻分壓的變化表現(xiàn)出來(lái);人體血液酒精濃度的不同,其呼出的氣體中酒精濃度也不同。通過(guò)TGS822對(duì)呼出氣體中酒精濃度的反應(yīng)以取樣電壓的形式送入到ADC0809,進(jìn)行A/D轉(zhuǎn)換后并將轉(zhuǎn)換的數(shù)據(jù)送入單片機(jī)進(jìn)行分析處理,并判斷是否醉酒駕車,再通過(guò)液晶板顯示出來(lái)。DS18B20其自身的溫度傳感器所產(chǎn)生的溫度數(shù)字?jǐn)?shù)據(jù)存入其自身的存儲(chǔ)器,單片機(jī)對(duì)其控制讀出溫度數(shù)據(jù),然后經(jīng)過(guò)計(jì)算處理,將當(dāng)前環(huán)境溫度由液晶板輸出。數(shù)字輸出模擬輸出傳感器模數(shù)轉(zhuǎn)換控制輸出單片機(jī)LCD顯示輸出圖2.1系統(tǒng)設(shè)計(jì)方框圖2.1.2 設(shè)計(jì)要求(1)傳感器TGS822的電壓模擬輸出范圍為0

3、-5V;(2)模數(shù)轉(zhuǎn)換芯片ADC0809采樣電壓范圍為0-5V,分辨率為8位,采樣精度為5/256V,達(dá)到256個(gè)量化級(jí)的數(shù)字電壓,其工作頻率為1MHz;(3)單片機(jī)AT89C52工作頻率為6 MHz;(4)LCD顯示器用50K的可調(diào)電阻調(diào)節(jié)使其清晰顯示,消除“鬼影”。2.2 系統(tǒng)整機(jī)原理圖分析如圖2.2系統(tǒng)整機(jī)原理圖,本系統(tǒng)工作原理如下:?jiǎn)纹瑱C(jī)的晶振為6MHz,可以直接通過(guò)ALE口輸出1 MHz為ADC0809作為工作時(shí)鐘而不需要進(jìn)行分頻,然后通過(guò)單片機(jī)的P2.0、P3.7分別控制ADC0809的ALE和START端口進(jìn)行模數(shù)轉(zhuǎn)換;通過(guò)P2.2、P2.3、P2.5分別控制ADDB、ADDC、

4、ADDA端口進(jìn)行選擇模擬數(shù)據(jù)輸入口;通過(guò)P0口進(jìn)行ADC0809數(shù)據(jù)輸出。TGS822的采樣電壓由ADC0809的IN0口輸入,通過(guò)轉(zhuǎn)換后由其D0-D7輸出到單片機(jī)的P0口,然后通過(guò)傳感器的特性公式計(jì)算由P1口將數(shù)據(jù)通過(guò)LCD的DB0-DB7輸出。第3章 系統(tǒng)硬件設(shè)計(jì)3.1系統(tǒng)硬件設(shè)計(jì)原理圖分析本硬件由五部分組成:?jiǎn)纹瑱C(jī)模塊,模數(shù)轉(zhuǎn)換模塊,酒精傳感器模塊,溫度傳感模塊。其系統(tǒng)硬件設(shè)計(jì)原理圖如圖3.2所示,其整機(jī)工作原理如下,本系統(tǒng)由單片機(jī)AT89C2控制,其直接控制三個(gè)模塊:數(shù)轉(zhuǎn)換模塊將酒精傳感器采集到模擬電壓信號(hào)轉(zhuǎn)換成輸送到單片機(jī)控制處理,溫度傳感器DS18B20可以將采集到的溫度信號(hào)直接以

5、數(shù)字信號(hào)的形式傳到單片機(jī),LCD顯示模塊可以將經(jīng)過(guò)單片機(jī)處理過(guò)的酒精氣體濃度和溫度的具體量化值顯示。圖3.1系統(tǒng)硬件設(shè)計(jì)原理圖3.2單片機(jī)模塊單片機(jī)的選擇AT89S52是低功耗、高性能、采用CMOS工藝的8位單片機(jī),其片內(nèi)具有8KB 的可在線編程的Flash 存儲(chǔ)器。該單片機(jī)采用了ATMEL公司的高密度、非易失性存儲(chǔ)器技術(shù),與工業(yè)標(biāo)準(zhǔn)型80C51單片機(jī)的指令系統(tǒng)和引腳完全兼容;片內(nèi)的Flash存儲(chǔ)器可在線重新編程,或者使用通用的非易失性存儲(chǔ)器編程;通用的8位CPU與在線可編程Flash集成在一塊芯片上,從而使AT89S52 功能更加完善,應(yīng)用更加靈活;具有較高的性能價(jià)格比,使其在嵌入式控制系統(tǒng)

6、中有著廣泛的應(yīng)用前景。MCS單片機(jī)都采用40引腳的雙列直插封裝方式。下圖為引腳排列圖, 40條引腳說(shuō)明如下:1主電源引腳Vss和Vcc(1)Vss接地(2)Vcc正常操作時(shí)為+5伏電源2外接晶振引腳XTAL1和XTAL2(1)XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。(2)XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。3控制或與其它電源復(fù)用引腳RST/VPD,ALE/和/Vpp(1)RST/VPD 當(dāng)振蕩器運(yùn)行時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平(由低到高跳變),將使單片機(jī)復(fù)位在Vc

7、c掉電期間,此引腳可接下圖8051引腳排列圖上備用電源,由VPD向內(nèi)部提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。(2) ALE/正常操作時(shí)為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE 引腳以不變的頻率(振蕩器頻率的)周期性地發(fā)出正脈沖信號(hào)。因此,它可用作對(duì)外輸出的時(shí)鐘,或用于定時(shí)目的。但要注意,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖,ALE 端可以驅(qū)動(dòng)(吸收或輸出電流)八個(gè)LSTTL電路。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳接收編程脈沖(功能)。(3)外部程序存儲(chǔ)器讀選通信號(hào)輸出端,在從外部程序存儲(chǔ)取指令(或數(shù)據(jù))期間, 在每個(gè)機(jī)器周期內(nèi)兩次有效

8、, 同樣可以驅(qū)動(dòng)八LSTTL輸入。(4)/Vpp 、/Vpp為內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器選擇端。當(dāng) /Vpp為高電平時(shí),訪問(wèn)內(nèi)部程序存儲(chǔ)器,當(dāng)/Vpp為低電平時(shí),則訪問(wèn)外部程序存儲(chǔ)器。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp)。4、輸入/輸出引腳P0.0 - P0.7,P1.0 - P1.7,P2.0 - P2.7,P3.0 - P3.7。(1)P0口(P0.0 - P0.7)是一個(gè)8位漏極開(kāi)路型雙向I/O口,在訪問(wèn)外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。(2)P1口(P1.0 - P

9、1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。(3)P2口(P2.0 - P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問(wèn)外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。(4)P3口(P3.0 - P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。3.3 模數(shù)轉(zhuǎn)換器模塊ADC0809性能的介紹模數(shù)轉(zhuǎn)換電路的功能是將連續(xù)變化的模擬量轉(zhuǎn)換為離散的數(shù)字量,是架起模擬系統(tǒng)跟數(shù)字系統(tǒng)之間連接的橋梁。對(duì)于本系統(tǒng)而言,就是用于快速、高精度地對(duì)輸入的酒精濃度信號(hào)進(jìn)行

10、采樣編碼,將其轉(zhuǎn)換成單片機(jī)所能夠處理的數(shù)字量。模數(shù)轉(zhuǎn)換電路是本系統(tǒng)的關(guān)鍵部分,其性能的好壞直接影響整個(gè)系統(tǒng)的質(zhì)量。根據(jù)A/D 轉(zhuǎn)換器的工作原理可將A/D 轉(zhuǎn)換器分成兩大類:一類是直接型A/D轉(zhuǎn)換器;另一類是間接型A/D 轉(zhuǎn)換器。在直接型A/D 轉(zhuǎn)換器中,輸入的模擬電壓被直接轉(zhuǎn)換成數(shù)字代碼,不經(jīng)任何中間變量。在間接型A/D 轉(zhuǎn)換器中,首先把輸入的模擬電壓轉(zhuǎn)換成某種中間變量(時(shí)間、頻率、脈沖寬度等等),然后再把這個(gè)中間變量轉(zhuǎn)換為數(shù)字代碼輸出。1主要特性(1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。(2)具有轉(zhuǎn)換起停控制端。(3)轉(zhuǎn)換時(shí)間為100s。(4)單個(gè)+5V電源供電。(5)模擬輸入電壓范圍0+5

11、V,不需零點(diǎn)和滿刻度校準(zhǔn)。(6)工作溫度范圍為-40+85攝氏度。(7)低功耗,約15mW。2內(nèi)部結(jié)構(gòu)ADC0809由4部分邏輯結(jié)構(gòu)構(gòu)成,如圖3.3所示。ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,它由8路模擬開(kāi)關(guān)、地址鎖存與譯碼器、比較器、8位開(kāi)關(guān)樹(shù)型D/A轉(zhuǎn)換器、逐次逼近寄存器、三態(tài)輸出鎖存器等其它一些電路組成。因此,ADC0809可處理8路模擬量輸入,且有三態(tài)輸出能力,既可與各種微處理器相連,也可單獨(dú)工作。輸入輸出與TTL兼容。3外部特性(引腳功能)ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖3.3所示。下面說(shuō)明各引腳功能。IN0IN7:8路模擬量輸入端。2-12-

12、8:8位數(shù)字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號(hào),輸入,高電平有效。START: A/D轉(zhuǎn)換啟動(dòng)信號(hào),輸入,高電平有效。EOC: A/D轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。OE:數(shù)據(jù)輸出允許信號(hào),輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開(kāi)輸出三態(tài)門,輸出數(shù)字量。CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。REF(+)、REF(-):基準(zhǔn)電壓。Vcc:電源,單5V。GND:地。4. ADC0809的工作原理ADC0809的工作過(guò)程是:首先輸

13、入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) AD轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到AD轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開(kāi),轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。圖3.3 ADC0809系統(tǒng)內(nèi)部結(jié)構(gòu)框圖和外部引腳圖3.4酒精傳感器模塊3.4.1傳感器性能分析TGS822氣體傳感器的敏感材料是金屬氧化物,最具代表性的是SnO2。金屬氧化物晶體如SnO2在空氣中被加熱到一定高的溫度時(shí),氧被吸附在

14、的帶一個(gè)負(fù)電荷的晶體表面。然后,晶體表面的供與電子被轉(zhuǎn)移到吸附的氧上,結(jié)果在一個(gè)空間電荷層留下正電荷。這樣,表面勢(shì)能形成一個(gè)勢(shì)壘,從而阻礙電子流動(dòng)。在傳感器的內(nèi)部,電流流過(guò)SnO2微晶的結(jié)合部位(晶粒邊界)。在晶粒邊界,吸附的氧形成一個(gè)勢(shì)壘阻止載流子自由移動(dòng),傳感器的電阻即緣于這種勢(shì)壘。還原性氣體出現(xiàn)時(shí),帶有負(fù)電荷的氧的表面濃度降低,導(dǎo)致晶粒邊界的勢(shì)壘降低。降低了的勢(shì)壘使傳感器的阻值減小了。傳感器阻值和還原性氣體濃度之間的關(guān)系可由下面的一定范圍氣體濃度方程表示:Rs=AC-這里:Rs=傳感器電阻 A=常數(shù) C=氣體濃度 =Rs曲線的斜率費(fèi)加羅氣體傳感器的氣敏素子,使用在清潔空氣中電導(dǎo)率低的Sn

15、O2。當(dāng)存在檢知對(duì)象氣體時(shí),傳感器的電導(dǎo)率隨空氣中氣體濃度增加而增大。使用簡(jiǎn)單的電路即可將電導(dǎo)率的變化,轉(zhuǎn)換為與該氣體濃度相對(duì)應(yīng)的輸出信號(hào)。TGS822 傳感器對(duì)酒精、有機(jī)溶劑靈敏度高,在酒精檢測(cè)器等方面得到廣泛使用。相同特性的 TGS823,采用了陶瓷底座,可以在200的高溫氣氛中使用。表3.3.1 TGS822性能參數(shù)一覽表型號(hào)素子類型TGS8228系列標(biāo)準(zhǔn)封裝對(duì)象氣體塑料、SUS雙重金屬網(wǎng)酒精、有機(jī)溶劑檢測(cè)范圍505000ppm標(biāo)準(zhǔn)回路條件標(biāo)準(zhǔn)試驗(yàn)條件下的電學(xué)特性加熱器電壓VH5.0+0.2V DC/AC回路電壓VCMAX 24VPs15mw負(fù)載電壓加熱器電壓RLRH可變Ps15mw38

16、+3.0 W (室溫)加熱器功率PH660+50mw VH=5.0V傳感器電阻RS300ppm乙醇中 1-10kW靈敏度(Rs的變化率)0.4+0.1Rs(EtOH:300ppm)Rs(EtOH:50ppm)標(biāo)準(zhǔn)試驗(yàn)條件試驗(yàn)氣體條件回路條件20+2, 65+5%RHVC=10.0+0.1V DC/ACVH=5.0+0.05V DC/AC預(yù)熱條件七天以上下圖3.3.1中縱坐標(biāo)也以傳感器電阻比(Rs/Ro)表示,這里的Rs,Ro 定義如下:Rs=含300ppm 乙醇、各種溫/濕度下的電阻值Ro=含300ppm 乙醇、2065%R.H.下的電阻值圖3.3.1不同濃度氣體對(duì)應(yīng)的阻值3.3.2呼出酒精氣

17、體濃度與血液酒精濃度關(guān)系表3.3.2 血液與呼氣酒精含量換算一覽表序 號(hào)呼出氣體中酒精濃度mg/L呼出氣體中酒精濃度10¯6血液中酒精濃度mg/100mL10.022711.85520.045423.691030.068135.531540.090947.432050.113659.282560.136371.133070.159183.023580.181894.864090.2045106.7145100.2272118.5650110.2500130.4555120.2727141.2660130.2954154.1565140.3181166.0070150.3409177.

18、8975160.3636189.7280170.3863201.1585180.4091213.4390190.4318225.3395200.4515237.12100210.6618355.68150220.9091474.24200車輛駕駛?cè)藛T血液中的酒精含量大于或等于80mg/100ml的駕駛行為。表3.3.2血液酒精含量臨界值一覽表行為類別對(duì)    象臨界值(mg/100ml)飲酒駕駛車輛駕駛?cè)藛T20醉酒駕駛車輛駕駛?cè)藛T80由表3.3.2血液酒精含量臨界值可以進(jìn)行定量的分析車輛駕駛?cè)藛T酒后駕駛后血液中的酒精濃度,進(jìn)而對(duì)于該司機(jī)的酒駕行為類別進(jìn)行定性,如血

19、液酒精濃度低于20 mg/100ml,則認(rèn)為是飲酒駕駛,可以對(duì)其酌情處理;如若血液酒精濃度超過(guò)了20 mg/100ml且低于80 mg/100ml,則認(rèn)為是醉酒駕駛,應(yīng)按照國(guó)家交通法規(guī)對(duì)其處理。3.4 LCD顯示模塊1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,其中:引腳 符號(hào) 功能說(shuō)明1 VSS 一般接地2 VDD 接電源(+5V)3 V0 液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比

20、度)。4 RS RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5 R/W R/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6 E E(或EN)端為使能(enable)端,下降沿使能。7 DB0 底4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8 DB1 底4位三態(tài)、 雙向數(shù)據(jù)總線 1位9 DB2 底4位三態(tài)、 雙向數(shù)據(jù)總線 2位10 DB3 底4位三態(tài)、 雙向數(shù)據(jù)總線 3位11 DB4 高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12 DB5 高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13 DB6 高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14 DB7 高4位三態(tài)、 雙向數(shù)據(jù)總線 7

21、位(最高位)(也是busy flang)15 BLA 背光電源正極16 BLK 背光 電源負(fù)極寄存器選擇控制表即為ASCII碼表RS R/W 操作說(shuō)明0 0 寫入指令寄存器(清除屏等)0 1 都busy flag(DB7),以及讀取位址計(jì)數(shù)器(DB0DB6)值1 0 寫入數(shù)據(jù)寄存器(顯示各字型等)1 1 從數(shù)據(jù)寄存器讀取數(shù)據(jù)1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的

22、點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如'A。圖3.4 LCD1602外部引腳圖第4章 系統(tǒng)軟件開(kāi)始設(shè)置第一行顯示內(nèi)容設(shè)置顯示模式顯示第一行內(nèi)容延時(shí)延時(shí)關(guān)顯示延時(shí)初始化DS18B20跳過(guò)讀序列號(hào)清屏延時(shí)啟動(dòng)溫度轉(zhuǎn)換延時(shí)關(guān)顯示初始化延時(shí)跳過(guò)讀序列號(hào)讀取溫度值并計(jì)算設(shè)置第一行顯示位置顯示第一行內(nèi)容設(shè)置第一行顯示內(nèi)容顯示第一行內(nèi)容控制ADC0809轉(zhuǎn)換設(shè)置第二行顯示內(nèi)容讀取數(shù)據(jù)比較計(jì)算顯示第二行內(nèi)容4.1整機(jī)系統(tǒng)流程圖4.1.1ADC程序流程圖計(jì)算讀出數(shù)據(jù)初始化判斷ADC是否

23、轉(zhuǎn)換完畢開(kāi)始 否 否 是單片機(jī)對(duì)ADC進(jìn)行初始化,使其能進(jìn)入正常工作狀態(tài),通過(guò)判斷ADC轉(zhuǎn)換判斷標(biāo)志EOC,看其是否轉(zhuǎn)換完畢,如果沒(méi)有,則繼續(xù)判斷,如若完成則將ADC轉(zhuǎn)換的數(shù)據(jù)由單片機(jī)讀取并計(jì)算,然后進(jìn)入下一環(huán)節(jié)。4.1.2 LCD程序流程圖判斷飲酒狀態(tài)開(kāi)始初始化LCD寫入數(shù)據(jù)判斷LCD是否忙碌飲酒駕駛醉酒駕駛 是 是 否 單片機(jī)對(duì)LCD進(jìn)行初始化,使其能進(jìn)入正常工作狀態(tài),然后判斷LCD是否處于忙碌狀態(tài),如果是則繼續(xù)判斷,如若不是則將從ADC轉(zhuǎn)換后計(jì)算出來(lái)的結(jié)果通過(guò)輸出指令輸出,并判斷計(jì)算出的結(jié)果處于哪種狀態(tài),并輸出。附錄1 酒精測(cè)試儀程序#include<reg51.h>#inc

24、lude<intrins.h>sbit rs=P24; /LCD液晶引腳定義,p0接DB0_DB7sbit rw=P27;sbit ep=P26;sbit ale=P20; /ADC0809引腳定義sbit start=P37;sbit oe=P35;sbit eoc=P36;sbit adda=P25;sbit addb=P22;sbit adc=P23;sbit light=P30; /報(bào)警輸出sbit DQ=P33; /DS18B20輸入腳定義sbit DE=P31;unsigned char tempL=0;unsigned char tempH=0;float tempe

25、rature;unsigned char code dis1="WORK START"/狀態(tài)顯示unsigned char code dis2="ALCOHOL TEST"unsigned char code dis3="mg/100ml"unsigned char code dis4="SAFE DRIVING"unsigned char code dis5="DRINK-DRIVING"unsigned char code dis6="DRUNK DRIVING"void

26、 delay(unsigned char ms) /延時(shí)1unsigned char i,j;while(ms-)for(i=0;i<250;i+)for(j=0;j<50;j+)_nop_();_nop_();void delay2(unsigned int time ) /延時(shí)2unsigned int n;n=0;while (n<time) n+;return;bit lcd_bz() /LCD判忙bit result;rs=0;rw=1;ep=1;_nop_();_nop_();result=(bit)(P0&0x80);ep=0;return result

27、;lcd_wcmd(unsigned char cmd) /寫指令數(shù)據(jù)到LCDwhile(lcd_bz()rs=0;rw=0;ep=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();ep=1;_nop_();_nop_();ep=0;lcd_pos(unsigned char pos) /設(shè)定顯示位置lcd_wcmd(pos | 0x80);lcd_wdat(unsigned char dat) /寫入顯示數(shù)據(jù)到LCDwhile(lcd_bz();rs=1;rw=0;ep=0;P0=dat;_nop_();_nop_();ep=1;_nop_();_nop_()

28、;ep=0;lcd_init() /LCD初始化lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);Init_DS18B20(void) /DS18B20初始化unsigned char x=0;DQ=1;delay2(8);DQ=0;delay2(85);DQ=1;delay2(14);delay2(20);ReadOneChar(void) / 向DS18B20讀一字節(jié)數(shù)據(jù)unsigned char i=0;unsigned char dat=0;fo

29、r(i=8;i>0;i-)DQ=1;delay2(1);DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;delay2(4);return(dat);WriteOneChar(unsigned char dat) /向DS18B20寫一字節(jié)數(shù)據(jù)unsigned char i=0;for(i=8;i>0;i-)DQ=0;DQ=dat&0X01;delay2(5);DQ=1;dat>>=1;delay2(4);ReadTemperature(void) /向DS18B20讀溫度值Init_DS18B20();WriteOneChar(0

30、xcc);WriteOneChar(0x44);delay2(125);Init_DS18B20();WriteOneChar(0xcc);WriteOneChar(0xbe);tempL=ReadOneChar();tempH=ReadOneChar();temperature=(tempH*256)+tempL)*0.0625;delay2(200);return(temperature);main()float x,y,k;unsigned int da,n,temp1,temp2,i,gw,sw,bw,kw,xw;light=0;/數(shù)據(jù)初始化lcd_init();delay(3);lc

31、d_pos(0);i=0;while(dis1i!='0')/顯示開(kāi)始工作lcd_wdat(dis1i);i+;lcd_pos(0x41);i=0;while(dis2i!='0')/顯示開(kāi)始測(cè)試lcd_wdat(dis2i);i+;delay(32);while(1)/無(wú)限循環(huán)測(cè)試lcd_init();/初始化LCDale=0;/初始化ADC0809start=0;adda=0;/定義TGS822信號(hào)輸入引腳號(hào)addb=0;adc=0;_nop_();ale=1;/啟動(dòng) ADC0809start=1;_nop_();start=0;_nop_();_nop_(

32、);_nop_();_nop_();_nop_();_nop_();while(eoc=0);/判斷ADC0809是否轉(zhuǎn)換完畢oe=1;/打開(kāi)ADC0809數(shù)據(jù)鎖存_nop_();da=P1;/讀取轉(zhuǎn)換后數(shù)據(jù)oe=0;y=(2550/da-10)/9.27;/代入傳感器性質(zhì)公式進(jìn)行計(jì)算if(y>2.68)x=61.61-4.08*y;else if(y>2.38)x=139.3-33.3*y;else if(y>2.23)x=218.7-66.7*y;else if(y>2.128)x=288.6-98*y;else if(y>2)x=262.88-85.9*y;

33、else if(y>1.89)x=254.5-81.8*y;else if(y>1.62)x=450-185.2*y;else if(y>1.209)x=347.1-121.7*y;lse if(y>0.822)x=816.5-516.8*y;else if(y>0.635)x=1279.2-1069.5*y;elsex=2238.7-2580.6*y;if(da<=17)x=0;n=(int)(x/0.23698);gw=n%10+0x30;/取出所得數(shù)據(jù)個(gè)、十、百、千每位上的 數(shù),并轉(zhuǎn)換對(duì)應(yīng)的ASCII表中數(shù)據(jù)便于輸出temp1=n/10;sw=temp1%10+0x30;temp2=temp1/10;bw=temp2%10+0x30;kw=temp2/10+0x30;lcd_pos(0x84);/設(shè)定小數(shù)點(diǎn)在LCD顯示位置lcd_wdat(0x2e);/輸入小數(shù)點(diǎn)if(n>=1000)/判斷數(shù)據(jù)大小,按位輸出lcd_pos(0x85);lcd_wdat(gw);lcd_pos(0x83);lcd_wdat(sw);lcd_pos(0x82);lcd_wdat(bw);lcd_pos(0x81);lcd_wdat(kw);e

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論