˜Ë(bi¨¡o)î}:
51¿ØÖÆ3‚€³¬Â•²¨
[´òÓ¡±¾í“]
×÷Õß:
17864307379
•rég:
2016-10-21 16:51
˜Ë(bi¨¡o)î}:
51¿ØÖÆ3‚€³¬Â•²¨
´óÉñ‚ƒ¿´¿´ÎÒß@‚€ÓÃ51¿ØÖÆ3‚€³¬Â•²¨µÄ³ÌÐò£¬žéʲô²»Ðа¡£¿#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit ENA=P0^0;
sbit IN1=P0^1; //×ó늙C(j¨©)
sbit IN2=P0^2;
sbit ENB=P0^3;
sbit IN3=P0^4; //ÓÒ늙C(j¨©)
sbit IN4=P0^5;
sbit Trig=P3^5; //ǰ×óÓÒ³¬Â•²¨°l(f¨¡)Éä¶Ë
sbit Echo=P3^2; //ǰ½Ó
sbit Echo1=P3^3; //×ó½Ó
sbit Echo2=P3^4; //ÓÒ½Ó
bit flag=0;
uint time=0;
uint distance,distance1,distance2;
code uchar tab[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uchar xms)//ÑÓ•r´ó¸ÅxºÁÃë
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar temp)
{
uchar ge,shi,bai;
bai=temp/100;
shi=(temp%100)/10;
ge=temp%10;
dula=1;
P0=tab[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=tab[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
dula=1;
P0=tab[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);
}
void start() //½oÖÁÉÙ10usµÄ¸ßëŠÆ½£¬†¢„ÓÄ£‰K
{
Trig=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
Trig=1;
}
uchar count() //ǰ
{
time=TH0*256+TL0;
TH0=0;
TL0=0; //ÇåÁã
distance=(time*1.7)/100;//ÀåÃ×
return distance;
}
uchar count1() //×ó
{
time=TH0*256+TL0;
TH0=0;
TL0=0; //ÇåÁã
distance1=(time*1.7)/100;//ÀåÃ×
return distance1;
}
uchar count2() //ÓÒ
{
time=TH0*256+TL0;
TH0=0;
TL0=0; //ÇåÁã
distance2=(time*1.7)/100;//ÀåÃ×
return distance2;
}
void jiance1() //ǰ
{
start();//†¢„ÓÄ£‰K
while(!Echo); //®”(d¨¡ng)RXžéÁã•rµÈ´ý
TR0=1; //†¢„ÓÓ‹”µ(sh¨´)
while(Echo); //®”(d¨¡ng)RXžé1•rÓ‹”µ(sh¨´)²¢µÈ´ý
TR0=0; //êP(gu¨¡n)é]Ó‹”µ(sh¨´)Æ÷
count(); //Ó‹”µ(sh¨´)
if(flag==1||distance>30||distance<1)
{
distance=0;
TH0=0;
TL0=0;
flag=0;
}
display(distance);
delay(1);
}
void jiance2() //×ó
{
start();//†¢„ÓÄ£‰K
while(!Echo1); //®”(d¨¡ng)RXžéÁã•rµÈ´ý
TR0=1; //†¢„ÓÓ‹”µ(sh¨´)
while(Echo1); //®”(d¨¡ng)RXžé1•rÓ‹”µ(sh¨´)²¢µÈ´ý
TR0=0; //êP(gu¨¡n)é]Ó‹”µ(sh¨´)Æ÷
count1(); //Ó‹”µ(sh¨´)
if(flag==1||distance1>30||distance1<1)
{
distance1=0;
TH0=0;
TL0=0;
flag=0;
}
display(distance1);
delay(1);
}
void jiance3()//ÓÒ
{
start();//†¢„ÓÄ£‰K
while(!Echo2); //®”(d¨¡ng)RXžéÁã•rµÈ´ý
TR0=1; //†¢„ÓÓ‹”µ(sh¨´)
while(Echo2); //®”(d¨¡ng)RXžé1•rÓ‹”µ(sh¨´)²¢µÈ´ý
TR0=0; //êP(gu¨¡n)é]Ó‹”µ(sh¨´)Æ÷
count2(); //Ó‹”µ(sh¨´)
if(flag==1||distance2>30||distance2<1)
{
distance2=0;
TH0=0;
TL0=0;
flag=0;
}
display(distance2);
delay(1);
}
void t0() interrupt 0
{
flag=1; //Òç³ö˜Ë(bi¨¡o)Ö¾
}
void qian()
{
ENA=1;
ENB=1;
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void hou()
{
ENA=1;
ENB=1;
delay(3);
ENA=0;
ENB=0;
delay(7);
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void ting()
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
}
void zuozhuan()
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void youzhuan()
{
ENA=1;
ENB=1;
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
//*********************************
void main()
{
TMOD=0X01; //¶¨•rÆ÷¹¤×÷·½Ê½0
TH0=0;
TL0=0;
EA=1; //é_¿‚ÖДà
ET0=1;//é_¶¨•rÆ÷ÖДà
while(1)
{
jiance1();
jiance2();
jiance3();
}
}
šgÓ¹âÅR (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1