该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit Trig = P2^1;
sbit Echo = P2^0;
sbit test = P3^7;
uchar code seg7[10] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
uchar ge,shi,bai,n;
uint distance,time,th,tl;
bit flag;
void delay_20us()
{ _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
void delay(uint n)
{
uint i,j;
for(i = n;i > 0;i--)
for(j = 50;j > 0;j--);
}
void init()
{
Trig = 0;
Echo = 0;
TMOD = 0X01;
TH0 = 0;
TL0 = 0;
ET0 = 1;
EA = 1;
}
void display(uint distance)
{
n = 50;
bai = distance/100;
shi = distance%100/10;
ge = distance%10;
while(n--)
{
P2 = 0X7F;
P1 = seg7[bai];
delay(1);
P2 = 0XBF;
P1 = seg7[shi];
delay(1);
P2 = 0XDF;
P1 = seg7[ge];
delay(1);
}
}
void main()
{
test = 0;
while(1)
{
init();
Trig = 1;
delay_20us();
Trig = 0;
while(Echo == 0);
TR0 = 1;test = ~test;
while(Echo == 1);
TR0 = 0;
th = TH0;tl = TL0;
time = th*256 + tl;
distance = time*0.017;
if(distance > 400)
{display(0);}
else display(distance);
}
}
void timer0() interrupt 1
{
}
请做过这个的帮忙看下程序吖,测试显示距离不准额,当无回波时,LED灯(test)也在以一定频率闪烁,只是频率低很多。求有经验的帮忙看下程序好吗,单片机吧里发了一点人气也没有额。