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;
	}
}
相关推荐
XINVRY-FPGA1 天前
XCKU15P-2FFVA1760I AMD 赛灵思 Xilinx Kintex UltraScale+ FPGA
arm开发·嵌入式硬件·阿里云·fpga开发·云计算·硬件工程·fpga
江流月照2 天前
IP验证学习之agent编写
学习·硬件架构·硬件工程
逼子格3 天前
Altium Designer(AD)原理图更新PCB后所有器件变绿解决方案
单片机·嵌入式硬件·硬件工程·问题解决·ad·pcb·altium designer
蒋星熠3 天前
中间件架构设计与实践:构建高性能分布式系统的核心基石
开发语言·数据库·分布式·python·中间件·性能优化·硬件工程
蒋星熠5 天前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
猫头虎5 天前
2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
stm32·单片机·嵌入式硬件·物联网·硬件架构·51单片机·硬件工程
智者知已应修善业8 天前
【multisim汽车尾灯设计】2022-12-1
驱动开发·经验分享·笔记·汽车·硬件架构·硬件工程
来生硬件工程师9 天前
【硬件笔记】负载是如何烧MOS的?
笔记·嵌入式硬件·硬件架构·硬件工程·硬件设计
码界奇点9 天前
豆包新模型矩阵与PromptPilot构建企业级AI开发的体系化解决方案
人工智能·线性代数·ai·语言模型·矩阵·硬件工程
陌夏微秋11 天前
FPGA硬件设计4 ZYNQ外围-以太网-PL/PS
stm32·单片机·嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信