51单片机教室人数进出统计检测LCD1602管显示装置红外传感器

实践制作DIY- GC0077-人数检测

一、功能说明:

基于51单片机设计-人数检测

  • 功能介绍:

基于STC89C52(AT89C51/52)单片机,4个红外对射传感器1个门2个传感器,前门后门都可以检测人数进出,一个按键(清零人数)LCD1602显示器

1.核心功能2个红外对射传感器,一前一后,根据前后传感器感应先后顺序去判断当前是进人还是出人。

2.可以统计进入、出去、总数 3种数据。使用LCD1602显示器显示当前教室进入、出去、总数。

3.有一个清零按键,点击清零后3种数据人数清零,LCD1602显示器0000。

三、详情介绍:

视频讲解:哔哩哔哩搜索UP主“爱搞单片机”在其空间搜索关键词人数检测观看该视频详解讲解

 

功能演示操作

这是一款基于51单片机人数检测基于STC89C52(AT89C51/52)单片机,4个红外对射传感器1个门2个传感器,前门后门都可以检测人数进出,一个按键(清零人数)LCD1602显示器

1.核心功能2个红外对射传感器,一前一后,根据前后传感器感应先后顺序去判断当前是进人还是出人。

2.可以统计进入、出去、总数 3种数据。使用LCD1602显示器显示当前教室进入、出去、总数。

3.有一个清零按键,点击清零后3种数据人数清零,LCD1602显示器0000。

具体测试方法观看视频详细介绍。。。

 

了解更多尽请观看视频讲解。。。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是基于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."。需要注意的是,本示例中的报警信息和警告信息都是静态的,实际应用中可以根据具体需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值