51单片机超声波测距代码

超声波测距代码:

cpp 复制代码
#include<reg52.h>

sbit echo=P2^0 ; //回声接收端口
sbit trig=P2^1  ;//超声波触发端口

sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;

sbit in=P2^2;

#define dula P0
#define uchar unsigned char
#define uint unsigned int

long int distance=0;
uchar count;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x71};

void delay(uint xms)
{
	uint i,j;
	for(i=xms;i>0;i--)
		for(j=112;j>0;j--);
}

void display(long int num)
{
	uchar qian,bai,shi,ge;
	if((num>5000)||(num==0))
	{
		 qian=15;
		 bai=15;
		 shi=10;
		 ge=15;
	}
	else
	{
		   qian=num/1000;
		   bai=(num/100)%10;
		   shi=(num/10)%10;
		   ge=num%10;
		   if(bai>0)
		   {
		   	   in=0;
		   }
		   else if(bai==0)
		   {
		   	   in=1;
		   }
	}

	wei1=1;
	wei2=0;
	wei3=0;
	wei4=0;
	P0=table[qian];
	delay(2);

	wei1=0;
	wei2=1;
	wei3=0;
	wei4=0;
	P0=table[bai];
	delay(2);

	wei1=0;
	wei2=0;
	wei3=1;
	wei4=0;
	P0=table1[shi];
	delay(2);

	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	P0=table[ge];
	delay(2);
}

void Init_timer0(void)
{
	 TMOD=0x01;
	 TL0=0x66;
	 TH0=0xfc;
	 ET0=1;
	 EA=1;
}

void Init_parameter(void)
{
 	 echo=0;
 	 trig=0;
 	 count=0;
 	 distance=0;
}

void Trig_SuperSonic(void) //发出声波
{
	 trig=1;
	 delay(1);
	 trig=0;
}

void Measure_Distance(void)
{
	uchar l;
	uint h,y;
	TR0=1;
	while(echo)
	{
		  ;
	}
	TR0=0;
	l=TL0;
	h=TH0;
	y=(h<<8)+1;
	y=y-0xfc66;
	distance=y+1000*count;
	TL0=0x66;
	TH0=0xfc;
	delay(30);
	distance=0.17*distance;
}

void main(void)
{
	uchar a;
	Init_timer0();
	Init_parameter();
	while(1)
	{
		 Trig_SuperSonic();
		 while(echo==0)
		 {
		 		;
		 }
		 Measure_Distance();
		 for(a=100;a>0;a--)
		 {
		 	 display(distance);
		 }
		  Init_parameter();
	}
}

void timer0(void)interrupt 1
{
	TF0=0;
	TL0=0x66;
	TH0=0xfc;
	count++;
	if(count==18)
	{
		 TR0=0;
		 TL0=0x66;
		 TH0=0xfc;
		 count=0;
	}
}
相关推荐
lisw053 天前
用于医疗的磁驱动柔性微机器人研究进展!
机器人·自动化·硬件工程
ChaseVLSI6 天前
FPGA与ASIC的区别详解:内部结构、开发成本与适用场景,项目选型到底该选哪个
嵌入式硬件·fpga开发·硬件架构·硬件工程
ACP广源盛139246256738 天前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
粟米茶8 天前
LTspice 导入第三方 Spice 模型实操
硬件工程·硬件电路·运放
暴走约伯8 天前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
ACP广源盛139246256738 天前
选型笔记:HDMI2.1 四进一出切换中继方案 GSV6705@ACP 评估
笔记·硬件架构·硬件工程·视频·国产芯片
爱聊灵光的维C8 天前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
mk0159 天前
单片机同步降压稳压器输出最低1V,关断时损耗3uA
单片机·嵌入式硬件·硬件工程·智能硬件·pcb工艺
ACP广源盛139246256739 天前
Type‑C 扩展坞选型笔记:USB3.0 双通道信号切换方案 LH3412@ACP 评估
笔记·硬件架构·硬件工程·国产芯片·开关
HQB202610 天前
屹晶微电子 EG1130|2‑24V 输入 / 最高 28V 输出 内置 MOS 异步升压 DC‑DC|SOT23‑6|摄像头 / 车充 / 电池充电电源
嵌入式硬件·硬件工程