发布时间 : 星期三 文章基于LCD1602的简易秒表的设计与实现更新完毕开始阅读
波形分析:
当carry信号为'1'时,
dataout输出为FF(二进制表示为\;
当carry信号为'0'时,正常译码:
data为'0'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'1'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'2'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'3'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'4'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'5'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'6'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'7'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'8'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为'9'(二进制表示为\时,dataout输出为\
(二进制表示为\);
data为其他数据时,dataout输出为\
(二进制表示为\);
⑦LCD1602显示模块LCD1602:
输入端口:
LCD_Clk: in std_logic;
--状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间
carry:in STD_LOGIC;
--前级计数部分输出的进位信号
YIMA_DATA1: in std_logic_vector(7 downto 0); --译码数据信号1
YIMA_DATA2: in std_logic_vector(7 downto 0); --译码数据信号2 YIMA_DATA3: in std_logic_vector(7 downto 0); --译码数据信号3 YIMA_DATA4: in std_logic_vector(7 downto 0); --译码数据信号4 YIMA_DATA5: in std_logic_vector(7 downto 0); --译码数据信号5 YIMA_DATA6: in std_logic_vector(7 downto 0); --译码数据信号6 YIMA_DATA7: in std_logic_vector(7 downto 0); --译码数据信号7 YIMA_DATA8: in std_logic_vector(7 downto 0); --译码数据信号8 输出端口:
第 17 页 共 37 页
LCD_RS: out std_logic; --寄存器选择信号 LCD_RW: out std_logic; --液晶读写信号 LCD_EN: out std_logic; --液晶时钟信号
LCD_Data: out std_logic_vector(7 downto 0); --液晶数据信号
仿真波形:
接下图
接下图
波形分析: 仿真时假设
YIMA_DATA1=\;--代表数字1 YIMA_DATA2=\;--代表数字1
第 18 页 共 37 页
YIMA_DATA3=\;--代表数字1 YIMA_DATA4=\;--代表数字1
第 19 页 共 37 页
YIMA_DATA5=\;--代表数字1 YIMA_DATA6=\;--代表数字1 YIMA_DATA7=\;--代表数字1 YIMA_DATA8=\;--代表数字1
则对于输出信号LCD_Data:
在初始化部分(LCD_RS<='0')依次为 \、\、\、\、\; 在开始显示时(LCD_RS<='1')依次为 \、\、\—显示空格 \、\显示数字11 \显示冒号:
\、\显示数字11 \显示冒号:
\、\显示数字11 \显示小数点.
\、\显示数字11 \、\—显示空格
--------------------------------------------
\(此时LCD_RS<='0')--在LCD1602液晶屏第二行显示 \、\、\、\、\显示空格 \、\、\、\、\、\
--显示空格
\、\、\、\显示空格
⑧BTN0启动/停止开关消抖模块xiaodou:
输入端口:clk:in std_logic; key_en:in std_logic;
输出端口: en_out:out std_logic;
仿真波形:
接下图
波形分析:
当key_en第一次为'1'时,en_out延迟一段时间后变为'1', 并且en_out就此保持在高电平'1';
第 20 页 共 37 页