📄 scan_disp_new1.v
字号:
/* scheme4中数码管扫描显示子模块,当选择了某对象后,所对应的数码管闪烁点亮(比scan_disp_new.v简单) */
module scan_disp_new1(clk,clk_4Hz,disp_mode,sel,sec,min,hour,week,day,mon,year,amin,ahour,scan_data,scan_en);
input clk,clk_4Hz; // clk的T=1ms,clk_4Hz作为数码管闪烁显示的时钟
input[1:0] disp_mode; // 来自route子模块,选择显示的信号(时间、日期、星期或闹钟定时)
input[1:0] sel; // 来自route子模块,选择显示不同的对象(如时间中的小时或分钟或秒,日期中的年或月或日)
input[7:0] sec,min,hour; // 秒、分、时输入信号
input[3:0] week; // 星期输入信号
input[7:0] day,mon,year; // 日、月、年输入信号
input[7:0] amin,ahour; // 闹钟定时的分、小时输入信号
output[3:0] scan_data; // 驱动数码管
output[6:1] scan_en; // 分别驱动各数码管共阴极引脚SC6~SC1
reg[3:0] scan_data;
reg[6:1] scan_en;
reg[2:0] state; // 状态机,s6~s1为state的6个状态,分别用于控制scan_en[6:1]
reg flash_en; // 闪烁使能信号
parameter
s1=3'b001,
s2=3'b010,
s3=3'b011,
s4=3'b100,
s5=3'b101,
s6=3'b110;
always @(posedge clk)
begin
if(state==s6) state=s1; // 状态机的状态转移
else state=state+1;
if (sel==0) flash_en=0; // 当sel等于0时,为正常显示状态
else flash_en = clk_4Hz; // 当sel不等于0时,即表示要设置初值,则flash_en有
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -