毕业论文--数字电路课程设计报告--基于1602液晶屏的数字万年历verilog版内容摘要:
b1。 else r2 r1。 assign key_an1 r2 amp。 ~r1。 //有 key_r 低电平时,key_an1 产生一个时钟的高电平 always @ posedge clk or negedge rst_n if rst_n 139。 b0 t_2 2039。 b0。 else if key_an1 t_2 2039。 b0。 else t_2 t_2+2039。 b1。 //key_an1 高电平时,消抖计数器清零,否则计数实现消抖延迟 20ms always @ posedge clk or negedge rst_n if rst_n 139。 b0 r3 139。 b1。 else if t_2 2039。 d499_999 r3 key_r。 //消抖 20ms 完成后,用类似的方法检测按键在消抖后是否是摁下,摁下为低电平 always @ posedge clk or negedge rst_n if rst_n 139。 b0 r4 139。 b1。 else r4 r3。 assign key_an2 r4 amp。 ~r3。 //检测复位键 key_r 有按下一次,时间较短。 always @ posedge clk or negedge rst_n //检测按键 key_r 是否是长摁 if rst_n 139。 b0 t_1 2739。 b0。 else if key_r 139。 b0 t_1 t_1+2739。 b1。 else t_1 2739。 b0。 always @ posedge clk or negedge rst_n //按键 key_r 长摁计数满 3s,将 r5 置有效 1 if rst_n 139。 b0 r5 139。 b0。 else if t_1 2739。 d74_999_999 r5 139。 b1。 else if key_an2 r5 139。 b0。 //如果按键 key_r 只摁一次,则 r5 置无效 0 assign r_en r5。 // reg [19:0] t_3。 //20ms 500_000*40ns reg [2:0] r6,r7,r8,r9。 wire [2:0] key_an3。 always @ posedge clk or negedge rst_n if rst_n 139。 b0 r6 339。 b111。 else r6 key_yi,key_jia,key_jian。 always @ posedge clk or negedge rst_n if rst_n 139。 b0 r7 339。 b111。 else r7 r6。 assign key_an3 r7 amp。 ~r6。 always @ posedge clk or negedge rst_n if rst_n 139。 b0 t_3 2039。 b0。 else if key_an3 t_3 2039。 b0。 else t_3 t_3+2039。 b1。 always @ posedge clk or negedge rst_n if rst_n 139。 b0 r8 339。 b111。 else if t_3 2039。 d499_999 r8 key_yi,key_jia,key_jian。 always @ posedge clk or negedge rst_n if rst_n 139。 b0 r9 339。 b111。 else r9 r8。 assign yi_en r5 amp。 r9[2] amp。 ~r8[2]。 //在满足复位键key_r 有效( r5 有效)前提下,按键按下才有效, assign jia_en r5 amp。 r9[1] amp。 ~r8[1]。 //否则,即使按下也输出无效 assign jian_en r5 amp。 r9[0] amp。 ~r8[0]。 //实现时钟在复位键有效下才能进行修改,及显示屏上光标的移动 assign alr_yi r9[2] amp。 ~r8[2]。 //闹钟按键 无需复位有效 assign alr_jia r9[1] amp。 ~r8[1]。 assign alr_jian r9[0] amp。 ~r8[0]。 endmodule 万年历时钟处理模块文件: module clock clk, rst_n, r_en, yi_en, jia_en, jian_en, alr_yi, alr_jia, alr_jian, alr_clk_set, alr_clk_sw, clk_nian_qian, clk_nian_bai,clk_nian_shi, clk_nian_ge, clk_yue_shi, clk_yue_ge, clk_ri_shi, clk_ri_ge, clk_xing, clk_shi_shi, clk_shi_ge, clk_fen_shi, clk_fen_ge, clk_miao_shi,clk_miao_ge, alr_clk_shi_shi, alr_clk_shi_ge, alr_clk_fen_shi, alr_clk_fen_ge, alr_led_r, led_g。 input clk。 input rst_n。 input r_en。 input yi_en。 input jia_en。 input jian_en。 input alr_yi。 input alr_jia。 input alr_jian。 input alr_clk_set。 input alr_clk_sw。 output [3:0] clk_nian_qian。 output [3:0] clk_nian_bai。 output [3:0] clk_nian_shi。 output [3:0] clk_nian_ge。 output [3:0] clk_yue_shi。 output [3:0] clk_yue_ge。 output [3:0] clk_ri_shi。 output [3:0] clk_ri_ge。 output [2:0] clk_xing。 output [3:0] clk_shi_shi。 output [3:0] clk_shi_ge。 output [3:0] clk_fen_shi。 output [3:0] clk_fen_ge。 output [3:0] clk_miao_shi。 output [3:0] clk_miao_ge。 output [3:0] alr_clk_shi_shi。 output [3:0] alr_clk_shi_ge。 output [3:0] alr_clk_fen_shi。 output [3:0] alr_clk_fen_ge。 output [15:0] alr_led_r。 output [7:0] led_g。 // reg [3:0] t_yi。 reg [15:0] yi_r。 always @ posedge clk or negedge rst_n if !rst_n t_yi 439。 b0。 else if yi_en t_yi t_yi+439。 b1。 always @ t_yi //yi_r 的功能是,在移位键下实现相应时间部分的修改 case t_yi 439。 b0000 : yi_r 1639。 b0000_0000_0000_0001。 439。 b0001 : yi_r 1639。 b0000_0000_0000_0010。 439。 b0010 : yi_r 1639。 b0000_0000_0000_0100。 439。 b0011 : yi_r 1639。 b0000_0000_0000_1000。 439。 b0100 : yi_r 1639。 b0000_0000_0001_0000。 439。 b0101 : yi_r 1639。 b0000_0000_0010_0000。 439。 b0110 : yi_r 1639。 b0000_0000_0100_0000。 439。 b0111 : yi_r 1639。 b0000_0000_1000_0000。 439。 b1000 : yi_r 1639。 b0000_0001_0000_0000。 439。 b1001 : yi_r 1639。 b0000_0010_0000_0000。 439。 b1010 : yi_r 1639。 b0000_0100_0000_0000。 439。 b1011 : yi_r 1639。 b0000_1000_0000_0000。 439。 b1100 : yi_r 1639。 b0001_0000_0000_0000。 439。 b1101 : yi_r 1639。 b0010_0000_0000_0000。 439。 b1110 : yi_r 1639。 b0100_0000_0000_0000。 439。 b1111 : yi_r 1639。 b1000_0000_0000_0000。 default:。 endcase // reg [3:0] clk_nian_qian_r 439。 d2。 reg [3:0] clk_nian_bai_r 439。 d0。 reg [3:0] clk_nian_shi_r 439。 d1。 reg [3:0] clk_nian_ge_r 439。 d2。 reg [3:0] clk_yue_shi_r 439。 b0。 reg [3:0] clk_yue_ge_r 439。 b1。 reg [3:0] clk_ri_shi_r 439。 b0。 reg [3:0] clk_ri_ge_r 439。 b1。 reg [2:0] clk_xing_r。 reg [3:0] clk_shi_shi_r。 reg [3:0] clk_shi_ge_r。 reg [3:0] clk_fen_shi_r。 reg [3:0] clk_fen_ge_r。 reg [3:0] clk_miao_shi_r。 reg [3:0] clk_miao_ge_r。 reg [24:0] t_1s。 always @ posedge clk or negedge rst_n //27MHZ 晶振下 1s 计数 if rst_n 139。 b0 t_1s 2539。 b0。 else if t_1s 2539。 d26_999_999 t_1s 2539。 b0。 else if !r_en t_1s t_1s+2539。 b1。 always @ posedge clk or negedge rst_n //秒的个位 if !rst_n clk_miao_ge_r 439。 b0。 else if clk_miao_ge_r 439。 d10 clk_miao_ge_r 439。 b0。 else if t_1s 2539。 d26_999_999 || yi_r[0] amp。 amp。 jia_en clk_miao_ge_r clk_miao_ge_r+439。 b1。 else if yi_r[0] amp。 amp。 jian_en clk_miao_ge_r clk_miao_ge_r439。 b1。 always @ posedge clk or negedge rst_n //秒的十位 if !rst_n clk_miao_shi_r 439。 b0。 else if clk_miao_shi_r 439。 d6 clk_miao_shi_r 439。 b0。 else if clk_miao_ge_r 439。 d10 || yi_r[1]。毕业论文--数字电路课程设计报告--基于1602液晶屏的数字万年历verilog版
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。