多功能数字时钟万年历温湿度DHT11设计
多功能数字时钟万年历温湿度DHT11设计
项目概述
代码功能
代码已在开发板验证
演示视频
代码实现思路
系统架构设计
关键技术实现
代码结构
主要模块说明
系统接口定义
| 时钟模块 | clkrst, hour[7:0], min[7:0], sec[7:0] | |
| 万年历模块 | year[15:0]month[7:0], day[7:0] | |
| DHT11模块 | dht11_datatemp[15:0], humi[15:0] | |
| 显示模块 | seg[7:0]sel[5:0], lcd_data[7:0] | |
| 按键模块 | key_in[3:0]key_out[3:0] |
功能模式说明
设计特点
技术亮点
工程相关图片
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
--时分秒模块
ENTITY clock IS
PORT(
clk : IN STD_LOGIC;
RST : IN STD_LOGIC;
hour_add : IN STD_LOGIC;
minute_add : IN STD_LOGIC;
day_cin : OUT STD_LOGIC;
hour_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
minute_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
second_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END clock;
ARCHITECTURE behave OF clock IS
SIGNAL hour :STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL minute :STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL second :STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL day_en : STD_LOGIC :='0';
SIGNAL cnt :STD_LOGIC_VECTOR(31 DOWNTO 0):="00000000000000000000000000000000";
BEGIN
day_cin <= day_en;
PROCESS(clk, RST)
BEGIN
IF(RST ='1') THEN
cnt <="00000000000000000000000000000000";
ELSIF(clk'EVENT AND clk = '1') THEN
IF(cnt >="00000010111110101111000010000000") THEN-----------0000001111101000
cnt <="00000000000000000000000000000000";
ELSE
cnt <= cnt +"00000000000000000000000000000001";
END IF;
END IF;
END PROCESS;
PROCESS(clk, RST)
BEGIN
IF(RST ='1') THEN
hour <="00000000";
minute <="00000000";
second <="00000000";
day_en <='0';
ELSIF(clk'EVENT AND clk = '1') THEN
IF(hour_add ='1') THEN
IF(hour >="00010111") THEN
hour <="00000000";
ELSE
hour <= hour +"00000001";
END IF;
ELSIF(minute_add ='1') THEN
IF(minute >="00111011") THEN
minute <="00000000";
ELSE
minute <= minute +"00000001";
END IF;
ELSIF(cnt >="00000010111110101111000010000000") THEN---------0000001111101000
IF(hour ="00010111" AND minute ="00111011" AND second ="00111011") THEN
day_en <='1';
hour <="00000000";
minute <="00000000";
second <="00000000";
ELSIF(minute ="00111011" AND second ="00111011") THEN
day_en <='0';
hour <= hour +"00000001";
minute <="00000000";
second <="00000000";
ELSIF(second ="00111011") THEN
day_en <='0';
hour <= hour;
minute <= minute +"00000001";
second <="00000000";
ELSE
day_en <='0';
hour <= hour;
minute <= minute;
second <= second +"00000001";
END IF;
END IF;
END IF;
END PROCESS;
hour_out <= hour;
minute_out <= minute;
second_out <= second;
END behave;
代码下载(付费可见):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 多功能数字时钟万年历温湿度DHT11设计
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 多功能数字时钟万年历温湿度DHT11设计










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