基于51开发板和HC-SRO4超声波测距模块的超声波距离报警系统,需要实现以下功能: 当超声波与物体距离大于40cm时,系统不做出响应。 当超声波与物体距离大于30cm小于40cm时,D1灯闪烁。 当超声波与物体距离大于20cm小于30cm时,D1灯常亮。 当超声波与物体距离大于10cm小于20cm时,蜂鸣器报警(频率较慢)。 当超声波与物体距离小于10cm时,蜂鸣器报警(频率较快)。
时间: 2024-03-01 16:54:22 浏览: 26
以下是基于51开发板和HC-SRO4超声波测距模块的超声波距离报警系统的代码实现:
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1 = P1^0; // D1灯接口
sbit BEEP = P1^1; // 蜂鸣器接口
sbit TRIG = P2^0; // 超声波测距模块TRIG引脚
sbit ECHO = P2^1; // 超声波测距模块ECHO引脚
void Delay10us(uint t) // 延时函数
{
while(t--);
}
void Init_Timer0() // 初始化定时器0
{
TMOD &= 0xF0;
TMOD |= 0x01; // 16位定时器模式
TH0 = 0xFC; // 定时500ms
TL0 = 0x66;
TR0 = 1; // 启动定时器
ET0 = 1; // 允许定时器0中断
EA = 1; // 允许总中断
}
void Start_Trigger() // 启动超声波测距模块
{
TRIG = 1;
Delay10us(5);
TRIG = 0;
}
uint Get_Distance() // 获取距离值
{
uint distance;
while(!ECHO); // 等待ECHO引脚变高
TR0 = 1; // 启动定时器0
while(ECHO); // 等待ECHO引脚变低
TR0 = 0; // 停止定时器0
distance = TH0;
distance <<= 8;
distance |= TL0; // 计算距离值
distance /= 58; // 转换为厘米单位
return distance;
}
void main()
{
D1 = 0; // 初始状态为灭
BEEP = 0; // 初始状态为不响
Init_Timer0();
while(1)
{
Start_Trigger(); // 启动超声波测距模块
uint distance = Get_Distance(); // 获取距离值
if(distance > 40) // 超过40cm,系统不做出响应
{
D1 = 0;
BEEP = 0;
}
else if(distance > 30) // 30cm-40cm,D1灯闪烁
{
D1 = ~D1;
BEEP = 0;
}
else if(distance > 20) // 20cm-30cm,D1灯常亮
{
D1 = 1;
BEEP = 0;
}
else if(distance > 10) // 10cm-20cm,蜂鸣器报警(频率较慢)
{
D1 = 1;
BEEP = ~BEEP;
}
else // 小于10cm,蜂鸣器报警(频率较快)
{
D1 = 1;
BEEP = (BEEP + 1) % 3;
}
}
}
void Timer0_ISR() interrupt 1 // 定时器0中断服务程序
{
TH0 = 0xFC; // 定时500ms
TL0 = 0x66;
TR0 = 0; // 停止定时器
TF0 = 0; // 清除中断标志位
}
```
该代码实现了基于51开发板和HC-SRO4超声波测距模块的超声波距离报警系统,并能够实现要求的各种功能。需要注意的是,在实际使用中,需要根据具体硬件设备和开发板来进行调整和编写。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)