基于AT89C51单片机的DS18B20温度报警与风扇控制系统从零制作步骤与原理说明

📅 2026/8/12 20:37:23
基于AT89C51单片机的DS18B20温度报警与风扇控制系统从零制作步骤与原理说明
本系统由以下几个模块组成1. AT89C51单片机最小系统2. DS18B20温度采集模块3. LCD1602显示模块4. 三按键参数设置模块5. 高温/低温LED报警模块6. 蜂鸣器声音报警模块7. 风扇或继电器自动降温执行模块8. ADC0832模拟量采集模块9. AT24C512 EEPROM参数存储模块10. DS1302实时时钟模块1.单片机最小系统单片机最小系统是指让单片机能够独立正常运行程序所必需的最基本硬件电路。对于 AT89C51 来说最小系统通常包括单片机芯片、时钟电路、复位电路、供电电路以及 EA 引脚连接。在本设计中AT89C51 作为控制核心负责完成温度采集、显示控制、按键检测和报警输出等功能。为了使单片机能够正常工作需要为其提供稳定的工作电源、可靠的时钟信号和上电复位信号。时钟电路由 12MHz 晶振和两个 22pF 电容组成晶振两端分别接单片机的 XTAL1 和 XTAL2 引脚两个电容分别接地。该电路为单片机提供稳定的时钟脉冲使单片机能够按照固定节拍执行程序。复位电路由 10kΩ 电阻和 10uF 电容组成连接到单片机 RST 引脚。系统上电瞬间电容使 RST 引脚产生短暂高电平使单片机复位随后 RST 引脚恢复低电平单片机开始从程序初始地址运行。5V | C3 10uF | RST ───── 接单片机RST脚 | R1 10k | GNDAT89C51 的 RST 是高电平复位RST 1单片机停下来并回到初始状态 低电平运行RST 0单片机开始正常运行供电电路为单片机提供 5V 工作电压并保证系统各模块共地。EA 引脚接高电平使 AT89C51 使用内部程序存储器运行程序。EA 是 External Access外部程序访问控制脚。对 AT89C51 来说EA1使用单片机内部程序存储器EA0使用外部程序存储器。最小系统原理图2.DS18B20温度采集模块温度采集模块主要由 DS18B20 数字温度传感器和上拉电阻 R2 组成。DS18B20 负责检测环境温度并将温度信息转换成数字信号。其 VCC 引脚接 5V 电源GND 引脚接地DQ 数据引脚接 AT89C51 单片机的 P3.7 引脚。DQ 与 5V 之间接入 4.7kΩ 上拉电阻用于保证单总线通信时数据线空闲状态为稳定高电平。工作原理DS18B20 是数字温度传感器内部已经完成了温度测量和模数转换因此单片机不需要再外接 ADC 电路。单片机通过 P3.7 引脚与 DS18B20 的 DQ 引脚进行单总线通信。系统工作时单片机先向 DS18B20 发送初始化和温度转换命令DS18B20 完成温度采集后将温度数据通过 DQ 数据线返回给单片机。单片机读取温度数据后再进行处理、显示和报警判断。由于 DS18B20 的 DQ 数据线采用单总线通信方式数据线既用于单片机发送命令也用于传感器返回数据。单总线空闲时需要保持高电平因此在 DQ 和 5V 之间接入 4.7kΩ 上拉电阻。当单片机或 DS18B20 需要发送低电平信号时可以将 DQ 拉低当没有器件拉低数据线时R2 将 DQ 自动拉回高电平从而保证通信稳定可靠。温度采集模块原理图3.LCD1602显示模块LCD1602用于显示当前温度高温报警上限高温报警下限系统状态OK/HIGH/LOW本设计采用 LCD1602 的 8 位并行通信方式将 LCD 的 D0-D7 数据线连接到 AT89C51 的 P0.0-P0.7将控制线 RS、RW、E 分别连接到 P2.0、P2.1、P2.2。由于 AT89C51 的 P0 口作为普通 I/O 使用时需要外接上拉电阻因此在 P0.0-P0.7 上接入 10kΩ 排阻 RP1用于保证数据线高电平稳定。RS 的作用是区分当前发送的是命令还是数据RS 0写命令例如清屏、设置光标位置 RS 1写数据例如显示字符、数字、符号RW 的作用是选择读写方向RW 0单片机向LCD写入数据 RW 1单片机从LCD读取数据E 是使能端。单片机先把数据放到 D0-D7 上再设置好 RS 和 RW然后让 E 产生一次高低电平变化LCD 就会接收这次数据。运行原理LCD1602 工作时单片机首先对其进行初始化例如设置 8 位数据接口、开启显示、清屏和设置光标移动方式。初始化完成后单片机通过 P0 口向 LCD 的 D0-D7 数据线发送命令或字符数据并通过 RS、RW、E 控制 LCD 接收。当需要显示温度值时单片机先读取 DS18B20 的温度数据并转换成字符形式然后把字符逐个送到 LCD1602。例如显示 Temp:27.0C 时单片机会依次发送 T、e、m、p、:、2、7、.、0、C 等字符。LCD 接收到这些字符后在对应位置显示出来。本设计中LCD1602 可设置为第一行显示Temp:27.0C 第二行显示H:35 L:10 OK4. 三按键参数设置模块系统设置三个独立按键作为人机输入接口。K1为模式切换键用于在正常显示、设置高温上限和设置低温下限之间切换K2为加键用于增加当前设置值K3为减键用于减少当前设置值。三个按键均采用低电平有效方式按下时对应I/O口被拉低单片机通过软件扫描判断按键状态。6. 蜂鸣器声音报警模块蜂鸣器用于高温或低温异常时发声提示。单片机 I/O 口输出电流有限不适合直接驱动电流较大的蜂鸣器因此使用 NPN 三极管作为开关。单片机输出有效电平控制三极管导通蜂鸣器获得电流后发声。R5 是基极限流电阻用于限制进入三极管基极的电流保护单片机 I/O 口和三极管。单片机只接三极管的基极P1.2 - R5 - 三极管基极这时单片机只提供一个很小的基极电流让三极管导通。三极管一导通就相当于开关闭合蜂鸣器电流从这里走5V - 蜂鸣器 - 三极管集电极C - 三极管发射极E - GND三极管的作用是用单片机I/O口的小电流控制蜂鸣器所在的大电流回路。8. ADC0832模拟量采集模块ADC0832 用于采集一路模拟电压信号使系统除了温度检测外还具备模拟量采集功能。这个模拟量可以用电位器产生也可以用光敏电阻、烟雾传感器、湿度传感器等模拟量传感器产生。ADC0832 是模数转换芯片作用是把 0V 到 5V 之间连续变化的模拟电压转换成单片机可以处理的数字量。AT89C51 本身不能直接读取模拟电压只能识别高低电平因此当系统需要采集光照、电位器、烟雾、湿度等模拟信号时需要使用 ADC。各接口作用如下| ADC0832引脚 | 作用 | |---|---| | VCC | 芯片电源接 5V | | GND | 芯片地 | | CH0 | 模拟输入通道0 | | CH1 | 模拟输入通道1可不用或扩展 | | CS | 片选信号低电平时 ADC 工作 | | CLK | 串行时钟由单片机提供 | | DI | 单片机向 ADC 发送通道选择命令 | | DO | ADC 向单片机输出转换结果 |在本设计中电位器 RV1 用于模拟一路环境模拟量。转动电位器时CH0 输入端电压发生变化ADC0832 将该模拟电压转换为数字数据后通过 DO 引脚发送给单片机。单片机可将 ADC 数值显示在 LCD1602 上。9. AT24C512 EEPROM参数存储模块本设计采用AT24C512 EEPROM作为参数存储芯片。10. DS1302实时时钟模块DS1302 是实时时钟芯片用于提供年、月、日、时、分、秒等时间信息。加入 DS1302 后系统可以在 LCD1602 上显示当前时间也可以在温度报警时记录报警发生时间使系统功能更完整。完整原理图