超声波测距
时间:10-02
整理:3721RD
点击:
#include <AT89X52.h> //调用51单片机的头文件
#include <intrins.h>
#include <math.h>
//---------------------------------------
sbit A0=P1^0; //U165(74HC138)的A0脚接在P1.0口上
sbit A1=P1^1; //U165(74HC138)的A1脚接在P1.1口上
sbit A2=P1^2; //U165(74HC138)的A2脚接在P1.2口上
int N;
unsigned char code LED[10]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbit TIRG=P3^4;
sbit ECHO=P3^2;
unsigned int flag;
void Timer0(void) interrupt 1
{
flag=0;
}
void main(void)
{
long S;
unsigned int i,c,flag;
unsigned int Timeout;
TMOD&=0xF0; //将TMOD的低4位定时器0控制部分清零
TMOD|=0x01; //设置定时器0为方式1
TMOD=0x01;
TL0=0; //设置定时器0初值低8位
TH0=0; //设置定时器0初值高8位
TR0=0; //停止定时器0
ET0=1; //Timer0中断允许
EA=1; //开全局中断
while(1)
{
TIRG=1;
i=4;
while(i>0)
i--;
TIRG=0;
TR0=0;
TL0=0;
TH0=0;
flag=0;
Timeout=0;
while((ECHO==0)&&(Timeout++<20000));
TR0=1;
Timeout=0;
while((ECHO==1)&&(Timeout++<20000));
TR0=0;
S=(TH0*256+TL0)/58;
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// P1=0x03; //选通数码管的千位进行显示
// P2=LED[S/1000];
// for(c=0;c<250;c++);
// P1=0x02; //数码管的百位进行显示
// P2=LED[(S%1000)/100];
for(N=0;N<10;N++)
{ P0_0=1;
P0_1=1;
P2=LED[(S%100)/10];
P0_0=1;
P0_1=0; //十位进行显示
for(c=0;c<1500;c++)
P0_0=1;
P0_1=1;
P2=LED[S%10];
P0_0=0;
P0_1=1;
P2=LED[S%10];
for(c=0;c<1000;c++);
}
}
}
#include <intrins.h>
#include <math.h>
//---------------------------------------
sbit A0=P1^0; //U165(74HC138)的A0脚接在P1.0口上
sbit A1=P1^1; //U165(74HC138)的A1脚接在P1.1口上
sbit A2=P1^2; //U165(74HC138)的A2脚接在P1.2口上
int N;
unsigned char code LED[10]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbit TIRG=P3^4;
sbit ECHO=P3^2;
unsigned int flag;
void Timer0(void) interrupt 1
{
flag=0;
}
void main(void)
{
long S;
unsigned int i,c,flag;
unsigned int Timeout;
TMOD&=0xF0; //将TMOD的低4位定时器0控制部分清零
TMOD|=0x01; //设置定时器0为方式1
TMOD=0x01;
TL0=0; //设置定时器0初值低8位
TH0=0; //设置定时器0初值高8位
TR0=0; //停止定时器0
ET0=1; //Timer0中断允许
EA=1; //开全局中断
while(1)
{
TIRG=1;
i=4;
while(i>0)
i--;
TIRG=0;
TR0=0;
TL0=0;
TH0=0;
flag=0;
Timeout=0;
while((ECHO==0)&&(Timeout++<20000));
TR0=1;
Timeout=0;
while((ECHO==1)&&(Timeout++<20000));
TR0=0;
S=(TH0*256+TL0)/58;
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// P1=0x03; //选通数码管的千位进行显示
// P2=LED[S/1000];
// for(c=0;c<250;c++);
// P1=0x02; //数码管的百位进行显示
// P2=LED[(S%1000)/100];
for(N=0;N<10;N++)
{ P0_0=1;
P0_1=1;
P2=LED[(S%100)/10];
P0_0=1;
P0_1=0; //十位进行显示
for(c=0;c<1500;c++)
P0_0=1;
P0_1=1;
P2=LED[S%10];
P0_0=0;
P0_1=1;
P2=LED[S%10];
for(c=0;c<1000;c++);
}
}
}
顶一下新手
好牛逼啊
看了下,、还不错
