#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; //超声波发射端
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时计数并等待
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);
}
}
}
}
|