数字万年历温湿度计 Verilog QuartusII小脚丫开发板
# 设计文档
## 项目信息
**名称:** 数字万年历温湿度计 Verilog QuartusII
**软件:** QuartusII
**语言:** Verilog
## 代码功能
本项目实现了一个基于FPGA的多功能数字万年历系统,集成了时间显示、日期显示和环境监测功能。系统具备以下核心功能:
- **实时时钟功能**:通过DS1340Z时钟芯片实现精确的时、分、秒显示,采用24小时制
- **万年历功能**:显示年、月、日、星期信息,支持用户手动校准
- **温湿度监测**:集成SHT20传感器,实时测量并显示环境温度和湿度
- **双模式显示**:支持时间日期模式和温湿度模式的切换显示
- **多种输入方式**:支持4×4矩阵键盘和旋转编码器两种输入方式
- **数码管显示**:采用8位七段数码管动态扫描显示,支持小数点控制
系统通过I2C总线与外部传感器通信,采用模块化设计确保各功能模块独立工作且协调配合。
本代码已在小脚丫开发板验证
## 代码实现思路
### 整体架构
系统采用分层模块化设计,主要分为以下几个层次:
1. **硬件接口层**:包括I2C通信、数码管驱动、按键检测等底层硬件控制
2. **数据处理层**:负责温湿度数据转换、BCD码转换、时间数据处理
3. **控制逻辑层**:实现模式切换、显示控制、用户交互逻辑
4. **显示驱动层**:控制8位数码管的动态扫描显示
### 核心算法
- **I2C通信协议**:实现与DS1340Z时钟芯片和SHT20温湿度传感器的标准I2C通信
- **温度计算**:T = -46.85 + 175.72 × T_code / 2^16,通过定点运算实现浮点计算
- **湿度计算**:RH = -6 + 125 × H_code / 2^16,采用类似的定点运算方法
- **BCD转换**:将二进制数据转换为BCD码,便于数码管显示
- **按键消抖**:采用计数器方式实现按键信号的消抖处理
### 状态机设计
系统采用多个状态机协同工作:
- **主控状态机**:控制系统整体运行流程和模式切换
- **I2C状态机**:管理I2C通信的START、WRITE、READ、STOP等状态
- **显示状态机**:控制数码管的扫描显示时序
## 代码结构
### 主要模块说明
**`Digtal_Calender` 模块**
- 系统顶层模块,集成所有子模块并实现顶层控制逻辑
**`DS1340Z_driver` 模块**
- DS1340Z实时时钟芯片驱动,实现时间的读取和设置功能
**`SHT20_Driver` 模块**
- SHT20温湿度传感器驱动,负责温湿度数据的采集
**`Calculate` 模块**
- 温湿度数据计算模块,将传感器原始数据转换为实际温湿度值
**`mode_ctrl` 模块**
- 模式控制模块,处理用户输入并控制系统运行状态
**`Array_KeyBoard` 模块**
- 4×4矩阵键盘扫描模块,实现按键检测和编码
**`Encoder` 模块**
- 旋转编码器处理模块,检测旋转方向和脉冲信号
**`Debounce` 模块**
- 按键消抖模块,消除按键机械抖动产生的干扰
**`Decoder` 模块**
- 显示模式切换控制模块,处理时间和温湿度显示的切换
**`Segment_scan` 模块**
- 数码管扫描显示模块,实现8位数码管的动态显示控制
**`bin_to_bcd` 模块**
- 二进制到BCD码转换模块,为数码管显示提供数据格式转换
部分代码展示:
代码文件(付费下载):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字万年历温湿度计 Verilog QuartusII小脚丫开发板

发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm