




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
超聲波測距定時器2捕獲超聲波測距外部中斷捕獲溫度顯示 DS18B20超聲波測距定時器2捕獲#include /包括一個52標(biāo)準(zhǔn)內(nèi)核的頭文件#define BYTE unsigned char #define uint unsigned int#define ulong unsigned longsbit LS138A=P25;sbit LS138B=P26;sbit LS138C=P27;BYTE code disp_duan10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/數(shù)碼管0-9BYTE code disp_wei=0x01,0x02,0x04,0x08;BYTE ledout4,flag,i=0;bit succeed_flag; /測量成功標(biāo)志ulong distance_data,sum;ulong distance_data_buff2;void sys_ini() LS138C=1;LS138B=0;LS138A=1;P0=0; /關(guān)蜂鳴器T2=0; /首先拉低脈沖輸入引腳TMOD=0x01; /定時器0,16位工作方式TR0=1; /啟動定時器0ET0=1; /打開定時器溢出0中斷 ET2=1; /打開定時器2溢出中斷CP_RL2=1; /定時器2進(jìn)行捕獲模式EXEN2=1; /打開定時器2捕獲中斷EA=1; /打開總中斷void main(void) / 主程序 sys_ini();while(1) uint x=0; EA=0; T2=1; x+;x+;x+;x+;x+;x+;x+; /14us T2=0; /產(chǎn)生一個20us的脈沖,在Trig引腳 while(!T2EX); /等待T2EX回波引腳變高電平 succeed_flag=0; /清測量成功標(biāo)志 EXEN2=1; /打開定時器2外部捕獲中斷 TH2=0; /定時器2清零 TL2=0; /定時器2清零 TF2=0; /溢出標(biāo)志 TR2=1; /啟動定時器2 EA=1; while(!TF2);/溢出標(biāo)志 等待測量的結(jié)果,周期65.535毫秒 TR2=0; /關(guān)閉定時器2 if(succeed_flag=1) distance_data=RCAP2H; /測量結(jié)果的高8位 distance_data=8; /放入16位的高8位 distance_data=distance_data|RCAP2L;/與低8位合并成為16位結(jié)果數(shù)據(jù) distance_data=distance_data *1000/5813; distance_data_buffi=distance_data;sum+=distance_data_buffi;i+;if(i=2) i=0; distance_data=sum/2; ledout0=(disp_duandistance_data%10000/1000)&0x7f; ledout1=disp_duandistance_data%1000/100; ledout2 =disp_duandistance_data%100/10; ledout3=disp_duandistance_data%10; sum=0; /*/定時器0中斷,用做顯示void timer0() interrupt 1 / 定時器0中斷是1號 TH0=0xfd; /寫入定時器0初始值 TL0=0x77; LS138C=1;LS138B=1;LS138A=1;P0=ledoutflag; LS138C=1;LS138B=1;LS138A=0;P0=disp_weiflag; flag+; if(flag=4) flag=0; /*/定時器1中斷,用做超聲波測距計時void timer2() interrupt 5 / 定時器0中斷是1號 if(TF2) TH2=0;TL2=0; else if(EXF2) succeed_flag=1; /測量成功 EXEN2=0; /關(guān)閉 EXF2=0; 超聲波測距外部中斷捕獲/*將P11與P32短接*/#include /包括一個52標(biāo)準(zhǔn)內(nèi)核的頭文件#define BYTE unsigned char #define uint unsigned int#define ulong unsigned longsbit Trig = P10; /產(chǎn)生脈沖引腳sbit Echo = P32; /回波引腳sbit test = P06; /測試用引腳sbit HC138A=P25;sbit HC138B=P26;sbit HC138C=P27;BYTE code disp_duan10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/數(shù)碼管0-9BYTE code disp_wei=0x01,0x02,0x04,0x08;BYTE temp,flag,outcomeH,outcomeL; /自定義寄存器BYTE ledout4,flag,i=0;bit succeed_flag; /測量成功標(biāo)志ulong distance_data,sum;ulong distance_data_buff3;uint temp_data;void sys_ini() HC138C=1;HC138B=0;HC138A=1;P0=0; /關(guān)蜂鳴器 flag=0;test =0;Trig=0; /首先拉低脈沖輸入引腳TMOD=0x11; /定時器0,定時器1,16位工作方式TR0=1; /啟動定時器0 IT0=0; /由高電平變低電平,觸發(fā)外部中斷ET0=1; /打開定時器0中斷 ET1=1; /打開定時器1中斷EX0=0; /關(guān)閉外部中斷EA=1; /打開總中斷0void main(void) / 主程序 sys_ini();while(1) /程序循環(huán)uint x=0; EA=0; Trig=1; x+;x+;x+;x+;x+;x+;x+; /14us Trig=0; /產(chǎn)生一個20us的脈沖,在Trig引腳 while(!Echo); /等待Echo回波引腳變高電平 succeed_flag=0; /清測量成功標(biāo)志 EX0=1; /打開外部中斷 TH1=0; /定時器1清零 TL1=0; /定時器1清零 TF1=0; /溢出標(biāo)志 TR1=1; /啟動定時器1 EA=1; while(!TF1);/溢出標(biāo)志 等待測量的結(jié)果,周期65.535毫秒(可用中斷實現(xiàn)) TR1=0; /關(guān)閉定時器1 EX0=0; /關(guān)閉外部中斷 if(succeed_flag=1) distance_data=outcomeH; /測量結(jié)果的高8位 distance_data=8; /放入16位的高8位 distance_data=distance_data|outcomeL;/與低8位合并成為16位結(jié)果數(shù)據(jù) distance_data=distance_data *1000/5813; distance_data_buffi=distance_data;sum+=distance_data_buffi;i+;if(i=3) i=0; distance_data=sum/3; ledout0=(disp_duandistance_data%10000/1000)&0x7f; ledout1=disp_duandistance_data%1000/100; ledout2 =disp_duandistance_data%100/10; ledout3=disp_duandistance_data%10; sum=0; /*/外部中斷0,用做判斷回波電平void INTO_() interrupt 0 / 外部中斷是0號 outcomeH =TH1; /取出定時器的值 outcomeL =TL1; /取出定時器的值 succeed_flag=1; /至成功測量的標(biāo)志 EX0=0; /關(guān)閉外部中斷 /*/定時器0中斷,用做顯示void timer0() interrupt 1 / 定時器0中斷是1號 TH0=0xfd; /寫入定時器0初始值 TL0=0x77; HC138C=1;HC138B=1;HC138A=1;P0=ledoutflag; HC138C=1;HC138B=1;HC138A=0;P0=disp_weiflag; flag+; if(flag=4) flag=0; /*/定時器1中斷,用做超聲波測距計時void timer1() interrupt 3 / 定時器0中斷是1號TH1=0;TL1=0;溫度顯示 DS18B20#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P14;uchar code smg_du=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code smg_we=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uchar code xiaotable=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9; /小數(shù)部分的二進(jìn)制對應(yīng)的實際溫度 四舍五入uchar temp,tflag1,tflag2,weflag,xiao;void delayus(uint x);void delayms(uint x);void init_ds18b20();void wr_ds18b20(uchar byt);uchar re_ds18b20();uchar re_temp(); void display(uchar we,uchar du);void delayus(uint x) /延時25+(x-1)*9while(x-); void delayms(uint x)uchar i;while(x-)for(i=0;i120;i+);void init_ds18b20()DQ=1;delayus(4); /52usDQ=0;delayus(80); / 延時大于480usDQ=1;delayus(4);void wr_ds18b20(uchar byt)uchar i;for(i=0;i=1;uchar re_ds18b20() uchar i,byt; for(i=0;i=1;DQ=1; if(DQ)byt|=0x80;delayus(4); return byt;uchar re_temp()uchar low,high;uchar temp;init_ds18b20();delayms(1);wr_ds18b20(0xcc);wr_ds18b20(0x44); /跳過ROM 溫度轉(zhuǎn)換init_ds18b20();delayms(1);wr_ds18b20(0xcc);wr_ds18b20(0xbe);/跳過ROM讀暫存器low=re_ds18b20();high=re_ds18b20();xiao=low&0x0f;temp= high4);return temp;void display(uchar we,uchar du)P0=0xff;P2|=0xe0;P2&=0x1f;P0=smg_dudu;P2|=0xe0;P2&=0x1f;P0=smg_wewe;P2|=0xc0;P2&=0x3f;void main()P0=0;P2=0xa0;P2=0;/關(guān)蜂鳴器TMOD=0x02;TH0=0X06;TL0=0X06;ET0=1;TR0=1;EA=1;while(1);void to() interrupt 1tflag1+;tflag2+;if(tfla
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容機構(gòu)食堂管理制度
- 綠色礦山評估管理制度
- pco服務(wù)管理制度
- 私人旅館住宿管理制度
- 小區(qū)紙箱子管理制度
- 市殘聯(lián)統(tǒng)計管理制度
- 科室物品安全管理制度
- 突發(fā)事件應(yīng)急管理制度
- lng供銷管理制度
- 家委會共同管理制度
- (高清版)JGT 225-2020 預(yù)應(yīng)力混凝土用金屬波紋管
- 中國地理(廣州大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 自然辯證法-2018版課后思考題答案
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 校園超市經(jīng)營投標(biāo)方案(技術(shù)方案)
- 《養(yǎng)老護(hù)理員》-課件:擺放良肢位
- 2023年遼寧省高中學(xué)業(yè)水平合格性考試物理試卷真題(答案詳解)
- 一例壓力性損傷的個案護(hù)理
- 初高中生物銜接課件
- 高壓電動機預(yù)防性試驗課件
- 2023年上海市青浦區(qū)社區(qū)工作者招聘考試真題
評論
0/150
提交評論