• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

洗衣机控制器设计Verilog代码Quartus 远程云端平台

09/25 09:44
509
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-241030212625935.doc

共1个文件

名称:洗衣机控制器设计Verilog代码Quartus  远程云端平台

软件:Quartus

语言:Verilog

代码功能:

洗衣机控制器设计要求

1.设计一个电子定时器,控制洗衣机作如下运转定时启动→正转20秒→暂停10秒→反转20秒→暂停10秒,每个循环1分钟;

2.按正计时方式用两个数码管显示正转、暂停、反转时间,同时用三只LED灯表示“正转”反转”、“暂停”三个状态;

3.用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,时间到停机,停机指示灯亮;

4.洗涤过程由“开始”开关开始,设置“暂停”开关。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在远程云端平台验证,远程云端平台如下,其他开发板可以修改管脚适配:

远程云端平台.png

演示视频:

设计文档:

部分代码展示:

module washing_machine(clk_in, dataout,en,reset_n, start_key, stop_key,led, end_beep);
   input        clk_in;//1000Hz
   input        reset_n;//复位按下低电平
   input        start_key;//启动按下低电平
input        stop_key;//暂停按下低电平
   
   output [2:0] led;//正反转灯   
   output       end_beep;//结束报警
   
output[7:0] dataout;//数码管段选
output[3:0] en;//COM使能输出
   
   
   reg [1:0]    state;
   reg [2:0]    led;   
   reg [7:0]    washing_time;   
   reg          end_beep_buf;
   reg [7:0]    second_cnt;
   reg          min_en;   
   reg          second_en_1s;
   reg [31:0]    second_div_cnt;
   
reg [31:0] beep_cnt=32'd0;   
   always @(posedge clk_in or negedge reset_n)
if(!reset_n)
state<=2'b00;//空闲状态
else
         case (state)
            2'b00 ://空闲状态
               if (start_key == 1'b0)
                  state <= 2'b01;
               else
                  state <= 2'b00;
            2'b01 ://倒计时状态
               if(stop_key==0)
                  state <= 2'b11;
               else if (washing_time > 8'b00000000)
                  state <= 2'b01;
else 
state <= 2'b10;
            2'b10 ://结束
state <= 2'b10;
            2'b11 ://暂停
               if (start_key == 1'b0)
                  state <= 2'b01;
               else
                  state <= 2'b11;
            default :
               state <= 2'b00;
         endcase
 
   always @(posedge clk_in)      
      begin
         if (state == 2'b10)//结束计数
            beep_cnt <=beep_cnt+ 1'b1;
      end   
   
   always @(posedge clk_in)      
      begin
         if (state == 2'b10)//结束
            end_beep_buf <= 1'b1;
         else
            end_beep_buf <= 1'b0;
      end
  
   assign end_beep = end_beep_buf;
   
   
   always @(posedge clk_in)
if(state!=2'b01)//非倒计时状态清零
begin
            second_div_cnt <= 32'd0;
            second_en_1s <= 1'b0;
end
else//倒计时状态计时
      begin
         if (second_div_cnt >= 32'd1000)//计数1000为1s,仿真将计数器改小为50
         begin

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1297

  • 2-241030212625935.doc
    下载

相关推荐