51单片机的超声波测距系统【proteus仿真+程序+报告+原理图】

1、主要功能

该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。

利用51单片机实现超声波测距功能。利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器计时,读取时间,计算距离,测量结果输出给数码管显示。同时可以通过按键设定报警距离,如果距离过大或者过小,蜂鸣器都会报警。

可实现基本功能:

1、超声波测量距离

按键功能:

1、设置报警值的上限

2、设置报警值的下限

2、仿真

protues 仿真使用的是8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)


3、程序代码

只是放上来了部分代码,仅供参考。

/* 启动超声波程序 */
void StartModule(void)
{
	Ttig = 1;			//启动一次模块
	_nop_();			//延时一段时间,至少10us以上 
	_nop_(); 			
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_();
	_nop_(); 
	_nop_(); 
	_nop_(); 
	_nop_();
	Ttig = 0;
}
/* 计算测距 */
void count(void)
{
	StartModule();	//启动一次超声波
	while(!Echo);		//等待超声波模块输出IO拉高 
	TR0 = 1;			//开启定时器计时
	while(Echo);		//等待超声波模块输出IO拉低
	TR0 = 0; 			//关闭定时器计时
	
	/* 计算距离 */
	time = TH0 * 256 + TL0;	//得到的时间,专业写法应该是这样:time = TH0 << 8 | TL0
	TH0 = 0;				//定时计数器清零	
	TL0 = 0;
	
	S = (time * 1.7) / 100; //算出来是M				
}

/* 显示距离 */
void dis_distance(void)
{
	dis_buf[3] = 0x00;
	dis_buf[2] = duan_ma[S / 100 %10]; 	//取出百位数,并在数码管的第3位显示,从右往左数
	dis_buf[1] = duan_ma[S / 10 %10];	//取出十位数,并在数码管的第2位显示,从右往左数
	dis_buf[0] = duan_ma[S % 10]; 		//取出个位数,并在数码管的第1位显示,从右往左数	
}

/* 主函数 */
void main(void)
{
	digDuan = 0x40;		//显示"----"
	digWei1 = 0;
	digWei2 = 0;
	digWei3 = 0;
	digWei4 = 0;
	delayms(1000);		//延时大约1s 
	InitTimer0();		//定时器0初始化

	while(1)
	{
		count();					//计算距离
		if(S>=S_H || S<=S_L)		//如果超出设定的范围,则显示"---"
		{
			dis_buf[3] = 0x00;
			dis_buf[2] = 0x40; 		//显示"---"
			dis_buf[1] = 0x40;
			dis_buf[0] = 0x40;	
			BEEP = 0;			//蜂鸣器鸣叫
			delayms(1000);
		}
		else
		{
			BEEP = 1;			//关闭蜂鸣器
			dis_distance();		//显示距离
		}

		if(key_scan() == 1)		//如果按下设置键,则进入设置报警功能
		{
			BEEP = 0;			//按键提示音
			delayms(50);
			BEEP = 1;
			delayms(100);
		 	key_fuction();		//进入设置报警功能
		}			
	}
}

4、原理图

5、报告

 内含5k字,17页的相关报告一份,纯手打,内容一致


6、常见问题汇总

里面包含了我对各个模块的详细解析,可以结合代码一起理解。如果正巧老师问题多,这个可以帮到你哦。(不定时更新,讲解模块也会越来越多)

7、资源获取

扫描如下二维码,后台回复"51超声波测距"获取~
项目没有开源,浅浅一杯奶茶💴,支持答疑~
希望可以对你有所帮助哈!

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值