基于51单片机Lu90614红外传感器LCD1602显示蜂鸣器报警代码
时间: 2023-12-11 10:05:38 浏览: 55
以下是基于51单片机,使用Lu90614红外传感器,LCD1602显示屏和蜂鸣器的报警代码示例:
```C
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep = P2^3; // 蜂鸣器控制引脚
sbit RS = P0^0; // LCD1602命令/数据选择引脚
sbit RW = P0^1; // LCD1602读/写选择引脚
sbit EN = P0^2; // LCD1602使能引脚
sbit temp = P3^7; // 红外传感器数据引脚
void delay(uint z); // 延时函数声明
void Init_Lcd1602(); // LCD1602初始化函数声明
void LcdWriteCom(uchar com); // LCD1602写命令函数声明
void LcdWriteData(uchar dat); // LCD1602写数据函数声明
void LcdShowStr(uchar x,uchar y,uchar *str); // LCD1602显示字符串函数声明
void main()
{
uchar str1[]=" FIRE!"; // 显示的报警信息
uchar str2[]=" WARNING!";
uchar str3[]="No Fire.";
uchar flag = 0; // 报警标志位,0表示无报警,1表示有报警
Init_Lcd1602(); // 初始化LCD1602
LcdShowStr(0,0,str3); // 初始化显示"NO FIRE."
while(1)
{
if(temp == 0) // 如果红外传感器探测到火焰
{
if(flag == 0) // 如果之前无报警
{
flag = 1; // 设置报警标志位
beep = 1; // 开启蜂鸣器
LcdWriteCom(0x01); // 清屏
LcdShowStr(0,0,str1); // 显示报警信息
LcdShowStr(0,1,str2);
}
}
else // 如果红外传感器未探测到火焰
{
if(flag == 1) // 如果之前有报警
{
flag = 0; // 清除报警标志位
beep = 0; // 关闭蜂鸣器
LcdWriteCom(0x01); // 清屏
LcdShowStr(0,0,str3); // 显示"NO FIRE."
}
}
}
}
void delay(uint z) // 延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Init_Lcd1602() // LCD1602初始化函数
{
LcdWriteCom(0x38); // 显示模式设置,8位数据总线,2行显示,5*7点阵字符
LcdWriteCom(0x0c); // 显示开关控制,显示开,光标关,光标闪烁关
LcdWriteCom(0x06); // 光标/显示移位,光标右移,字符不移动
LcdWriteCom(0x01); // 清屏,光标回到起始位置
}
void LcdWriteCom(uchar com) // LCD1602写命令函数
{
RS = 0; // 命令模式
RW = 0; // 写入模式
P2 = com; // 写入数据
EN = 1; // 使能
_nop_(); // 空操作
EN = 0; // 禁能
delay(1); // 延时
}
void LcdWriteData(uchar dat) // LCD1602写数据函数
{
RS = 1; // 数据模式
RW = 0; // 写入模式
P2 = dat; // 写入数据
EN = 1; // 使能
_nop_(); // 空操作
EN = 0; // 禁能
delay(1); // 延时
}
void LcdShowStr(uchar x,uchar y,uchar *str) // LCD1602显示字符串函数
{
uchar i=0;
if(y==0) LcdWriteCom(0x80+x); // 第1行
else if(y==1) LcdWriteCom(0xc0+x); // 第2行
while(str[i] != '\0') // 循环显示字符串
{
LcdWriteData(str[i]);
i++;
}
}
```
在上述代码中,红外传感器数据引脚接在P3.7上,蜂鸣器控制引脚接在P2.3上,LCD1602显示屏的命令/数据选择引脚、读/写选择引脚和使能引脚分别接在P0.0、P0.1和P0.2上。在主函数中,程序会不断检测红外传感器的状态,如果探测到火焰,就会开启蜂鸣器并显示报警信息到LCD1602上,如果未探测到火焰,则关闭蜂鸣器并显示"NO FIRE."。需要注意的是,本示例中的报警信息和警告信息都是静态的,实际应用中可以根据具体需求进行修改。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)