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温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image1.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image2.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image3.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image4.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image5.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image6.png

DHT11温湿度采集与阈值报警 Verilog Quartus 设计文档图片 image7.png

部分代码

以下展示顶层模块 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

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员