FPGA温湿度光照监测与数字时钟 Verilog Quartus
名称:FPGA温湿度光照监测与数字时钟 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
这是一个基于 Verilog 与 Quartus 的 FPGA 环境监测及时钟设计。系统集成 DHT11 温湿度采集和 AP3216C 光照传感接口,支持设置温度、湿度及光照阈值,并通过独立 LED 输出对应的报警状态。 系统还包含数字时钟与闹钟控制功能,可通过开关和按键切换模式、调整小时与分钟,并切换 12/24 小时制。时间由数码管显示,LCD1602 接口用于显示系统信息;拨码开关和确认按键参与阈值设置及功能操作。运行环境
硬件描述语言:Verilog。开发软件:Quartus。工程提供 DE70.qpf 项目文件及 Cyclone IV FPGA 开发板管脚分配文件。设计思路
顶层模块 DHT11_ctrl 将温湿度采集、光照传感、时钟显示和阈值报警组织为一个完整的监测系统。DHT11 驱动通过单总线读取温湿度数据,AP3216C 接口通过 I2C 获取光照相关数据;阈值控制模块结合拨码开关、模式选择和确认按键设置温度、湿度及光照阈值,并由相应报警输出反映比较结果。 时钟部分提供时间显示、闹钟操作和 12/24 小时制切换等控制接口。显示部分连接 LCD1602 与数码管:LCD 接口用于系统信息显示,数码管输出用于时分秒显示,模式指示灯则对应操作状态。顶层通过内部连线将传感器读数、阈值设置、显示与报警模块连接起来。模块结构
顶层模块:DHT11_ctrl。主要功能模块包括 dht11 温湿度传感器驱动、AP3216C I2C 接口、threshold_ctrl 阈值设置、dis_HEX 温湿度显示与报警,以及 Digital_clock、set_mode、display、alarm_clock 等时钟与显示控制模块;LCD1602 相关功能由 lcd1602_show 和 LCD_Driver 等模块配合实现。开发板验证
工程提供了 DE70.qsf 管脚分配文件,并配有上板操作指南,接口分配涉及 DHT11 温湿度传感器、AP3216C 光照传感器、LCD1602、数码管、拨码开关和按键。操作时,DHT11 数据端连接 A0,AP3216C 的 I2C 时钟与数据端连接 A2、A4;可结合板载按键和开关进行模式切换、时间设置及阈值设置。演示视频
工程配有功能演示视频和上板视频,可查看系统运行与开发板操作过程。仿真图/仿真说明/设计文档图片
附有设计文档图片,内容涉及工程文件、程序编译、RTL 图、管脚分配和 Testbench 仿真图。









部分代码
以下展示顶层模块 DHT11_ctrl 的部分代码,完整源码请下载压缩包查看。
module DHT11_ctrl(
input clk, // 系统时钟: 50MHz
input i_rst_n, // 系统复位: 低电平有效--key0
inout io_data, // DHT11单总线数据端口: 双向IO--A0
// Digital_clock 控制接口
input alarm_SW, // 闹钟显示/设置开关--SW0
input MODE_SW, // 模式切换开关--SW1
input AH_key, // 调整小时按键--key1
input AM_key, // 调整分钟按键--key2
input change, // 12/24 小时制切换--SW3
output [3:0] led_mode, // 模式指示灯(LDE0~LED3)
input [6:0] sw_val, // 7 个拨码开关--SW5~SW11
input [1:0] sw_mod, // 选择设置参数(温度/湿度/光照)--SW12,SW13
input btn_confirm, // 按键确认,低电平按下--key3
output LED_temp, // 温度报警指示灯: 高电平亮,当实际温度 > 阈值时触发--LED4
output LED_humi, // 湿度报警指示灯: 高电平亮,当实际湿度 > 阈值时触发--LED5
output LED_lux, // 光照报警指示灯: 高电平亮,当实际光照 > 阈值时触发--LED6
// AP3216C I2C 接口
output ap_scl, // AP3216C I2C 时钟--A2
inout ap_sda, // AP3216C I2C 数据--A4
// LCD1602 接口
output LCD_EN, // LCD 使能
output RS, // LCD 寄存器选择
output RW, // LCD 读写选择
output [7:0] DB8, // LCD 数据总线
output LCD_ON, // LCD power
output LCD_BLON, //Back Light ON/
// 数码管段选输出 (共阳极编码,低电平点亮段)
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位湿度数据
wire [15:0] als_data; // 光照强度(lux)
wire [9:0] ps_data; // 距离(接近)数据
wire [6:0] set_temp; // 温度阈值
wire [6:0] set_humi; // 湿度阈值
wire [6:0] set_lux; // 光照阈值
// DHT11 显示模块的数码管输出仅用于内部连接
wire [7:0] dht_hex0;
wire [7:0] dht_hex1;
wire [7:0] dht_hex2;
wire [7:0] dht_hex3;
wire [7:0] dht_hex4;
wire [7:0] dht_hex5;
wire [7:0] dht_hex6;
wire [7:0] dht_hex7;
assign LCD_ON =1;
assign LCD_BLON=1;
//---------------------------------------------------------
// 实例化: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 (dht_hex0),
.HEX1 (dht_hex1),
.HEX2 (dht_hex2),
.HEX3 (dht_hex3),
.HEX4 (dht_hex4),
.HEX5 (dht_hex5),
.HEX6 (dht_hex6),
.HEX7 (dht_hex7)
);
//---------------------------------------------------------
// 实例化:阈值控制模块
//---------------------------------------------------------
threshold_ctrl i_threshold_ctrl(
.clk (clk),
.rst_n (i_rst_n),
.sw_val (sw_val),
.sw_mod (sw_mod),
.btn_confirm(btn_confirm),
.set_temp (set_temp),
.set_humi (set_humi),
.set_lux (set_lux)
);
//---------------------------------------------------------
// 实例化:AP3216C 传感器接口
// ... 以下代码略,完整源码请下载压缩包查看
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » FPGA温湿度光照监测与数字时钟 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » FPGA温湿度光照监测与数字时钟 Verilog Quartus