智能儀器-酒精濃度檢測儀設(shè)計_第1頁
智能儀器-酒精濃度檢測儀設(shè)計_第2頁
智能儀器-酒精濃度檢測儀設(shè)計_第3頁
智能儀器-酒精濃度檢測儀設(shè)計_第4頁
智能儀器-酒精濃度檢測儀設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、綜述對于酒后駕車行為的監(jiān)督在人民的人身和財產(chǎn)安全中起著重要的作用。隨著社會的發(fā) 展,氣體傳感器逐漸向著低功耗、多功能、集成化方向的發(fā)展,以便于更準(zhǔn)確更方便的檢 測出酒精濃度,更大程度上防范事故發(fā)生,因此,便攜式酒精濃度檢測儀具有十分廣闊的 現(xiàn)實市場和潛在的市場要求。h前國際公認(rèn)的酒后駕車的限定有兩種,一種是酒后駕車,一種是酒醉駕車。根據(jù)我 國2003年的修訂規(guī)定,當(dāng)駕駛者每毫升血液屮酒精含量大于或等于0.2mg時,就會被認(rèn) 定為酒后駕車;大于或等于0.8mg時,則會被認(rèn)定為醉酒駕車。當(dāng)駕駛者血液中酒精含量 達到80mg/100mi時,發(fā)生交通事故的兒率是血液中不含酒精時的2. 5倍;達到100

2、mg/100mg 時,發(fā)生交通事故的幾率是血液屮不含酒精時的4. 7倍。即使在少量飲酒的狀態(tài)下,交通 事故的危險也可達到未飲酒狀態(tài)的2倍左右。木文設(shè)計的基于單片機的便攜式酒精濃度檢測儀以單片機和酒精傳感器為核心,異有 lcd實吋顯示濃度值的功能,不同顏色led彩燈顯示酒精濃度的不同范圍,從而判斷司機 是否處于酒駕狀態(tài),如若酒駕則判斷是酒后駕駛還是醉酒駕駛,一旦超過一定閾值即蜂鳴 器報警同時報警燈亮。而且還可以通過按鍵進行待機與檢測功能隨時切換,在待機時進行 簡易計時,超過十分鐘則自動進入休眠狀態(tài),可用硬件復(fù)位來喚醒單片機。本設(shè)計采用c 語言來實現(xiàn)其軟件功能。該儀器硬件電路設(shè)計簡單、軟件功能完善

3、、靈敏度高、工作性能 好,并且具有尺寸小、方便攜帶的優(yōu)點。1方案論證1.1方案設(shè)計與分析本文設(shè)計的便攜式酒精濃度測試儀具有以下特點:(1)數(shù)據(jù)采集系統(tǒng)以at89s52單片機為控制核心,外圍電路帶有l(wèi)cd顯示以及鍵盤 電路,無需其他計算機,用戶就可以與其進行交互工作,完成數(shù)據(jù)的采集、存儲、計算、 分析,顯示,休眠等功能。其中顯示功能如下:a. 酒精含量20mg/100ml時,安全燈(綠色lk)燈)亮;b. 20mg/ml彡酒精含量彡80mg/ml吋,警告燈(黃色led燈)閃爍;c. 80mg/ml彡酒精含量時,危險燈(紅色lh)燈)閃爍,蜂鳴器報警;本儀器酒精含量測試范圍:0-190mg/100

4、inl,要求其測量精度優(yōu)于0. 5%。(2)系統(tǒng)具有低功耗、方便攜帶、高性價比,低成本等特點。(3)從便攜式的角度設(shè)計,系統(tǒng)成功使用了大屏幕lcd顯示器以及小鍵盤。由單片 機系統(tǒng)控制鍵盤和lcd顯示來實現(xiàn)人機交互操作,界面友好。(4)軟件系統(tǒng)采用c語言編寫,既兼顧實時性處理的要求又能很方便地進行數(shù)據(jù)處閣1-1總體設(shè)計框閣本設(shè)計采用的是at89s52單片機,傳感器則選用mq3酒精濃度傳感器。系統(tǒng)將由 mq-3灑精濃度傳感器輸出的微弱電流經(jīng)具奮放大濾波等功能的調(diào)理電路后,輸入以模數(shù) 轉(zhuǎn)換芯片adc0804為核心的轉(zhuǎn)換電路轉(zhuǎn)換為八位數(shù)字信號,再由單片機進行處理,最終 送入lcd液晶顯示屏顯示實時檢測

5、的酒精濃度以及實現(xiàn)超值報警功能,通過判斷酒精濃度 范圍,實現(xiàn)灑后駕駛和醉灑駕駛的判斷。系統(tǒng)上電后自動進入待機狀態(tài),在工作吋可以隨 時通過按鍵控制進入待機狀態(tài),待機狀態(tài)中系統(tǒng)不進行酒精濃度采集、顯示和報警,而是 給傳感器預(yù)熱并顯示十分鐘以內(nèi)的簡易計時,讓使用薺大致掌握預(yù)熱時間。待機狀態(tài)中也 可隨時通過按鍵進入工作狀態(tài)。2信號采集與放大的硬件設(shè)計2.1酒精濃度傳感器的選擇氣體傳感器是氣體檢測系統(tǒng)的核心,通常安裝在探測頭內(nèi)。探測頭通過氣體傳感器對 氣體樣品進行調(diào)理,通常包括濾除雜質(zhì)和干擾氣體、干燥或制冷處理、樣品抽吸,甚至對 樣品進行化學(xué)處理,以便化學(xué)傳感器進行更快速地測量人在選擇傳感器的時候,一定

6、要考慮到穩(wěn)定性、靈敏度、選擇性和抗腐蝕性,mq3酒精 傳感器具有很高的靈敏度、良好的選擇性、長期的使用壽命和可靠的穩(wěn)定性,所以本系統(tǒng) 選擇mq3型酒精傳感器。2. 2采集信號與放大電路圖mq-3氣體傳感器有6個針狀管腳,其屮4個用于信號取出,2個用于提供加熱電流. lm393是由兩個獨立的、高精度電壓比較器組成的集成電路,失調(diào)電壓低,最低為2.0 mv, 專為獲得寬電壓范圍、單電源供電而設(shè)計,也可以用雙電源供電,電源電流低.即使采用 單電源供電,比較器的共模輸入電壓范圍也接近低電平。lm393被設(shè)計成能直接連接ttl 和cmos,當(dāng)用雙電源供電吋,它能兼容mos邏輯電路,這是低功耗lm393相

7、較于標(biāo)準(zhǔn)比較器 的獨特優(yōu)勢2。圖2-1 mq-3酒精濃度傳感器采集信號與放大電路圖mq-3酒精濃度傳感器探頭感知到酒精氣體,mq3開始起作用,輸出的微弱電流送入由 lm393運算放大器和電阻電容構(gòu)成的調(diào)理電路,使信號放大并濾去雜波,經(jīng)放大濾波后有 out輸出。模擬信號輸出端口能輸出0到+vcc (+5v)的模擬信號,當(dāng)檢測的酒精濃度越 大時輸出電壓越高。此端口接入adc0804的6號引腳,實現(xiàn)ad轉(zhuǎn)換3。3 ad轉(zhuǎn)換硬件設(shè)計3. 1 ad轉(zhuǎn)換器的選擇及介紹a/d轉(zhuǎn)換其的主要技術(shù)指標(biāo)包括分辨率(位數(shù))、量化誤差、轉(zhuǎn)換精度和轉(zhuǎn)換時間u。 根據(jù)木文設(shè)計的技術(shù)參數(shù)要求:測量精度優(yōu)于0.5%。從精度方面

8、考慮方案如下:方案一:用8位的a/d轉(zhuǎn)換器,其測量精度為0.39%方案二:用12位的a/d轉(zhuǎn)換器,其測量精度為0.02%從測量精度的方面考慮都符合要求。從a / d轉(zhuǎn)換器的分類方面考慮方案如下:1、逐次比較式a/d轉(zhuǎn)換器:轉(zhuǎn)換時間一般在ns級,轉(zhuǎn)換精度一般在0. 1 %上下, 適用于一般場合。2、積分式a/d轉(zhuǎn)換器:其核心部件是積分器,因此轉(zhuǎn)換時間一般在ms級或更長, 但抗干擾性能強,轉(zhuǎn)換精度可達0.01%或更高。適于數(shù)字電壓表類儀器釆用。3、并行比較式乂稱閃爍式:采用并行比較,其轉(zhuǎn)換時間可達ns級,但抗干擾性能較差,由于工藝限制,其分辨率一般不高于8位。可用于數(shù)字示波器等要求轉(zhuǎn)換速度較快的

9、儀器中。4、改進型是在上述某種形式a/d轉(zhuǎn)換器的基礎(chǔ)上,為滿足某項高性能指標(biāo)而改進或 復(fù)合而成的。例如余數(shù)比較式即是在逐次比較式的基礎(chǔ)上加以改進,使其在保持原有較高 轉(zhuǎn)換速率的前提下精度可達0. 01 %以上?;谝陨媳容^,綜合性價比,選擇8為主次逼近式a/d轉(zhuǎn)換器:adc0809和adc0804。adc0809的功能是將輸入模擬量轉(zhuǎn)換為與其成正比例的數(shù)字量,它具有8路模擬輸入端 門,地址線可決定對哪一路模擬輸入做ad轉(zhuǎn)換.adc0804的功能與adc0809基本相同,不同點在于它有一路輸入。對于本設(shè)計的要求是有一路的輸入信號,所以從性價比的方面考慮選擇adc0804更優(yōu)。3.2本設(shè)計中adc

10、0804外硬件連接gnd,|_ i 1 !kmpfvccl-vctr磉laji rrgnd.l| 卜gndhvccgnd10kri6cz1'10knicsvcrd(1krwrdrotvkixd»1ltrdr2v1n(+1db3vinudb4aonddb5vrddh6gnddb7a1xw40 12 3 4 5 6 7-v一、一 7-7?cikd圖3-1 adc0804外圍電路連接3.3本設(shè)計中ad轉(zhuǎn)換軟件實現(xiàn) 3.3. 1 adg程序流程圖圖3-2 adc程序流程圖單片機對adc進行初始化,使其能進入正常工作狀態(tài),通過判斷adc轉(zhuǎn)換判斷標(biāo)志eoc, 看其是否轉(zhuǎn)換完畢,如果沒有,

11、則繼續(xù)判斷,如若完成則將adc轉(zhuǎn)換的數(shù)據(jù)由單片機讀取 并計算,然后進入下一環(huán)節(jié)。3. 3. 2 adc轉(zhuǎn)換原則及程序轉(zhuǎn)換原則:acd0804有八位數(shù)據(jù)輸出口,即轉(zhuǎn)換精度為256,它將最高值分為255份, 當(dāng)?shù)玫揭粋€轉(zhuǎn)換數(shù)據(jù)時,用最大值除以255,再乘以該數(shù)據(jù)值便是最終轉(zhuǎn)換值。ad轉(zhuǎn)換子函數(shù)分析: void ad ()wr=0;/將wr拉低,讓芯片開始讀6、7號引腳電壓值delay (1);/延吋約一毫秒,讓芯片忙完wr = 1;/將wr拉高,上升沿到來時,ad轉(zhuǎn)換開始delay (5);/軟件延時約五毫秒,等待ad轉(zhuǎn)換完成p3=0xff;/將p3門全部拉高,等待測試數(shù)據(jù)delay (1);/延

12、時一會,避免紊亂rd:0;/將rd拉低,芯片送出數(shù)據(jù)delay (1);/延時約一毫秒,讓p3門tcmp=p3; rd=l;/將數(shù)踞存入temp /將rd拉高4單片機最小系統(tǒng)模塊設(shè)計cpu最小系統(tǒng)是單片機運行工作起來所必需的最基本電路組成。它包括電源電路、時 鐘電路、復(fù)位電路。最小硬件電路組成見圖4-1。閣4-1最小系統(tǒng)電路閣4. 1at89s52 簡介本設(shè)計以at89s52單片機為控制核心。單片機也就是mcu,即微控制單元。at89s52是 低功耗、高性能、采用cmos工藝的8位單片機,其片內(nèi)具有8kb的可在線編程的wash存 儲器,該單片機采用了atmel公司的高密度、非易失性存儲器技術(shù),

13、與工業(yè)標(biāo)準(zhǔn)型80c51單 片機的指令系統(tǒng)和引腳完全兼容,它能以3v的超低電壓工作,晶振吋鐘最高可達24mhz。 通用的8位cpu與在線可編程hash集成在一塊芯片上,從而使at89s52功能更加完善,應(yīng) 用更加靈活;具有較高的性能價格比,使其在嵌入式控制系統(tǒng)中有著廣泛的應(yīng)用前景5。 4.2復(fù)位電路設(shè)計vccs1sw-pb18.x2reseto-r1410kc2+100ufgnd圖4-2復(fù)位電路電路圖單片機復(fù)位的兩種基木形式:上電復(fù)位和rst按鍵復(fù)位。本設(shè)計采用rst按鍵復(fù)位。在復(fù)位電路的設(shè)計中,要選擇合適的元器件參數(shù),電阻的 阻值不宜過大或者過小,過人使得rst不可能獲得高電平,過小也不能起到

14、限流作用。另 外電容容值也應(yīng)該合適,要保證放電吋,rst引腳上的高電平也能保持兩個機器周期以上 的高電平。4. 3晶振電路設(shè)計p30/rxdp31/txdp32/ixt0p33/int1p34/t0p35zt1xix2閣4-3品振電路電路閣本系統(tǒng)中為了盡量降低功耗的原則,采用了內(nèi)部時鐘方式。晶振全稱為晶體振蕩器(英 文crystal oscillators),其作用在于產(chǎn)生原始的時鐘頻率。內(nèi)部時鐘方式的電路實現(xiàn) 方法是在xtal1和xtal2引腳外接石英晶體,與單片機片內(nèi)震蕩電路形成震蕩回路,圖屮 電容c3和c4的容值為22pf,它們的作用是加快起振和穩(wěn)定頻率。5顯示模塊軟硬件設(shè)計5.1lcd

15、1602 簡介lcd 1602每行可以輸出16個字符,可以顯示兩行,故稱1602,它不帶中文字庫,故 只能顯示數(shù)字、字母和普通字符。1602字符型lcd通常有14條引腳線或16條引腳線的 lcd,多出來的2條線是背光電源線。在本設(shè)計中不檢測液晶的忙與閑,用前而對待adc0804 的方法,用軟件延時來等待液晶的忙操作時間。液晶顯示輸出d0到d7 u接p0.0到p0.7,單獨使用一個口,另外還要接上10k上拉 電阻來提高p0 口帶負(fù)載能力。當(dāng)處于讀狀態(tài)時,rs處于低脈沖,r/w為高脈沖,e為高脈沖,d(fd7=狀態(tài)字當(dāng)處于讀數(shù)據(jù)時,rs為高脈沖,r/w為高脈沖,e為高脈沖,d(n)7=數(shù)據(jù)。當(dāng)處于

16、寫指令吋,rs為低脈沖,r/w為低脈沖,1)01)7=指令碼,?.=高脈沖。當(dāng)處于寫數(shù)據(jù)時,rs為高脈沖,r/w為低脈沖,e為高脈沖,d0d7=數(shù)據(jù)。5.2本設(shè)計中l(wèi)cd1602的硬件連接eat>p rp/p37 tvkp36 l£ prdo psemdo dld2d"p4d5 d6d7"pr112 34567s9圖5-1 lcd 1602硬件連接圖5.3液晶寫命令子函數(shù)和寫數(shù)據(jù)子函數(shù)程序分析在初始化函數(shù)void init () *,已將r/w拉低(對應(yīng)lcden=0;語句),即只 對液晶進行寫操作,不讀液晶狀態(tài)。之前有位定義 sbit lcdrs=p2a5

17、; sbit lcdrw=p2a6; sbit lcden=p2a7;寫命令函數(shù)各語句分析:void write_com(uchar com) lcdrs=0; /將rs拉低,對指令操作,上電時是默認(rèn)高電平 p0=com; /對p0賦值,該值是對應(yīng)命令碼,com為形參 delay (5) ;/延吋約五毫秒lcden=l; /e拉高,讓液晶讀p0 口,寫入對應(yīng)命令碼delay (5);/延時約五毫秒,讓液品忙完再對其操作,防止數(shù)據(jù)丟失lcden=0; /將 e 拉低寫數(shù)據(jù)函數(shù)各語句分析:void write com(uchar da) lcdrs=l; /將rs拉低高(讀寫數(shù)據(jù)),說明對數(shù)據(jù)操作

18、 p0=da;/對p0賦值,該值是要寫入的數(shù)據(jù),da為形參delay (5);/延時約五毫秒lcden=l; /e拉高,讓液晶讀pom,寫入數(shù)據(jù)delay(5);/延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)丟失lcdcn=o; /將 e 拉低值得注意的是,在寫數(shù)據(jù)的操作中,寫入的都是字符ascii碼,例如想寫1,讓液晶 在某處顯 1,可寫 write data ( 1);或者 write data (0x30+1)。5.4本設(shè)計中用的液晶指令介紹一些指令碼的介紹:0x38:液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行,并.每個字符顯 示處的點陣為5x7;oxoc:不顯示光標(biāo),光標(biāo)不閃

19、爍;0x06:在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動;1即0x01:清屏指令,即將液晶內(nèi)部存儲數(shù)據(jù)清楚,地址指針指向零;0x80+:設(shè)置寫入數(shù)據(jù)的地址,所加的就是對應(yīng)地址。5.5字符串顯示和數(shù)據(jù)實時更新的實現(xiàn)1) 寫字符串子程序:void write_str(uchar 氺p)while (*p) write_data(*p+);這里靈巧的應(yīng)用了數(shù)組指針,比傳統(tǒng)的for嵌套循環(huán)寫入方便很多。用while(*p) 自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱悖鲅h(huán)。如想寫入"ac value:",只需先定義 數(shù)組 uchar code str=ac value:",再

20、寫語句 write_str(str);寫完后指針變?yōu)榱悖?自動結(jié)束。2) 數(shù)據(jù)實時更新的實現(xiàn)方法,檢測時不斷調(diào)用顯示子函數(shù),display();顯示函數(shù)如t:void displayouint value;/定義局部變量valueuchar a,b,c;/定義局部變量a、b、cvalue=3.92*temp;/獲得value值,它是以ppm為單位a=value/100;/a 為 value 的百位b=value%100/10;/b 為 value 的十位c=value%10;/c 為 value 的個位write_com(0x80+0x40+4); /將數(shù)據(jù)寫在第二行,第五個字符處 write

21、_data(0x30+a);/在第二行,第五個字符處寫入value百位write_com(0x80+0x40+5);/將數(shù)據(jù)寫在第二行,第六個字符處write_data(0x30+b);/在第二行,第六個字符處寫入value十位write_com(0x80+0x40+6);/將數(shù)據(jù)寫在第二行,第七個字符處write_data(0x30+c);/在第二行,第七個字符處寫入value個位在循環(huán)語句中不斷調(diào)用ad轉(zhuǎn)換程序,ad();,又不斷調(diào)用顯示函數(shù),數(shù)據(jù)就能實時檢 測更新。在待機時,循環(huán)程序中不斷執(zhí)行語句:write_com(0x80+6); /將數(shù)據(jù)寫在第一行,第七個字符處 wri te_da

22、ta( table fa);"在第一行,第七個字符處寫入時鐘的分鐘write_com(0x80+7); /將數(shù)據(jù)寫在第一行,第八個字符處write_data(tableb); /在第一行,第八個字符處寫入閃爍的冒號write_com(0x80+8); /將數(shù)據(jù)寫在第一行,第九個字符處write_data(tab 1 ec); /在第一行,第九個字符處寫入時鐘的秒鐘十位write_com(0x80+9); /將數(shù)據(jù)寫在第一行,第十個字符處write_data(table d); /在第一行,第十個字符處寫入時鐘的秒鐘個位由于是在不斷循環(huán)調(diào)用,即不斷數(shù)據(jù)刷新,而a、b、c、d的改變是通過

23、定時器零實現(xiàn) 的。6其它外圍設(shè)備軟硬件設(shè)計6.1報警電路軟硬設(shè)計 6.1.1硬件部分設(shè)計vcci*didadblk,ri1 470ri2#70pl.or23r24470470pijpl.2pl.3pl.4led圖6-1報警電路將蜂鳴器的正端接電源正,負(fù)端接pl.o。低電平冇效,蜂鳴器響起。da, db, dc為檢測報警指示燈。da為濃度不超限的指示燈,db與dc分別為酒后駕駛指示燈和醉酒駕駛指示燈,低電平有效。當(dāng)酒精含量20mg/100ml時,安全燈(綠色lk)燈)亮;當(dāng)20mg/ml彡酒精含量彡80mg/ml.吋,警告燈(黃色led燈)閃爍;當(dāng)80mg/ml彡酒精含量時,危險燈(紅色led燈

24、)閃爍,蜂鳴器報警。6.1.2軟件部分設(shè)計/定義蜂鳴器/定義報警燈位定義語句: sbit beep=pl 0; sbit da=pl 2; sbit db=pc3; sbit dc=pl4:用程序讓蜂鳴器響:beep=o;/低電平輸出吋,蜂鳴器打開用程序讓蜂鳴器關(guān)閉:beep=l;/高電平輸出吋,蜂鳴器關(guān)閉用程序?qū)a, db, dc點亮:da =0;dc =0;/低電平輸出吋,da, db,dc點亮用程序?qū)a, db,dc熄火:da =1;db =1;dc =1;/高電平輸出吋,da,db,dc熄火6.2待機指示燈軟硬件設(shè)計6.2.1硬件部分設(shè)計vccdi4701)1.1圖6-2待機指示燈

25、電路發(fā)光二極管d1為待機指示燈,它的正端接電源正,負(fù)端與470k電阻相連再接上p1. 1。低電平有效,d1點亮,開始待機。電阻起到限流電阻的作用。6. 2.2軟件部分設(shè)計位定義語句:sbit dl=pri;/待機指示燈用程序?qū)1點亮:dl=0;/低電平輸出時,d1點亮用程序?qū)1熄滅:dl=l;/高電平輸出時,d1熄滅6.3按鍵軟硬件設(shè)計6.3.1硬件部分設(shè)計s2和s3分別和單片機的p2.1和p2.0,再與gnd相接。s2為待機控制按鍵。s3為檢 測控制按鍵。r18和r19與vcc相連再并接在開關(guān)前,是為了在松手時,使i/o獲得穩(wěn)定 的高電平。6. 3.2軟件部分設(shè)計位定義語句:sbitkl

26、=p2a0; /s3 位定義 sbit k2=p2al; /s2 位定義 s2按鍵檢測:if(kl=o)/檢測按鍵是否按下delay(5); /消抖if(kl=o) /再檢測按鍵是否按下flag=o;/寫入耍進行的操作,這里是將標(biāo)志數(shù)flag置零while(!kl); /松手檢測s3按鍵檢測:if(k2=0)/檢測按鍵是否按下delay(5); /消抖if(k2=0) /再檢測按鍵是否按下flag=l;/寫入耍進行的操作,這里是將標(biāo)志數(shù)flag置一while(!k2); /松手檢測6.4電源電路如上圖為本設(shè)計的電源電路。接入220v交流電后從變壓器輸出12v交變電壓,再經(jīng) 過橋式整流電路整流,

27、輸出直流電。穩(wěn)壓芯片7805使電壓穩(wěn)定在5v, c5和c6為電解電容起到濾除雜波的作用6。s4為緊鎖開關(guān),電源總開關(guān)。d4與r17串聯(lián),跨接在vcc與gnd之間,作為電源指示燈。6.5休眠(空閑)狀態(tài)的設(shè)定當(dāng)單片機進入掉電模式時,外部晶振停振、cpu、定時器、串行口全部停止工作,只 有外部屮斷繼續(xù)工作。使單片機進入休眠模式的指令將成為休眠前單片機執(zhí)行的最后一條 指令,進入休眠模式后,芯片中程序未涉及到的數(shù)據(jù)存儲器和特殊功能寄存器中的數(shù)據(jù)都 將保持原值??捎赏獠恐袛嗟碗娖接|發(fā)或由下降沿觸發(fā)中斷或者硬件復(fù)位模式換醒單片 機,需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續(xù)運行,當(dāng)使用硬件復(fù)

28、 位喚醒單片機時,程序?qū)念^開始執(zhí)行。本文屮則采用硬件復(fù)位喚醒單片機。讓單片機進入休眠(空閑)模式的目的是為了降低系統(tǒng)的功耗,例如在正常使用萬用 表時表內(nèi)部的單片機處于正常工作模式,當(dāng)不用時,又忘記了關(guān)掉萬用表的電源,大多數(shù) 表在等待數(shù)分鐘后,若沒有人為操作,它便會自動將液晶顯示關(guān)閉,以降低系統(tǒng)功耗,通 常類似這種功能的實現(xiàn)就是使用了單片機的空閑模式或是掉電模式。以stc89系列單片機 為例,當(dāng)單片機正常工作時的功耗通常為4ma7ma,進入空閑模式時其功耗降至2ma,當(dāng) 進入掉電模式吋功耗可降至0. 1 ua以下。所以采用休眠對于低功耗是非常重要的。7軟件設(shè)計7. 1主程序流程為了能讓主函數(shù)分

29、清是執(zhí)行執(zhí)行待機程序還是檢測程序報警程序,引進標(biāo)志數(shù)flag。 當(dāng)flag為1時執(zhí)行待機程序;當(dāng)flag為0時執(zhí)行檢測報警程序.在初始化函數(shù)中先將flag 置1,上電后則進入待機狀態(tài)。按下kl后使flag置0,執(zhí)行檢測報警程序。按鍵k2后使 flag置1,又執(zhí)行待機程序,kl、k2均為開關(guān)。下圖為系統(tǒng)執(zhí)行檢測功能和待機功能的選擇流程圖:圖7-2待機與檢測程序流程圖7. 3定時器與定時器中斷本設(shè)計在待機時,執(zhí)行一個簡易的十分鐘以內(nèi)的計時程序。這時用定時器零產(chǎn)生屮斷, 讓其計時。定時器是獨立與cpu的單獨部件,與軟件延時比起來,它不占用程序時間,定 時很精確。當(dāng)時間到一定時,它就產(chǎn)生定時中斷,讓主

30、程序讓執(zhí)行定時器中斷函數(shù)。設(shè)置tmod=0x01;使定時器零工作在方式一,工作方式一是十六位不能自動重裝初 值的方式,所以在進入定時器屮斷函數(shù)后要重新裝初值m。心得與體會木文給出了基于單片機的便攜式酒精濃度檢測儀的設(shè)計方法,設(shè)計過程包括了硬件電 路設(shè)計和軟件程序的編寫兩部分。硬件電路部分結(jié)構(gòu)簡單、使用方便、靈活性強,適合大 眾化使用。軟件部分采用模塊化設(shè)計思想,各個子程序的功能相對獨立,便于調(diào)試和修改。木論文設(shè)計的便攜式酒精濃度檢測儀可應(yīng)用在實際生活中,用于警方可以監(jiān)督駕駛員 的醉酒行為,亦可以用在特定場合,例如酒精生產(chǎn)工廠等,進行酒精濃度的檢測,防止惡 性爆炸事件的發(fā)生,減少大型事故的發(fā)生,

31、避免人員傷亡,從而保證丫人民的生命和財產(chǎn) 安全,對人們的生活非常重要,所以此便攜式酒精濃度檢測儀具有實際意義,可廣泛應(yīng)用 在居民生產(chǎn)生活中。本設(shè)計編程采用c語言,本人非常認(rèn)真地且獨立地完成了本課程設(shè)計的全部工作,有 電路圖的設(shè)計,原理圖的繪制,程序的編寫與調(diào)試、論文的撰寫。在設(shè)計中查過許多資料, 請教過老師和同學(xué)同時在設(shè)計過程中也學(xué)到了許多在書木上學(xué)不到的東丙的知識,通過此 次課程設(shè)計很好的鍛煉了自己的學(xué)習(xí)能力。致謝本次課程設(shè)計設(shè)計是在指導(dǎo)老師李雅梅老師的悉心指導(dǎo)下,還有許多同學(xué)的幫助下完 成的。在設(shè)計的過程中李老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,優(yōu)秀的學(xué)術(shù)底蘊,孜孜不悔的教學(xué)精神, 平易近人的人格魅力,對我

32、影響很大,在她的細(xì)心指導(dǎo)下我順利的完成了本次的課程設(shè)汁。此外,我周圍的同學(xué)也在我為一些問題困惑時,給予了我很大的幫助,教會了我許多 知識,例如繪圖軟件的應(yīng)用等等。在此向我向李老師表示深深地感謝!也對所冇幫助過我課程設(shè)計的人在此一并表示感 謝!參考文獻1 岳睿.警用呼氣式酒精傳感器的研宄進展j.化學(xué)傳感器,2006, 26(3): 6-11.2 祝詩平.傳感器與檢測技術(shù)m.北京:北京大學(xué)出版社,2006.3 袁劍蓉,金建祥,張渝暉.一種高精度、低成本、多量程的a/d轉(zhuǎn)換技術(shù)j.自動化儀 表,2006, 8(08) :22-25.4 李建忠.單片機原理及應(yīng)用m.西安電子科技大學(xué)出版社,2008.5

33、 王幸之.at89系列單片機原理與接口技術(shù)m.北京:北京航空航天大學(xué)出版社,2004.6 李振梅.模擬電子技術(shù)基礎(chǔ)m.北京:高等教育出版社,2010.7 邱力.c語言程序沒計m.北京:清華大學(xué)出版社,2004.8 郭天祥.新概念51單片機c語言教程m.北京:電子工業(yè)出版社,2009.jnd附錄一硬件設(shè)計原理-c3vcch(ind-i卜vccixmtaolt(ini)iiikcjlr1601(svcr芯clkrn贈(wuuiimkdk卿,iwvlsi)dwa(idiwviefi1>w、gsdikntr.r-ie:tigsd(vlkl) lu) i.uj i1unrsv, i;ipiop1k

34、>mlpoipl?p1i?f1jpo)p14pwpljwbp16p06fitpippjorxu1-k30w1wivaws52mivrip2)f1+h)p24pj>tlp2sxiitlvpkx2ran? wkp16 alj jwrfshtifnlc讀fond入virbn附錄二程序/木木木木木木木木木木木greg52 */#include<reg52. h>vjx v!,v!,vjx v!,vjx v!,vjx v!,vjx v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,

35、v!,v!,v!,v!,v!,v!,v!,'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1、'1

36、、'1、'1、/* 、'、【v !/7> f l « f/#define uint unsigned int#define uchar unsigned char! k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x

37、 k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x kl/iy?x/a r/r| 1 / * i rfsbit beep=pl 0;sbit dl=prisbit da=pl 2sbit db=pl 3sbit dc=pl 4sbit kl=p2 0sbit k2=p2"lsbit lcdrs=p2 5sbit l

38、cdrw=p2 6sbit lcden=p2 7sbit cs=pl 5sbit rd=pl 6sbit wr=p17if/tx zfx /氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/uchar code str=ac value:;uchar code stroe=,zppmz,;uchar code table="0123456789:"vjx v!,v!,vjx v!,vjx v!,vjx v!,vjx v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!

39、,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,v!,'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、'i、

40、'i、'i、'i、'i、/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺g#3¥4$胃氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/uchar flag,temp, a, b, c, d, tt;lf/tx zfx /void init ();void delay (uint); void write_str(uchar *) void write_com(uchar); void write_ data(uchar); void ad ();void display0;/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺了,|hj=j氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺

41、氺氺氺氺氺氺/初始化函數(shù)/有無符號整型形參的延吋函數(shù);/向液晶寫入字符串的函數(shù)/液晶寫命令函數(shù) /液晶寫數(shù)據(jù)函數(shù)/ad轉(zhuǎn)換函數(shù)/酒精濃度顯示函數(shù)! k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k

42、»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x k»x kl/i/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/void main()init(); while (1)/調(diào)用初始化函數(shù)if(kl=o)/檢測按鍵是否按下delay(5); if (kl=o)flag=o; while(!kl);if(k2=0)delay ; if(k2=0)fla

43、g=l; while (!k2);while (flag=o)/消抖,將程序的執(zhí)行暫停五毫秒 /再檢測按鍵是否按下/寫入要進行的操作,這里是將標(biāo)志數(shù)flag置零 /松手檢測如果kl取反/按鍵檢測/消抖,將程序的執(zhí)行暫停五毫秒 /再檢測按鍵是否按下/寫入要進行的操作,這里是將標(biāo)志數(shù)flag置一 /松手檢測/執(zhí)行檢測報警程序tro二0;/采用定時器零產(chǎn)生中斷dl=l;/發(fā)光二極管1為高電平,待機指示燈為關(guān)狀態(tài)write_com(l) ;/清屏操作writc_com(0x80) ; /液晶初始化指令,讓液晶按每行顯示16個字 顯不兩frwrite_str (str); writecom(0x80+0

44、x40+9); write_str(stro); while(flag=o)ad();display ();if(temp>=20)if(20<=temp<=80)/為酒后駕駛beep=0;db=o;if (tcmp>=80)/為醉酒駕駛beep=0;dc=o; /紅燈亮起elsebeep=l;/未飲酒ixda=o;/綠燈亮起if(kl=o)/按鍵檢測delay ; if(kl=o)flag=o; while(!kl);if(k2=0)/按鍵檢測delay (5); if(k2=0)flag=l; while (!k2);while (flag=l)/執(zhí)行待機程序bee

45、p=l;da=ldb=l/檢測指不幻為關(guān)狀態(tài)dc=ltt=oa二 0;b=10;c=0;d=0;write_com(l);dl=0; 7/待機指示燈為開狀態(tài) th0= (65536-50000)/256; tl0= (65536-50000)%256;tro二1;while (flag=l)write_com(0x80+6) ; /將數(shù)據(jù)寫在第一行,第七個字符處 write_data(tablea) ;/在第一行,第七個字符處寫入時鐘的分鐘 write_com(0x80+7) ;/將數(shù)據(jù)寫在第一行,第八個字符處write_data(tableb) ;/在第一行,第八個字符處寫入閃爍的冒號wri

46、te_com(0x80+8) ;/將數(shù)據(jù)寫在第一行,第九個字符處write_data(tablec) ;/在第一行,第九個字符處寫入時鐘的秒鐘十位 write_com(0x80+9) ;/將數(shù)據(jù)寫在第一行,第十個字符處write_data(tabled) ;/在第一行,第十個字符處寫入時鐘的秒鐘個位if (kl=0)/按鍵檢測tdelay ;if(kl=o)flag=0;while(!kl); iiif(k2=0)delay ;if(k2=0) flag=l; while (!k2);/按鍵檢測、j'、j'、j'、j'、j'、j'、j'、

47、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、i#t%,!、/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺i?i (氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/void i

48、nit()lcdrw=0; lcden二0;wri te_com(0x38) ;/液晶初始化指令,讓液晶按每行顯示16個字符,顯示 兩行,并且每個字符顯示處的點陣為5x7; _write_com(0x0c) ; /不顯示光標(biāo),光標(biāo)不閃爍; write_com(0x06) ; /在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動 cs 二0;flag=l; b=10;tm0d=0x01; /定時器零工作方式為方式一 ea:1;rto=1;six six six six six six six six six six six six six six six six six six six six six s

49、ix six six six six six six six six six six six six six six six six six six six/ <1/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺 f ji 氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/void delay(uint z)for (x=110;x>0;x) for (y=z;y>0;y); _void write_str(uchar *p) / 寫字符串子程序 _ whi le(*p)write_data(*p+) ; /用while(*p)自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱?,跳出循環(huán) / / /

50、4、/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺g氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/void write_com(uchar com) _lcdrs=0;/將rs拉低,說明對指令操作,上電時是默認(rèn)高電平p0=com;/對p0賦值,該值是對應(yīng)命令碼,com為形參delay (5);/延時約五毫秒lcden=l;/e拉高,讓液晶讀p0 口,寫入對應(yīng)命令碼delay(5);/延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)丟失lcden=0;/將 e 拉低、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j'、j&#

溫馨提示

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

評論

0/150

提交評論