51单片机超声波测距数码管显示并报警(Proteus 仿真)

HC-SR04超声波

实物图
在这里插入图片描述
使用方法
1、给TRIG端口至少10us 的高电平信号
2、模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回
3、有信号返回,ECHO端口会输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间
计算的话这里就不考虑温度的影响直接用声速340m/s

Proteus仿真

HC-SR04可以用Proteus中的SRF04代替
在这里插入图片描述

下面附上代码

			/**************************************************************************
				*******************************超声波测距***************************
					** 按下K1后进行距离测量,当测得的距离超过预设的距离就进行报警 **
							****	当按下K2后增加预设距离,当按下K3后减小预设距离	****  
								*****    若超过测量距离进行报警并显示“ERR”			******
									*******					初始预设距离为100cm        *******
			**************************************************************************/

#include"reg51.h"
#include"intrins.h"

#define uchar unsigned char
#define uint unsigned int
#define LED P0//数码管段选

sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;

sbit TR = P3^0; //超声波发射端
sbit EC = P3^2; //超声波接收端

sbit K1 = P1^0;//开始测量按钮
sbit K2 = P1^1;//预设值增加按钮
sbit K3 = P1^2;//预设值减小按钮

sbit buzzer = P1^5;//嗡鸣器控制按钮

uint biao = 0x64;//预设值定为100
uint S;//保存超声波距离
bit flag1;//开始按钮启动标志
bit flag2;//距离计算完成标志

//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
uchar led_wei[]={
   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
								 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};							 
								 
void delay(uint i)//延时函数
{
   
	while(i--);
}	

void init()//定时器初始化
{
   
	TMOD = 0X01;//16位定时器
	TH0 = TL0 =0x00;//装载初值 12MHZ晶振
	TR0 = 0; //先关闭定时器0
	TR = 0;
  • 22
    点赞
  • 210
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值