




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
...wd......wd......wd...綜述對于酒后駕車行為的監(jiān)視在人民的人身和財產(chǎn)安全中起著重要的作用。隨著社會的開展,氣體傳感器逐漸向著低功耗、多功能、集成化方向的開展,以便于更準(zhǔn)確更方便的檢測出酒精濃度,更大程度上防范事故發(fā)生,因此,便攜式酒精濃度檢測儀具有十分廣闊的現(xiàn)實(shí)市場和潛在的市場要求。目前國際公認(rèn)的酒后駕車的限定有兩種,一種是酒后駕車,一種是酒醉駕車。根據(jù)我國2003年的修訂規(guī)定,當(dāng)駕駛者每毫升血液中酒精含量大于或等于0.2mg時,就會被認(rèn)定為酒后駕車;大于或等于0.8mg時,則會被認(rèn)定為醉酒駕車。當(dāng)駕駛者血液中酒精含量到達(dá)80mg/100ml時,發(fā)生交通事故的幾率是血液中不含酒精時的2.5倍;到達(dá)100mg/100mg時,發(fā)生交通事故的幾率是血液中不含酒精時的4.7倍。即使在少量飲酒的狀態(tài)下,交通事故的危險也可到達(dá)未飲酒狀態(tài)的2倍左右。本文設(shè)計的基于單片機(jī)的便攜式酒精濃度檢測儀以單片機(jī)和酒精傳感器為核心,具有LCD實(shí)時顯示濃度值的功能,不同顏色LED彩燈顯示酒精濃度的不同范圍,從而判斷司機(jī)是否處于酒駕狀態(tài),如假設(shè)酒駕則判斷是酒后駕駛還是醉酒駕駛,一旦超過一定閾值即蜂鳴器報警同時報警燈亮。而且還可以通過按鍵進(jìn)展待機(jī)與檢測功能隨時切換,在待機(jī)時進(jìn)展簡易計時,超過十分鐘則自動進(jìn)入休眠狀態(tài),可用硬件復(fù)位來喚醒單片機(jī)。本設(shè)計采用C語言來實(shí)現(xiàn)其軟件功能。該儀器硬件電路設(shè)計簡單、軟件功能完善、靈敏度高、工作性能好,并且具有尺寸小、方便攜帶的優(yōu)點(diǎn)。1方案論證1.1方案設(shè)計與分析本文設(shè)計的便攜式酒精濃度測試儀具有以下特點(diǎn):〔1〕數(shù)據(jù)采集系統(tǒng)以AT89S52單片機(jī)為控制核心,外圍電路帶有LCD顯示以及鍵盤電路,無需其他計算機(jī),用戶就可以與其進(jìn)展交互工作,完成數(shù)據(jù)的采集、存儲、計算、分析,顯示,休眠等功能。其中顯示功能如下:A.酒精含量<20mg/100ml時,安全燈〔綠色LED燈〕亮;B.20mg/ml≤酒精含量≤80mg/ml時,警告燈〔黃色LED燈〕閃爍;C.80mg/ml≤酒精含量時,危險燈〔紅色LED燈〕閃爍,蜂鳴器報警;本儀器酒精含量測試范圍:0-190mg/100ml,要求其測量精度優(yōu)于0.5%。〔2〕系統(tǒng)具有低功耗、方便攜帶、高性價比,低本錢等特點(diǎn)?!?〕從便攜式的角度設(shè)計,系統(tǒng)成功使用了大屏幕LCD顯示器以及小鍵盤。由單片機(jī)系統(tǒng)控制鍵盤和LCD顯示來實(shí)現(xiàn)人機(jī)交互操作,界面友好。〔4〕軟件系統(tǒng)采用C語言編寫,既兼顧實(shí)時性處理的要求又能很方便地進(jìn)展數(shù)據(jù)處理。1.2設(shè)計總體框圖圖1-1總體設(shè)計框圖本設(shè)計采用的是AT89S52單片機(jī),傳感器則選用MQ—3酒精濃度傳感器。系統(tǒng)將由MQ-3酒精濃度傳感器輸出的微弱電流經(jīng)具有放大濾波等功能的調(diào)理電路后,輸入以模數(shù)轉(zhuǎn)換芯片ADC0804為核心的轉(zhuǎn)換電路轉(zhuǎn)換為八位數(shù)字信號,再由單片機(jī)進(jìn)展處理,最終送入LCD液晶顯示屏顯示實(shí)時檢測的酒精濃度以及實(shí)現(xiàn)超值報警功能,通過判斷酒精濃度范圍,實(shí)現(xiàn)酒后駕駛和醉酒駕駛的判斷。系統(tǒng)上電后自動進(jìn)入待機(jī)狀態(tài),在工作時可以隨時通過按鍵控制進(jìn)入待機(jī)狀態(tài),待機(jī)狀態(tài)中系統(tǒng)不進(jìn)展酒精濃度采集、顯示和報警,而是給傳感器預(yù)熱并顯示十分鐘以內(nèi)的簡易計時,讓使用者大致掌握預(yù)熱時間。待機(jī)狀態(tài)中也可隨時通過按鍵進(jìn)入工作狀態(tài)。2信號采集與放大的硬件設(shè)計2.1酒精濃度傳感器的選擇氣體傳感器是氣體檢測系統(tǒng)的核心,通常安裝在探測頭內(nèi)。探測頭通過氣體傳感器對氣體樣品進(jìn)展調(diào)理,通常包括濾除雜質(zhì)和干擾氣體、枯燥或制冷處理、樣品抽吸,甚至對樣品進(jìn)展化學(xué)處理,以便化學(xué)傳感器進(jìn)展更快速地測量【1】。在選擇傳感器的時候,一定要考慮到穩(wěn)定性、靈敏度、選擇性和抗腐蝕性,MQ3酒精傳感器具有很高的靈敏度、良好的選擇性、長期的使用壽命和可靠的穩(wěn)定性,所以本系統(tǒng)選擇MQ3型酒精傳感器。2.2采集信號與放大電路圖MQ-3氣體傳感器有6個針狀管腳,其中4個用于信號取出,2個用于提供加熱電流.LM393是由兩個獨(dú)立的、高精度電壓比擬器組成的集成電路,失調(diào)電壓低,最低為2.0mV,專為獲得寬電壓范圍、單電源供電而設(shè)計,也可以用雙電源供電,電源電流低.即使采用單電源供電,比擬器的共模輸入電壓范圍也接近低電平。LM393被設(shè)計成能直接連接TTL和CMOS,當(dāng)用雙電源供電時,它能兼容MOS邏輯電路,這是低功耗LM393相較于標(biāo)準(zhǔn)比擬器的獨(dú)特優(yōu)勢【2】。圖2-1MQ-3酒精濃度傳感器采集信號與放大電路圖MQ-3酒精濃度傳感器探頭感知到酒精氣體,MQ3開場起作用,輸出的微弱電流送入由LM393運(yùn)算放大器和電阻電容構(gòu)成的調(diào)理電路,使信號放大并濾去雜波,經(jīng)放大濾波后有OUT輸出。模擬信號輸出端口能輸出0到+VCC〔+5v〕的模擬信號,當(dāng)檢測的酒精濃度越大時輸出電壓越高。此端口接入ADC0804的6號引腳,實(shí)現(xiàn)AD轉(zhuǎn)換【3】。3AD轉(zhuǎn)換硬件設(shè)計3.1AD轉(zhuǎn)換器的選擇及介紹A/D轉(zhuǎn)換其的主要技術(shù)指標(biāo)包括分辨率〔位數(shù)〕、量化誤差、轉(zhuǎn)換精度和轉(zhuǎn)換時間【4】。根據(jù)本文設(shè)計的技術(shù)參數(shù)要求:測量精度優(yōu)于0.5%。從精度方面考慮方案如下:方案一:用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)換時間一般在μs級,轉(zhuǎn)換精度一般在0.1%上下,適用于一般場合。2、積分式A/D轉(zhuǎn)換器:其核心部件是積分器,因此轉(zhuǎn)換時間一般在ms級或更長,但抗干擾性能強(qiáng),轉(zhuǎn)換精度可達(dá)0.01%或更高。適于數(shù)字電壓表類儀器采用。3、并行比擬式又稱閃爍式:采用并行比擬,其轉(zhuǎn)換時間可達(dá)ns級,但抗干擾性能較差,由于工藝限制,其分辨率一般不高于8位??捎糜跀?shù)字示波器等要求轉(zhuǎn)換速度較快的儀器中。4、改良型是在上述某種形式A/D轉(zhuǎn)換器的根基上,為滿足某項(xiàng)高性能指標(biāo)而改良或復(fù)合而成的。例如余數(shù)比擬式即是在逐次比擬式的根基上加以改良,使其在保持原有較高轉(zhuǎn)換速率的前提下精度可達(dá)0.01%以上?;谝陨媳葦M,綜合性價比,選擇8為主次逼近式A/D轉(zhuǎn)換器:ADC0809和ADC0804。ADC0809的功能是將輸入模擬量轉(zhuǎn)換為與其成正比例的數(shù)字量,它具有8路模擬輸入端口,地址線可決定對哪一路模擬輸入做AD轉(zhuǎn)換.ADC0804的功能與ADC0809根本一樣,不同點(diǎn)在于它有一路輸入。對于本設(shè)計的要求是有一路的輸入信號,所以從性價比的方面考慮選擇ADC0804更優(yōu)。3.2本設(shè)計中ADC0804外圍硬件連接圖3-1ADC0804外圍電路連接3.3本設(shè)計中AD轉(zhuǎn)換軟件實(shí)現(xiàn)3.3.1ADC程序流程圖圖3-2ADC程序流程圖單片機(jī)對ADC進(jìn)展初始化,使其能進(jìn)入正常工作狀態(tài),通過判斷ADC轉(zhuǎn)換判斷標(biāo)志EOC,看其是否轉(zhuǎn)換完畢,如果沒有,則繼續(xù)判斷,如假設(shè)完成則將ADC轉(zhuǎn)換的數(shù)據(jù)由單片機(jī)讀取并計算,然后進(jìn)入下一環(huán)節(jié)。3.3.2ADC轉(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ù)分析:voidad(){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);//延時一會,防止紊亂 rd=0;//將RD拉低,芯片送出數(shù)據(jù) delay(1);//延時約一毫秒,讓P3口 temp=P3; //將數(shù)據(jù)存入temp rd=1;//將RD拉高}4單片機(jī)最小系統(tǒng)模塊設(shè)計CPU最小系統(tǒng)是單片機(jī)運(yùn)行工作起來所必需的最根本電路組成。它包括電源電路、時鐘電路、復(fù)位電路。最小硬件電路組成見圖4-1。圖4-1最小系統(tǒng)電路圖4.1AT89S52簡介本設(shè)計以AT89S52單片機(jī)為控制核心。單片機(jī)也就是MCU,即微控制單元。AT89S52是低功耗、高性能、采用CMOS工藝的8位單片機(jī),其片內(nèi)具有8KB的可在線編程的Flash存儲器,該單片機(jī)采用了ATMEL公司的高密度、非易失性存儲器技術(shù),與工業(yè)標(biāo)準(zhǔn)型80C51單片機(jī)的指令系統(tǒng)和引腳完全兼容,它能以3V的超低電壓工作,晶振時鐘最高可達(dá)24MHz。通用的8位CPU與在線可編程Flash集成在一塊芯片上,從而使AT89S52功能更加完善,應(yīng)用更加靈活;具有較高的性能價格比,使其在嵌入式控制系統(tǒng)中有著廣泛的應(yīng)用前景【5】。4.2復(fù)位電路設(shè)計圖4-2復(fù)位電路電路圖單片機(jī)復(fù)位的兩種根本形式:上電復(fù)位和RST按鍵復(fù)位。本設(shè)計采用RST按鍵復(fù)位。在復(fù)位電路的設(shè)計中,要選擇適宜的元器件參數(shù),電阻的阻值不宜過大或者過小,過大使得RST不可能獲得高電平,過小也不能起到限流作用。另外電容容值也應(yīng)該適宜,要保證放電時,RST引腳上的高電平也能保持兩個機(jī)器周期以上的高電平。4.3晶振電路設(shè)計圖4-3晶振電路電路圖本系統(tǒng)中為了盡量降低功耗的原則,采用了內(nèi)部時鐘方式。晶振全稱為晶體振蕩器〔英文CrystalOscillators〕,其作用在于產(chǎn)生原始的時鐘頻率。內(nèi)部時鐘方式的電路實(shí)現(xiàn)方法是在XTAL1和XTAL2引腳外接石英晶體,與單片機(jī)片內(nèi)震蕩電路形成震蕩回路,圖中電容C3和C4的容值為22pF,它們的作用是加快起振和穩(wěn)定頻率。5顯示模塊軟硬件設(shè)計5.1LCD1602簡介LCD1602每行可以輸出16個字符,可以顯示兩行,故稱1602,它不帶中文字庫,故只能顯示數(shù)字、字母和普通字符。1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。在本設(shè)計中不檢測液晶的忙與閑,用前面對待ADC0804的方法,用軟件延時來等待液晶的忙操作時間。液晶顯示輸出D0到D7口接P0.0到P0.7,單獨(dú)使用一個口,另外還要接上10K上拉電阻來提高P0口帶負(fù)載能力。當(dāng)處于讀狀態(tài)時,RS處于低脈沖,R/W為高脈沖,E為高脈沖,D0~D7=狀態(tài)字當(dāng)處于讀數(shù)據(jù)時,RS為高脈沖,R/W為高脈沖,E為高脈沖,D0~D7=數(shù)據(jù)。當(dāng)處于寫指令時,RS為低脈沖,R/W為低脈沖,D0~D7=指令碼,E=高脈沖。當(dāng)處于寫數(shù)據(jù)時,RS為高脈沖,R/W為低脈沖,E為高脈沖,D0~D7=數(shù)據(jù)。5.2本設(shè)計中LCD1602的硬件連接圖5-1LCD1602硬件連接圖5.3液晶寫命令子函數(shù)和寫數(shù)據(jù)子函數(shù)程序分析在初始化函數(shù)voidinit〔〕{…}中,已將R/W拉低〔對應(yīng)lcden=0;語句〕,即只對液晶進(jìn)展寫操作,不讀液晶狀態(tài)。之前有位定義sbitlcdrs=P2^5;sbitlcdrw=P2^6;sbitlcden=P2^7;寫命令函數(shù)各語句分析:voidwrite_com(ucharcom){lcdrs=0;//將RS拉低,對指令操作,上電時是默認(rèn)高電平 P0=com;//對P0賦值,該值是對應(yīng)命令碼,com為形參 delay(5);//延時約五毫秒 lcden=1;//E拉高,讓液晶讀P0口,寫入對應(yīng)命令碼 delay(5);//延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)喪失 lcden=0;//將E拉低}寫數(shù)據(jù)函數(shù)各語句分析:voidwrite_com(ucharda){lcdrs=1;//將RS拉低高〔讀寫數(shù)據(jù)〕,說明對數(shù)據(jù)操作 P0=da;//對P0賦值,該值是要寫入的數(shù)據(jù),da為形參 delay(5);//延時約五毫秒 lcden=1;//E拉高,讓液晶讀P0口,寫入數(shù)據(jù) delay(5);//延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)喪失 lcden=0;//將E拉低}值得注意的是,在寫數(shù)據(jù)的操作中,寫入的都是字符ASCII碼,例如想寫1,讓液晶在某處顯1,可寫write_data〔’1’〕;或者write_data〔0x30+1〕。5.4本設(shè)計中用的液晶指令介紹一些指令碼的介紹:0x38:液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行,并且每個字符顯示處的點(diǎn)陣為5X7;0x0C:不顯示光標(biāo),光標(biāo)不閃爍;0x06:在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動;1即0x01:清屏指令,即將液晶內(nèi)部存儲數(shù)據(jù)清楚,地址指針指向零;0x80+……:設(shè)置寫入數(shù)據(jù)的地址,所加的就是對應(yīng)地址。5.5字符串顯示和數(shù)據(jù)實(shí)時更新的實(shí)現(xiàn)1〕寫字符串子程序:voidwrite_str(uchar*p){while(*p)write_data(*p++);}這里靈巧的應(yīng)用了數(shù)組指針,比傳統(tǒng)的for嵌套循環(huán)寫入方便很多。用while(*p)……自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱?,跳出循環(huán)。如想寫入"ACvalue:",只需先定義數(shù)組ucharcodestr[]="ACvalue:";,再寫語句write_str(str);寫完后指針變?yōu)榱?,自動完畢?〕數(shù)據(jù)實(shí)時更新的實(shí)現(xiàn)方法,檢測時不斷調(diào)用顯示子函數(shù),display();顯示函數(shù)如下:voiddisplay(){ uintvalue;//定義局部變量value uchara,b,c;//定義局部變量a、b、c value=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_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ù)就能實(shí)時檢測更新。在待機(jī)時,循環(huán)程序中不斷執(zhí)行語句: write_com(0x80+6);//將數(shù)據(jù)寫在第一行,第七個字符處 write_data(table[a]);//在第一行,第七個字符處寫入時鐘的分鐘write_com(0x80+7);//將數(shù)據(jù)寫在第一行,第八個字符處 write_data(table[b]);//在第一行,第八個字符處寫入閃爍的冒號 write_com(0x80+8);//將數(shù)據(jù)寫在第一行,第九個字符處 write_data(table[c]);//在第一行,第九個字符處寫入時鐘的秒鐘十位 write_com(0x80+9);//將數(shù)據(jù)寫在第一行,第十個字符處 write_data(table[d]);//在第一行,第十個字符處寫入時鐘的秒鐘個位由于是在不斷循環(huán)調(diào)用,即不斷數(shù)據(jù)刷新,而a、b、c、d的改變是通過定時器零實(shí)現(xiàn)的。6其它外圍設(shè)備軟硬件設(shè)計6.1報警電路軟硬設(shè)計6.1.1硬件局部設(shè)計圖6-1報警電路將蜂鳴器的正端接電源正,負(fù)端接P1.0。低電平有效,蜂鳴器響起。Da,Db,Dc為檢測報警指示燈。Da為濃度不超限的指示燈,Db與Dc分別為酒后駕駛指示燈和醉酒駕駛指示燈,低電平有效。當(dāng)酒精含量<20mg/100ml時,安全燈〔綠色LED燈〕亮;當(dāng)20mg/ml≤酒精含量≤80mg/ml時,警告燈〔黃色LED燈〕閃爍;當(dāng)80mg/ml≤酒精含量時,危險燈〔紅色LED燈〕閃爍,蜂鳴器報警。6.1.2軟件局部設(shè)計位定義語句:sbitbeep=P1^0;//定義蜂鳴器sbitda=P1^2;sbitdb=P1^3;sbitdc=P1^4;//定義報警燈用程序讓蜂鳴器響:beep=0;//低電平輸出時,蜂鳴器翻開用程序讓蜂鳴器關(guān)閉:beep=1;//高電平輸出時,蜂鳴器關(guān)閉用程序?qū)a,Db,Dc點(diǎn)亮:Da=0;Db=0;Dc=0;//低電平輸出時,Da,Db,Dc點(diǎn)亮用程序?qū)a,Db,Dc熄滅:Da=1;Db=1;Dc=1;//高電平輸出時,Da,Db,Dc熄滅6.2待機(jī)指示燈軟硬件設(shè)計6.2.1硬件局部設(shè)計圖6-2待機(jī)指示燈電路發(fā)光二極管D1為待機(jī)指示燈,它的正端接電源正,負(fù)端與470K電阻相連再接上P1.1。低電平有效,D1點(diǎn)亮,開場待機(jī)。電阻起到限流電阻的作用。6.2.2軟件局部設(shè)計位定義語句:sbitd1=P1^1;//待機(jī)指示燈用程序?qū)1點(diǎn)亮:D1=0;//低電平輸出時,D1點(diǎn)亮用程序?qū)1熄滅:D1=1;//高電平輸出時,D1熄滅6.3按鍵軟硬件設(shè)計6.3.1硬件局部設(shè)計圖6-3按鍵電路S2和S3分別和單片機(jī)的P2.1和P2.0,再與GND相接。S2為待機(jī)控制按鍵。S3為檢測控制按鍵。R18和R19與VCC相連再并接在開關(guān)前,是為了在松手時,使I/O獲得穩(wěn)定的高電平。6.3.2軟件局部設(shè)計位定義語句:sbitk1=P2^0;//S3位定義sbitk2=P2^1;//S2位定義S2按鍵檢測:if(k1==0)//檢測按鍵是否按下 { delay(5);//消抖 if(k1==0)//再檢測按鍵是否按下 flag=0;//寫入要進(jìn)展的操作,這里是將標(biāo)志數(shù)flag置零 while(!k1);//松手檢測 }S3按鍵檢測:if(k2==0)//檢測按鍵是否按下 { delay(5);//消抖 if(k2==0)//再檢測按鍵是否按下 flag=1;//寫入要進(jìn)展的操作,這里是將標(biāo)志數(shù)flag置一 while(!k2);//松手檢測 }6.4電源電路圖6-4電源電路如上圖為本設(shè)計的電源電路。接入220V交流電后從變壓器輸出12V交變電壓,再經(jīng)過橋式整流電路整流,輸出直流電。穩(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)單片機(jī)進(jìn)入掉電模式時,外部晶振停振、CPU、定時器、串行口全部停頓工作,只有外部中斷繼續(xù)工作。使單片機(jī)進(jìn)入休眠模式的指令將成為休眠前單片機(jī)執(zhí)行的最后一條指令,進(jìn)入休眠模式后,芯片中程序未涉及到的數(shù)據(jù)存儲器和特殊功能存放器中的數(shù)據(jù)都將保持原值。可由外部中斷低電平觸發(fā)或由下降沿觸發(fā)中斷或者硬件復(fù)位模式換醒單片機(jī),需要注意的是,使用中斷喚醒單片機(jī)時,程序從原來停頓處繼續(xù)運(yùn)行,當(dāng)使用硬件復(fù)位喚醒單片機(jī)時,程序?qū)念^開場執(zhí)行。本文中則采用硬件復(fù)位喚醒單片機(jī)。讓單片機(jī)進(jìn)入休眠〔空閑〕模式的目的是為了降低系統(tǒng)的功耗,例如在正常使用萬用表時表內(nèi)部的單片機(jī)處于正常工作模式,當(dāng)不用時,又忘記了關(guān)掉萬用表的電源,大多數(shù)表在等待數(shù)分鐘后,假設(shè)沒有人為操作,它便會自動將液晶顯示關(guān)閉,以降低系統(tǒng)功耗,通常類似這種功能的實(shí)現(xiàn)就是使用了單片機(jī)的空閑模式或是掉電模式。以STC89系列單片機(jī)為例,當(dāng)單片機(jī)正常工作時的功耗通常為4mA~7mA,進(jìn)入空閑模式時其功耗降至2mA,當(dāng)進(jìn)入掉電模式時功耗可降至0.1μA以下。所以采用休眠對于低功耗是非常重要的。7軟件設(shè)計7.1主程序流程圖圖7-1主程序流程圖7.2檢測與待機(jī)功能切換設(shè)計及程序流程圖為了能讓主函數(shù)分清是執(zhí)行執(zhí)行待機(jī)程序還是檢測程序報警程序,引進(jìn)標(biāo)志數(shù)flag。當(dāng)flag為1時執(zhí)行待機(jī)程序;當(dāng)flag為0時執(zhí)行檢測報警程序.在初始化函數(shù)中先將flag置1,上電后則進(jìn)入待機(jī)狀態(tài)。按下k1后使flag置0,執(zhí)行檢測報警程序。按鍵k2后使flag置1,又執(zhí)行待機(jī)程序,k1、k2均為開關(guān)【7】。以下列圖為系統(tǒng)執(zhí)行檢測功能和待機(jī)功能的選擇流程圖:圖7-2待機(jī)與檢測程序流程圖7.3定時器與定時器中斷本設(shè)計在待機(jī)時,執(zhí)行一個簡易的十分鐘以內(nèi)的計時程序。這時用定時器零產(chǎn)生中斷,讓其計時。定時器是獨(dú)立與cpu的單獨(dú)部件,與軟件延時比起來,它不占用程序時間,定時很準(zhǔn)確。當(dāng)時間到一定時,它就產(chǎn)生定時中斷,讓主程序讓執(zhí)行定時器中斷函數(shù)。設(shè)置TMOD=0x01;使定時器零工作在方式一,工作方式一是十六位不能自動重裝初值的方式,所以在進(jìn)入定時器中斷函數(shù)后要重新裝初值【8】。心得與體會本文給出了基于單片機(jī)的便攜式酒精濃度檢測儀的設(shè)計方法,設(shè)計過程包括了硬件電路設(shè)計和軟件程序的編寫兩局部。硬件電路局部構(gòu)造簡單、使用方便、靈活性強(qiáng),適合群眾化使用。軟件局部采用模塊化設(shè)計思想,各個子程序的功能相對獨(dú)立,便于調(diào)試和修改。本論文設(shè)計的便攜式酒精濃度檢測儀可應(yīng)用在實(shí)際生活中,用于警方可以監(jiān)視駕駛員的醉酒行為,亦可以用在特定場合,例如酒精生產(chǎn)工廠等,進(jìn)展酒精濃度的檢測,防止惡性爆炸事件的發(fā)生,減少大型事故的發(fā)生,防止人員傷亡,從而保證了人民的生命和財產(chǎn)安全,對人們的生活非常重要,所以此便攜式酒精濃度檢測儀具有實(shí)際意義,可廣泛應(yīng)用在居民生產(chǎn)生活中。本設(shè)計編程采用c語言,本人非常認(rèn)真地且獨(dú)立地完成了本課程設(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ù)底蘊(yùn),孜孜不悔的教學(xué)精神,平易近人的人格魅力,對我影響很大,在她的細(xì)心指導(dǎo)下我順利的完成了本次的課程設(shè)計。此外,我周圍的同學(xué)也在我為一些問題困惑時,給予了我很大的幫助,教會了我許多知識,例如繪圖軟件的應(yīng)用等等。在此向我向李教師表示深深地感謝!也對所有幫助過我課程設(shè)計的人在此一并表示感謝!參考文獻(xiàn)[1]岳睿.警用呼氣式酒精傳感器的研究進(jìn)展[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]李建忠.單片機(jī)原理及應(yīng)用[M].西安電子科技大學(xué)出版社,2008.[5]王幸之.AT89系列單片機(jī)原理與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2004.[6]李振梅.模擬電子技術(shù)根基[M].北京:高等教育出版社,2010.[7]邱力.C語言程序設(shè)計[M].北京:清華大學(xué)出版社,2004.[8]郭天祥.新概念51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社,2009.附錄一硬件設(shè)計原理圖附錄二程序/***********定義包含reg52頭文件***************/#include<reg52.h>/******************************************//*******************宏定義***********************/#defineuintunsignedint#defineucharunsignedchar/******************************************//********************位定義**********************/sbitbeep=P1^0;sbitd1=P1^1;sbitda=P1^2;sbitdb=P1^3;sbitdc=P1^4;sbitk1=P2^0;sbitk2=P2^1;sbitlcdrs=P2^5;sbitlcdrw=P2^6;sbitlcden=P2^7;sbitcs=P1^5;sbitrd=P1^6;sbitwr=P1^7;/******************************************//*******************定義字符數(shù)組***********************/ucharcodestr[]="ACvalue:";ucharcodestr0[]="ppm";ucharcodetable[]="0123456789:";/******************************************//*********************定義無符號字符型全局變量*********************/ucharflag,temp,a,b,c,d,tt;/******************************************//******************子函數(shù)聲明************************/voidinit();//初始化函數(shù)voiddelay(uint);//有無符號整型形參的延時函數(shù)voidwrite_str(uchar*);//向液晶寫入字符串的函數(shù)voidwrite_com(uchar);//液晶寫命令函數(shù)voidwrite_data(uchar);//液晶寫數(shù)據(jù)函數(shù)voidad();//AD轉(zhuǎn)換函數(shù)voiddisplay();//酒精濃度顯示函數(shù)/******************************************//*********************主函數(shù)局部*********************/voidmain(){ init();//調(diào)用初始化函數(shù) while(1) { if(k1==0)//檢測按鍵是否按下 { delay(5);//消抖,將程序的執(zhí)行暫停五毫秒 if(k1==0)//再檢測按鍵是否按下 flag=0; //寫入要進(jìn)展的操作,這里是將標(biāo)志數(shù)flag置零 while(!k1);//松手檢測如果k1取反 } if(k2==0)//按鍵檢測 { delay(5);//消抖,將程序的執(zhí)行暫停五毫秒 if(k2==0)//再檢測按鍵是否按下 flag=1;//寫入要進(jìn)展的操作,這里是將標(biāo)志數(shù)flag置一 while(!k2);//松手檢測 } while(flag==0)//執(zhí)行檢測報警程序 { TR0=0;//采用定時器零產(chǎn)生中斷 d1=1;//發(fā)光二極管1為高電平,待機(jī)指示燈為關(guān)狀態(tài) write_com(1);//清屏操作 write_com(0x80);//液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行 write_str(str); write_com(0x80+0x40+9); write_str(str0); while(flag==0) { ad(); display(); if(temp>=20) { if(20<=temp<=80)//為酒后駕駛 { beep=0; db=0; } if(temp>=80) //為醉酒駕駛 { beep=0; dc=0;//紅燈亮起 } } else { beep=1; //未飲酒區(qū) da=0;//綠燈亮起 } if(k1==0)//按鍵檢測 { delay(5); if(k1==0) flag=0; while(!k1); } if(k2==0)//按鍵檢測 { delay(5); if(k2==0) flag=1; while(!k2); } } } while(flag==1)//執(zhí)行待機(jī)程序 { beep=1; da=1; db=1; dc=1;//檢測指示燈為關(guān)狀態(tài) tt=0; a=0; b=10; c=0; d=0; write_com(1); d1=0;//待機(jī)指示燈為開狀態(tài) TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(flag==1){write_com(0x80+6);//將數(shù)據(jù)寫在第一行,第七個字符處write_data(table[a]);//在第一行,第七個字符處寫入時鐘的分鐘write_com(0x80+7); //將數(shù)據(jù)寫在第一行,第八個字符處write_data(table[b]);//在第一行,第八個字符處寫入閃爍的冒號write_com(0x80+8); //將數(shù)據(jù)寫在第一行,第九個字符處write_data(table[c]);//在第一行,第九個字符處寫入時鐘的秒鐘十位write_com(0x80+9); //將數(shù)據(jù)寫在第一行,第十個字符處write_data(table[d]);//在第一行,第十個字符處寫入時鐘的秒鐘個位 if(k1==0)//按鍵檢測 {delay(5); if(k1==0)flag=0; while(!k1); } if(k2==0)//按鍵檢測 {delay(5); if(k2==0)flag=1; while(!k2); } } } }}/******************************************//********************初始化子函數(shù)**********************/ voidinit(){ lcdrw=0; lcden=0; write_com(0x38);//液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行,并且每個字符顯示處的點(diǎn)陣為5X7; write_com(0x0c);//不顯示光標(biāo),光標(biāo)不閃爍; write_com(0x06);//在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動 cs=0; flag=1; b=10; TMOD=0x01;//定時器零工作方式為方式一 EA=1; ET0=1; }/******************************************//********************延時子函數(shù)**********************/voiddelay(uintz){ uintx,y; for(x=110;x>0;x--) for(y=z;y>0;y--);}voidwrite_str(uchar*p)//寫字符串子程序{ while(*p) write_data(*p++);//用while(*p)……自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱悖鲅h(huán)}/******************************************//******************液晶寫命令子函數(shù)************************/voidwrite_com(ucharcom){ lcdrs=0; //將RS拉低,說明對指令操作,上電時是默認(rèn)高電平 P0=com; //對P0賦值,該值是對應(yīng)命令碼,com為形參 delay(5); //延時約五毫秒 lcden=1; //E拉高,讓液晶讀P0口,寫入對應(yīng)命令碼 delay(5); //延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)喪失 lcden=0; //將E拉低}/******************************************//*******************液晶寫數(shù)據(jù)子函數(shù)***********************/voidwrite_data(uchar
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)聯(lián)企業(yè)合同范例
- 2025年上海貨運(yùn)從業(yè)資格證考試答案
- 2025年崇左貨運(yùn)上崗證考試考哪些科目
- 2025年邯鄲貨車叢業(yè)資格證考試題
- 低壓車回收合同范本
- 農(nóng)村建房裝修合同范本
- 養(yǎng)殖合作加盟協(xié)議合同范本
- 農(nóng)耕地出租合同范本
- 傳媒簽約合同范本
- 加氣站合同范本
- 2024廣西公務(wù)員考試及答案(筆試、申論A、B類、行測)4套 真題
- 2024年山東省濟(jì)南市中考英語試題卷(含答案解析)
- 語文七年級下字帖打印版
- 自然辯證法概論(新)
- 安全評價理論與方法第五章-事故樹分析評價法
- 幼兒園一日活動流程表
- 中國民俗知識競賽題(附答案和詳細(xì)解析)
- 最后一分鐘安全檢查
- 散裝水泥罐體標(biāo)準(zhǔn)資料
- 原發(fā)性肝癌臨床路徑最新版
- 2022年口腔醫(yī)學(xué)主治醫(yī)師(代碼353)考試題庫(匯總版)
評論
0/150
提交評論