news 2026/6/14 6:07:00

DHT11 温湿度 LCD1602 显示与报警 FPGA 设计 Verilog Vivado

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DHT11 温湿度 LCD1602 显示与报警 FPGA 设计 Verilog Vivado

名称:DHT11 温湿度 LCD1602 显示与报警 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现了基于 DHT11 的温湿度采集、数据处理和 LCD1602 字符液晶显示功能。FPGA 读取 DHT11 输出的温度、湿度数据后,将数值转换为 LCD1602 可显示的 ASCII 字符,在液晶第一行显示湿度信息,在第二行显示温度信息,适合用于温湿度监测、传感器接口学习和 FPGA 外设综合实验。 工程使用 Verilog 编写,开发环境为 Vivado。设计围绕 DHT11 单总线时序、LCD1602 并口驱动、时钟分频、按键消抖、上下限数据设置以及比较报警等功能展开,既包含传感器采集链路,也包含人机显示输出链路,结构比较完整。 该设计已经结合开发板进行上板验证,配有管脚约束文件和开发板实物验证材料。对于需要直接参考 Vivado 工程、移植 DHT11 采集逻辑、学习 LCD1602 显示控制或完成课程设计的用户,具有较高的复用价值。

运行环境

开发语言:Verilog 开发软件:Vivado 工程类型:FPGA 工程,工程文件为 DHT11_LCD1602.xpr 主要外设:DHT11 温湿度传感器、LCD1602 字符液晶、按键输入及报警相关输出 约束文件:pins.xdc

设计思路

系统以 FPGA 为核心控制器,整体流程可以分为温湿度采集、数据整理、显示编码、LCD1602 驱动以及报警比较几个部分。DHT11 驱动模块负责按照传感器通信时序完成起始信号、响应检测、数据接收和有效数据输出,得到可用于后级显示与判断的温度、湿度数值。 显示部分将温度和湿度的十进制数值拆分为十位、个位,并加上 ASCII 偏移量转换成字符编码。LCD1602 显示内容采用两行字符组织方式,第一行显示 humidity 信息,第二行显示 temp 信息,再由 LCD 驱动模块完成使能、读写、寄存器选择和 8 位数据总线控制。 时钟部分通过 Clock_Gen 产生适合 LCD 驱动的工作时钟,降低高速系统时钟与 LCD1602 慢速控制时序之间的耦合。按键消抖模块用于提高按键输入稳定性,上下限设置模块与比较模块配合,可用于温湿度阈值判断及报警逻辑扩展。 顶层设计将传感器采集、阈值设置、比较报警和 LCD 显示模块连接起来,形成从环境数据输入到液晶显示输出、再到报警提示的完整硬件逻辑链路。

模块结构

主要模块包括: LCD_Top:LCD1602 显示顶层模块,负责接收温度、湿度数据并组织两行显示内容。 top_dht11:系统顶层相关模块,用于整合 DHT11 采集、显示、阈值比较及外设接口。 dht11_drive:DHT11 温湿度传感器驱动模块,完成单总线通信和数据读取。 LCD_Driver:LCD1602 驱动模块,控制 LCD_EN、RS、RW 和 DB8 数据总线。 Clock_Gen:LCD 工作时钟分频模块。 display_num:数值显示处理模块。 max_data_set、min_data_set:上下限数据设置相关模块。 compare:阈值比较与报警判断相关模块。 key_debounce:按键消抖模块,用于稳定按键输入。

开发板验证

设计已完成开发板验证,工程中配置了 pins.xdc 管脚约束,并配套有开发板实物照片、上板验证图片和演示视频。Vivado 工程中也包含综合、实现和 bitstream 生成结果,可作为开发板移植和实测参考。 开发板验证内容覆盖 DHT11 温湿度采集、LCD1602 显示以及报警演示场景。约束文件与实物验证材料能够帮助用户对照 FPGA 引脚连接、外设接线和实际显示效果进行复现。

演示视频

演示视频包括正常上板运行效果和报警效果两部分,可用于查看 DHT11 采集、LCD1602 显示以及报警逻辑在开发板上的实际运行状态。

演示视频请关注公众号后获取对应资料查看。

演示视频请关注公众号后获取对应资料查看。

仿真图/仿真说明/设计文档图片

配有 DHT11 传感器、LCD1602 液晶和开发板相关图片,可用于了解外设连接对象、显示器件形态以及上板运行环境。

部分代码

以下展示顶层模块LCD_Top的部分代码,完整代码可关注下方公众号卡片获取。

module LCD_Top(clk_50M,rst,LCD_EN,RS,RW,DB8,temp_data,humi_data); input clk_50M,rst;//低电平复位 output LCD_EN,RS,RW;//LCD接口 output [7:0] DB8;//LCD接口 input [7:0] temp_data;//温度 input [7:0] humi_data;//湿度 wire clk_LCD; //用于将Clock_Gen模块clk_LCD输出连接至LCD_Driver模块的clk_LCD输入 wire [7:0] receive_data; wire [111:0] Data_First,Data_Second; wire [7:0] number1; wire [7:0] number2; wire [7:0] number3; wire [7:0] number4; assign number1=humi_data/10 + 8'h30;//转为ASCII码 assign number2=humi_data%10 + 8'h30;//转为ASCII码 assign number3=temp_data/10 + 8'h30;//转为ASCII码 assign number4=temp_data%10 + 8'h30;//转为ASCII码 //LCD分频模块 Clock_Gen U1(.clk_50M(clk_50M), .rst(rst), .clk_LCD(clk_LCD)); assign Data_First={" humidity=",number1,number2}; //液晶显示的第一行的数据 assign Data_Second={" temp=",number3,number4};//液晶显示的第二行的数据 //LCD驱动模块 LCD_Driver U2(.clk_LCD(clk_LCD), .rst(rst), .Data_First(Data_First),//液晶第一行 .Data_Second(Data_Second),//液晶第二行 .LCD_EN(LCD_EN), .RS(RS), .RW(RW), .DB8(DB8)); endmodule

代码获取:点击下方公众号卡片

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 6:06:20

终极免费音乐解锁指南:Unlock Music完整使用教程

终极免费音乐解锁指南:Unlock Music完整使用教程 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gi…

作者头像 李华
网站建设 2026/6/14 6:03:03

LIO-SAM适配KITTI数据集,你的点云格式对了吗?详解XYZIRT与时间同步

LIO-SAM适配KITTI数据集:点云格式与时间同步的深度解析当开发者尝试将LIO-SAM这类先进的激光雷达-惯性里程计系统应用于KITTI数据集时,往往会遇到一个看似简单却影响深远的问题:为什么算法对点云格式如此挑剔?XYZIRT与传统XYZI的区…

作者头像 李华
网站建设 2026/6/14 6:01:54

IR-UWB vs FMCW雷达:在智能家居与养老监护中,哪种技术方案更靠谱?

IR-UWB与FMCW雷达技术深度解析:智能健康监护场景下的选型指南清晨六点,李工程师的智能手环再次发出警报——独居母亲的夜间心率出现异常波动。这是本月第三次误报,而墙另一侧的毫米波雷达却显示生命体征完全正常。这种技术间的性能差异&#…

作者头像 李华