




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 sbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitvoidinit();voiddelay(uint);sbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitsbitvoidinit();voiddelay(uint);/初始化函數(shù)/有無符號整型形參的延時函數(shù)附錄二程序/*定義包含reg52頭文件*/#include/*/*宏定義*/#defineuintunsignedint#defineucharunsignedchar/*/*位定義*/beep=P10;di=P1;da=P12;db=P13
2、;dc=P14;ki=P20;k2=P2;Icdrs=P2八5Icdrw=P2八6Icden=P2八7cs=Pi5;rd=Pi6;wr=P17;/*/*定義字符數(shù)組*/ucharcodestr=ACvalue:;ucharcodestr0=ppm;ucharcodetable=0i23456789:;/*/*定義無符號字符型全局變量*/ucharflag,temp,a,b,c,d,tt;/*/*子函數(shù)聲明*/voidwrite_str(uchar*);/向液晶寫入字符串的函數(shù)voidwrite_com(uchar);/液晶寫命令函數(shù)voidwrite_data(uchar);/液晶寫數(shù)據(jù)函數(shù)v
3、oidad();voiddisplay();voidad();voiddisplay();AD轉(zhuǎn)換函數(shù)/酒精濃度顯示函數(shù)/*/*主函數(shù)部分*/voidmain()init();/調(diào)用初始化函數(shù)while(1)if(k1=0)/檢測按鍵是否按下delay(5);/消抖,將程序的執(zhí)行暫停五毫秒if(k1=0)/再檢測按鍵是否按下flag=0;寫入要進行的操作,這里是將標志數(shù)flag置零while(!k1);松手檢測如果k1取反if(k2=0)/按鍵檢測delay(5);/消抖,將程序的執(zhí)行暫停五毫秒if(k2=0)/再檢測按鍵是否按下flag=1;寫入要進行的操作,這里是將標志數(shù)flag置一whi
4、le(!k2);/松手檢測while(flag=0)/執(zhí)行檢測報警程序TR0=0;/采用定時器零產(chǎn)生中斷d1=1;/發(fā)光二極管1為高電平,待機指示燈為關(guān)狀態(tài)write_com(1);/清屏操作write_com(0 x80);/液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行write_str(str);write_com(0 x80+0 x40+9);write_str(str0);while(flag=0)ad();display();if(temp=20)if(20=temp=80)/為醉酒駕駛beep=0;dc=0;/紅燈亮起elsebeep=1;da=0;/未飲酒區(qū)/綠燈亮起if
5、(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í)行待機程序beep=1;da=1;db=1;dc=1;tt=0;/檢測指示燈為關(guān)狀態(tài)a=0;b=10;c=0;d=0;write_com(1);d1=0;/待機指示燈為開狀態(tài)TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(flag=1)write_com(0 x80+6);/將數(shù)據(jù)寫在第一行,第七個字符處write_
6、data(tablea);/在第一行,第七個字符處寫入時鐘的分鐘write_com(0 x80+7);/將數(shù)據(jù)寫在第一行,第八個字符處write_data(tableb);/在第一行,第八個字符處寫入閃爍的冒號write_com(0 x80+8);/將數(shù)據(jù)寫在第一行,第九個字符處write_data(tablec);/在第一行,第九個字符處寫入時鐘的秒鐘十位write_com(0 x80+9);/將數(shù)據(jù)寫在第一行,第十個字符處write_data(tabled);/在第一行,第十個字符處寫入時鐘的秒鐘個位if(k1=0)/按鍵檢測delay(5);if(k1=0)flag=0;while(!k
7、1);if(k2=0)/按鍵檢測delay(5);if(k2=0)flag=1;while(!k2);/*/*初始化子函數(shù)*/voidinit()lcdrw=0;lcden=0;write_com(0 x38);/液晶初始化指令,讓液晶按每行顯示16個字符,顯示兩行,并且每個字符顯示處的點陣為5X7;write_com(0 x0c);/不顯示光標,光標不閃爍;write_com(0 x06);/在寫入一個數(shù)據(jù)后地址自動加一,顯示不移動cs=0;flag=1;b=10;TMOD=0 x01;/定時器零工作方式為方式一EA=1;ET0=1;/*/*延時子函數(shù)*/voiddelay(uintz)ui
8、ntx,y;for(x=110;x0;x-)for(y=z;y0;y-);voidwrite_str(uchar*p)/寫字符串子程序while(*p)write_data(*p+);用while(*p)自動檢測是否寫完,當(dāng)寫完后指針變?yōu)榱?,跳出循環(huán)/*/*液晶寫命令子函數(shù)*/voidwrite_com(ucharcom)lcdrs=0;P0=com;delay(5);lcden=1;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);止數(shù)據(jù)丟失lcden=0;對P0賦值,該值是對應(yīng)命令碼,com為形參/延時約五毫秒E拉高,讓液晶讀P0口,寫入對應(yīng)命令碼將E將E拉
9、低/*/lcdrs=1;P0=da;delay(5);lcden=1;delay(5);lcdrs=1;P0=da;delay(5);lcden=1;delay(5);lcden=0;對P0賦值,該值是要寫入的數(shù)據(jù),da為形參/延時約五毫秒E拉高,讓液晶讀P0口,寫入數(shù)據(jù)/延時約五毫秒,讓液晶忙完再對其操作,防止數(shù)據(jù)丟失將E拉低/*/*AD轉(zhuǎn)換子函數(shù)*/voidad()wr=0;將WR拉低,讓芯片開始讀6、7號引腳電壓值delay(1);/延時約一毫秒,讓芯片忙完wr=1;將WR拉高,上升沿到來時,AD轉(zhuǎn)換開始delay(5);軟件延時約五毫秒,等待AD轉(zhuǎn)換完成P3=0 xff;將P3口全部拉
10、高,等待測試數(shù)據(jù)delay(1);/延時一會,避免紊亂rd=0;將RD拉低,芯片送出數(shù)據(jù)delay;延時約一毫秒,讓P3口temp=P3;將數(shù)據(jù)存入temprd=1;將RD拉高/*/*酒精濃度顯示子函數(shù)*/voiddisplay()uintvalue;uchara,b,c;value=3.92*temp;a=value/100;b=value%100/10;c=value%10;write_com(0 x80+0 x40+4);write_data(0 x30+a);write_com(0 x80+0 x40+5);write_data(0 x30+b);write_com(0 x80+0 x40+6);write_data(0 x30+c);/*/*定時器程序*/voidtimer0()interrupt1TMOD=0X01;/定時器工作方式設(shè)置為定時器0,方式1TH0=(65536-50000)/256;/計數(shù)寄存器高8位TL0=(65536-50000)%256;/計數(shù)寄存器低8位/開啟定時器0運行/開定時器0中斷/開啟定時器0運行/開定時器0中斷ET0=1;tt+;if(tt=20)tt=0;if(b=10)b=11;elseb=10;d+;if(d=10)d=0;c+;if(
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力檢修合同范本
- 手機 經(jīng)銷合同范本
- 勞務(wù)塔吊司機合同范本
- 加工非標制作合同范本
- 農(nóng)村產(chǎn)業(yè)外包合同范本
- 入職家政合同范本
- 公路承包轉(zhuǎn)讓合同范本
- 公司加班裝修合同范本
- 產(chǎn)品推廣協(xié)議合同范本
- 冷庫維修合同范本正規(guī)合同
- 消防水箱安裝施工方案
- 【重慶長安汽車公司績效管理現(xiàn)狀、問題及優(yōu)化對策(7600字論文)】
- 家鄉(xiāng)-延安課件
- 孔軸的極限偏差表
- 熱軋鋼板和鋼帶尺寸允許偏差
- 無人機導(dǎo)航與通信技術(shù)PPT完整全套教學(xué)課件
- BBC-商務(wù)英語會話
- 中等職業(yè)學(xué)校畢業(yè)生就業(yè)推薦表
- 鋼結(jié)構(gòu)設(shè)計原理全套PPT完整教學(xué)課件
- 2023年浙江首考讀后續(xù)寫真題講評課件 高三英語二輪復(fù)習(xí)寫作專項+
- 各期前列腺癌治療的指南推薦
評論
0/150
提交評論