#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar xms);//延時大概x毫秒
void display(uchar number);
void main(void);
void count(void);
void didi();
sbit Trig=P1^3; //超聲波發(fā)射端
sbit Echo=P1^2; //接
sbit g=P2^5;
sbit s=P2^4;
sbit beep=P2^2; //報警
sbit led=P2^0;
bit flag=0;
uint time=0;
uint timer=0;
uint M;
code uchar buf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}共陽
/******************************************/
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=640;j>0;j--);
}
/**********************************************/
void display(uchar number)
{
/******************************************/
g = 0;
s = 1;
P0 = buf[number%10];
delay(1);
P0 = 0xff;
/******************************************/
g = 1;
s = 0;
P0 = buf[number/10%10];
delay(1);
/**********************************************/
void main(void)
{
TMOD=0X11; //定時器工作方式1,GATE=1;
TH0=0;
TL0=0;
ET0=1; //T0中斷
ET1=1; //T1中斷
TR1=0; //開啟定時器
EA=1; //開總中斷
while(1)
{
while(!Echo); //當RX為零時等待
while(Echo); //當RX為1時計數(shù)并等待
didi();
}
}
/****************************************************/
void count(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0; //清零
M=(time*1.7)/100;//厘米
for(M>=1;M<=20;flag==1)//范圍0--5米
{
int k;
while(1)
{
for(k=0;k<=999;k++)
{
display(k);
}
}
}
}
|