一、项目概述
本项目基于AT89C52单片机搭建一套非接触红外测温装置,使用MLX90614(GY-906)红外测温传感器采集物体温度,温度数据通过LCD1602液晶屏实时可视化展示;配套独立按键实现交互,有源蜂鸣器作为温度超标报警提示。
系统通信采用SMBus(兼容I2C)协议读取红外测温芯片,硬件包含最小系统、测温模块、显示模块、按键输入、声光报警单元,可直接用于Proteus仿真调试,也能适配实物PCB打样开发。
二、硬件模块原理分析
标准51最小运行环境:
1. 晶振电路:12MHz无源晶振搭配33pF起振电容,系统机器周期1μs,方便精准编写模拟I2C时序、延时函数;
2. 复位电路:上电复位+手动按键复位。上电瞬间电容充电,RST引脚维持高电平完成单片机初始化;按下SW2可以手动重启系统;
3. EA引脚默认接高电平(原理图隐含),优先使用片内Flash程序存储。

2. MLX90614非接触红外测温模块(GY-906)
MLX90614是红外热电堆传感器,无需接触被测物体即可采集温度,采用SMBus通信(兼容I2C)。
1. 硬件接线:SDA接P2.1,SCL接P2.0;外部7.5k上拉电阻R2、R3,保证总线电平稳定;
2. 设备地址:默认单播地址0x5A;区别于广播地址0x00,正式读取数据推荐使用0x5A;
3. 通信重点:读取温度时需要完整接收 DataL+DataH+PEC(CRC校验字节);
重要踩坑提示:MLX90614不能直接套用普通I2C时序,SCL高电平时间需要满足SMBus ≥4.7μs要求,时序不足会出现无应答、读数乱跳。

3. LCD1602液晶显示电路
LCD1602采用8位并行模式连接51单片机P0口:
1. P0端口为开漏输出,外接10k排阻RP1作为上拉电阻,保障高低电平输出正常;
2. 控制引脚:
◦ LCD_RS → P2.6 寄存器选择
◦ LCD_WR → P2.5 读写控制
◦ LCD_EN → P2.7 使能信号
3. 功能:实时显示环境温度、被测物体温度,支持摄氏度符号显示。

4. 按键输入电路
4路独立按键 SW3~SW6,分别接入P3.2~P3.5。
按键一端接IO口,一端直连GND;默认IO内部上拉,按键按下为低电平。可以拓展功能:温度阈值设置、页面切换、报警开关等交互逻辑。

5. 有源蜂鸣器报警电路(重点避坑)
电路采用NPN三极管(S9013/S8050)低端驱动方案
• IO口P1.5经过1k限流电阻R4驱动Q1基极
• BUZ有源蜂鸣器串联在5V与三极管集电极之间,三极管导通时蜂鸣器通电鸣叫

三、整体工作流程
1. 系统上电,单片机初始化LCD1602、I2C时序、IO口;
2. 循环通过SMBus读取MLX90614的环境温度、物体温度原始数据;
3. 对接收的数据进行CRC校验,校验失败直接丢弃本次采样,保留上一次有效值,抑制温度跳变;
4. 将原始数据换算成摄氏温度,在LCD1602刷新显示;
5. 程序判断当前温度,如果超过设定报警阈值,置高P1.5,三极管导通,蜂鸣器启动报警;
6. 扫描独立按键,支持用户调整温度报警阈值。

有什么问题评论区询问吧!


![[开源]基于STM32单片机WiFi智能停车场系统 Onene车位管理设计 云平台停车场车位检测 APP智慧停车场HK-010-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260921150408-6ab1476821e49-220x150.jpg)