|
寫一個簡單地超聲波測距程序,數(shù)碼管顯示距離,單位厘米
單片機源程序如下:
- #include "reg51.h"
- unsigned char table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
-
- #define uint unsigned int
- #define uchar unsigned char
- sbit D1= P2^7;
- sbit Trig = P2^2;
- sbit Echo = P3^2;
- sbit SMG_q = P1^0;
- sbit SMG_b = P1^1;
- sbit SMG_s = P1^2;
- sbit SMG_g = P1^3;
- uint time = 0;
- uint timeH = 0;
- uint timeL = 0;
- uint succeed_flag;
-
- void display(uint da);
- void delay(uint z);
- void delay_20us();
-
- void main(void)
- {
- uint distance;
-
- Trig=0; //首先拉低脈沖輸入引腳
- EA=1; //打開總中斷0
- TMOD=0x10; //定時器1,16位工作方式
- while(1)
- {
- EA=0; //關(guān)總中斷
- Trig=1; //超聲波輸入端
- delay_20us(); //延時20us
- Trig=0; //產(chǎn)生一個20us的脈沖
- while(Echo==0); //等待Echo回波引腳變高電平
- succeed_flag=0; //清測量成功標志
- EA=1;
- EX0=1; //打開外部中斷0
- TH1=0; //定時器1清零
- TL1=0; //定時器1清零
- TF1=0; //計數(shù)溢出標志
- TR1=1; //啟動定時器1
- delay(20); //等待測量的結(jié)果
- TR1=0; //關(guān)閉定時器1
- EX0=0; //關(guān)閉外部中斷0
- if(succeed_flag==1)
- {
- time=timeH*256+timeL;
- distance=time*0.0172; //厘米
- display(distance );
-
- if(distance<=150 && distance>=80)
- {
- D1=0;
- }
- else D1=1;
- }
-
- if(succeed_flag==0)
- {
- distance=9999;
- D1=1;
- delay(24);
- }
- }
- }
- void display(uint da)
- {
- SMG_q=0;
- P0=table[da/1000];
- delay(1);
- P0=0XFF;
- SMG_q=1;
-
- SMG_b=0;
- P0=table[da/100%10];
- delay(1);
- P0=0XFF;
- SMG_b=1;
-
- SMG_s=0;
- P0=table[da%100/10];
- delay(1);
- P0=0XFF;
- SMG_s=1;
- SMG_g=0;
- P0=table[da%10];
- delay(1);
- P0=0XFF;
- SMG_g=1;
- }
- void exter() interrupt 0 // 外部中斷0是0號
- {
- timeH =TH1; //取出定時器的值
- timeL =TL1; //取出定時器的值
- succeed_flag=1;//至成功測量的標志
- EX0=0; //關(guān)閉外部中斷
- }
- //****************************************************************
- //定時器1中斷,用做超聲波測距計時
- void timer1() interrupt 3 //
- {
- TH1=0;
- TL1=0;
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=125;y>0;y--);
- }
- void delay_20us()
- {
- uchar a ;
- for(a=0;a<100;a++);
- }
復(fù)制代碼
所有程序51hei提供下載:
超聲波測距—數(shù)碼管顯示距離(單位厘米)程序.rar
(28.34 KB, 下載次數(shù): 31)
2020-5-3 20:00 上傳
點擊文件名下載附件
|
|