⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 超声波测距离.c

📁 这是一个基于51系列单片机的超声波测距程序 解压不需要密码.
💻 C
字号:
#include <AT892051.H>
#define unit unsigned int
#define uchar unsigned char
sbit fs=P3^0;	//发送端;				
sbit h=P3^7;
sbit l=P3^5;		//数码管位选端;
sbit m=P3^4;
uchar tab[16]={0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xA0,0x60,0x25,0x3C,0x23,0x34,0x74};//段码;
uchar u[3]; 	//显示数组;
unit count,b;
void delay(unit a)	//延时;
{
	unit m;
	for(m=0;m<a;m++); 
}
void tx()	//从P3.0发出40KHz的脉冲
{
	uchar n,p;
	for(n=0;n<40;n++){
	fs=1;
	for(p=0;p<3;p++);
	fs=0;
	for(p=0;p<2;p++);
	fs=0;
	}
}
void display(void)	//显示;
{
	for(;;)
	{
 		l=1;m=1;h=1;
		P1=tab[u[0]];
		m=0;
		delay(10);
		m=1;
		P1=tab[u[1]];
		l=0;
		delay(10);
		l=1;
		P1=tab[u[2]];
		h=0;
		delay(10);
		h=1;
	}			
}
void    rx() interrupt 0	//外部中断0,接收信号
{
	TR0=0;
	count=TH0*256+TL0;
	if(count<300);
	if(count>=300)			
		{
			b=(17*count)/1000;
			u[0]=b%10;
			u[1]=(b/10)%10;
			u[2]=(b/100)%10;
		    display();
		  }
}
void over()interrupt 1	//T0溢出为无效测量FFF;
{
	u[0]=15;
	u[1]=15;
	u[2]=15;
	display();
}
void main()
{
	fs=0;
	delay(8600);
	TH0=0;
	TL0=0;
	TMOD=0x01;
	TR0=1;
	EA=1;
	ET0=1;
	PT0=1;
	tx();
	IT0=1;
	IE=0x83;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -