DHT11温湿度采集与阈值报警 Verilog Quartus
名称:DHT11温湿度采集与阈值报警 Verilog Quartus
软件:Quartus
语言:Verilog
功能介绍
本设计使用 Verilog 实现 DHT11 温湿度采集与显示报警功能,工程以 DHT11_ctrl 为顶层,包含传感器驱动和显示控制逻辑。顶层通过双向数据端口连接 DHT11,并接收低电平有效的系统复位信号。 采集到的温度和湿度数据显示在数码管上;温度、湿度阈值可分别通过拨码开关输入。设计将实际值与相应阈值比较,当实际温度或湿度超过设定值时,分别驱动温度或湿度 LED 报警指示。八路数码管输出分别用于显示实际湿度、实际温度及两项阈值的十位和个位。运行环境
语言:Verilog;开发软件:Quartus。工程提供 Quartus 项目文件、管脚分配文件及已编译输出文件。设计思路
设计以 DHT11 单总线通信为输入,分为传感器采集、数据显示与报警控制两部分。传感器驱动模块依据 DHT11 时序读取数据帧并输出温度和湿度数值,顶层模块将采集结果连接到显示控制逻辑。 显示控制部分把实际温湿度及拨码开关设定的温度、湿度阈值分别拆分为十位和个位,并转换为数码管段码。实际温度或湿度高于各自设定阈值时,对应 LED 报警输出有效,便于同时观察测量值、阈值和报警状态。模块结构
工程顶层为 DHT11_ctrl,连接 dht11 传感器驱动模块与 dis_HEX 显示、阈值比较模块。dht11 负责通过单总线采集并解析温湿度数据;dis_HEX 接收测量值和设定阈值,完成数码管显示编码及 LED 报警输出。开发板验证
工程包含 DE70.qsf 与 DHT11_ctrl.qsf 管脚分配文件,可用于将设计连接到开发板上的时钟、DHT11 数据端口、拨码开关、LED 与数码管。顶层提供温湿度阈值设置、温湿度报警及八位数码管显示接口。演示视频
通过演示视频查看 DHT11 温湿度采集、数码管显示与阈值报警的运行效果。仿真图/仿真说明/设计文档图片
文档配有工程结构、程序编译、RTL 图、管脚分配和 Testbench 仿真相关图片,可辅助了解设计层次与验证流程。






部分代码
以下展示顶层模块 DHT11_ctrl 的部分代码,完整源码请下载压缩包查看。
module DHT11_ctrl(
input clk, // 系统时钟: 50MHz
input i_rst_n, // 系统复位: 低电平有效
inout io_data, // DHT11单总线数据端口: 双向IO
input [6:0]set_temp,// 拨码开关设置的温度报警阈值 (0-99)
input [6:0]set_humi,// 拨码开关设置的湿度报警阈值 (0-99)
output LED_temp, // 温度报警指示灯: 高电平亮,当实际温度 > 阈值时触发
output LED_humi, // 湿度报警指示灯: 高电平亮,当实际湿度 > 阈值时触发
// 数码管段选输出 (共阳极编码,低电平点亮段)
output [7:0] HEX0, // 实际湿度 - 个位
output [7:0] HEX1, // 实际湿度 - 十位
output [7:0] HEX2, // 实际温度 - 个位
output [7:0] HEX3, // 实际温度 - 十位
output [7:0] HEX4, // 湿度阈值 - 个位
output [7:0] HEX5, // 湿度阈值 - 十位
output [7:0] HEX6, // 温度阈值 - 个位
output [7:0] HEX7 // 温度阈值 - 十位
);
// 内部连线:用于连接传感器驱动模块输出的温湿度原始数据
wire [7:0] temp_data; // 采集到的8位温度数据
wire [7:0] humi_data; // 采集到的8位湿度数据
//---------------------------------------------------------
// 实例化:DHT11 传感器驱动模块
// 功能:按照DHT11时序协议从传感器读取40位数据,并解析出温湿度。
//---------------------------------------------------------
dht11 i_dht11(
.i_clk (clk), // 输入时钟
.i_rst_n (i_rst_n), // 复位信号
.io_data (io_data), // 双向数据总线
.o_temp (temp_data), // 输出解析后的温度
.o_humi (humi_data) // 输出解析后的湿度
);
//---------------------------------------------------------
// 实例化:显示与报警控制模块
// 功能:1. 将温湿度数据拆分为十位和个位;
// 2. 进行阈值比较,驱动LED报警;
// 3. 将数值转换为数码管7段码显示。
//---------------------------------------------------------
dis_HEX i_dis_HEX(
.clk (clk), // 输入时钟
.temp (temp_data), // 实时温度输入
.humi (humi_data), // 实时湿度输入
.set_temp (set_temp), // 预设温度阈值
.set_humi (set_humi), // 预设湿度阈值
.LED_temp (LED_temp), // 温度报警输出
.LED_humi (LED_humi), // 湿度报警输出
// 数码管显示输出
.HEX0 (HEX0), // 湿度个位显示
.HEX1 (HEX1), // 湿度十位显示
.HEX2 (HEX2), // 温度个位显示
.HEX3 (HEX3), // 温度十位显示
.HEX4 (HEX4), // 湿度阈值个位显示
.HEX5 (HEX5), // 湿度阈值十位显示
.HEX6 (HEX6), // 温度阈值个位显示
.HEX7 (HEX7) // 温度阈值十位显示
);
endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DHT11温湿度采集与阈值报警 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DHT11温湿度采集与阈值报警 Verilog Quartus