名称:洗衣机工作模式Verilog代码AX301开发板Quartus
软件:Quartus
语言:Verilog
代码功能:
设置洗衣机工作模式:0——洗涤+漂洗;1——洗涤;2——轻柔洗涤;3——脱水
设置水位状态:0-1-2-3-4表示5种水位
设置小时、分钟
可以倒计时
洗涤结束报警
洗衣机正转反转指示灯,高电平亮
本代码已在AX301开发板验证,开发板如下,其他开发板可以修改管脚适配:
整体仿真图
消抖仿真图
显示模块
分频模块
状态控制模块
部分代码展示:
module wash_machine( input clk_50M,//50M input reset_key_in,//复位 input set_time_key_in,//设置 input confirm_key_in,//确认 input error_key_in,//故障按键 output running_led,//洗衣机正在运行指示灯(1秒闪) output alert_bell,//蜂鸣器报警 output [2:0] rotate_led,//洗衣机正转反转指示灯,高电平亮 output [5:0] bit_select,//数码管位选 output [7:0] seg_select//数码管段选 ); wire clk_1Hz; wire reset_key;//复位 wire set_time_key;//设置 wire confirm_key;//确认 wire error_key;//故障按键 wire [7:0] countdown_hour_time;//时 wire [7:0] countdown_minute_time;//分 wire [3:0] water_level;//水位 wire [3:0] wash_mode;//模式 //按键消抖模块 key_xiaodou reset_key_xiaodou( . clkin(clk_50M), . key_in(reset_key_in),//输入 . key_posedge(),//消抖后按键上升沿 . key_negedge(reset_key),//消抖后按键下降沿 . key_value()//消抖后按键 ); key_xiaodou set_time_key_xiaodou( . clkin(clk_50M), . key_in(set_time_key_in),//输入 . key_posedge(),//消抖后按键上升沿 . key_negedge(set_time_key),//消抖后按键下降沿 . key_value()//消抖后按键 ); key_xiaodou confirm_key_xiaodou( . clkin(clk_50M), . key_in(confirm_key_in),//输入 . key_posedge(),//消抖后按键上升沿 . key_negedge(confirm_key),//消抖后按键下降沿 . key_value()//消抖后按键 ); key_xiaodou error_key_xiaodou( . clkin(clk_50M), . key_in(error_key_in),//输入 . key_posedge(),//消抖后按键上升沿 . key_negedge(error_key),//消抖后按键下降沿 . key_value()//消抖后按键 ); //分频模块 div_1Hz i_div_1Hz( . clk_50M(clk_50M), . clk_1Hz(clk_1Hz) ); //状态机控制模块 state_control i_state_control( . clk_50M(clk_50M), . clk_1Hz(clk_1Hz), . reset_key(reset_key),//复位 . set_time_key(set_time_key),//设置 . confirm_key(confirm_key),//确认 . error_key(error_key),//故障按键 . running_led(running_led),//洗衣机正在运行指示灯(1秒闪) . alert_bell(alert_bell),//蜂鸣器报警 . rotate_led(rotate_led),//洗衣机正转反转指示灯,高电平亮 . countdown_hour_time(countdown_hour_time),//时 . countdown_minute_time(countdown_minute_time),//分 . water_level(water_level),//水位 . wash_mode(wash_mode)//模式 ); //显示模式 display i_display( . clk(clk_50M), . water_level(water_level),//水位 . wash_mode(wash_mode),//模式 . countdown_hour_time(countdown_hour_time),//时 . countdown_minute_time(countdown_minute_time),//分 . bit_select(bit_select),//数码管位选 . seg_select(seg_select)//数码管段选 ); endmodule
源代码
扫描文章末尾的公众号二维码