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;