电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板

这篇具有很好参考价值的文章主要介绍了电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

名称:电子定时器洗衣机控制Verilog代码Quartus   睿智FPGA开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

1.设计一个电子定时器,控制洗衣机作如下运转:定时启动,正转20秒,暂停10秒,反

转20秒,暂停10秒,定时未到回到“正转20秒暂停10秒.....

2.若定时到,则停机发出音响信号

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

到停机;洗涤过程由“开始”

4.三只LED灯表示“正转”、“反转”,“暂停”三个状态

定时器定时,数码管显示预置分钟数,led灯显示三个状态,定时结束发出音响信号

本代码已在 睿智FPGA开发板验证, 睿智FPGA开发板如下,其他开发板可以修改管脚适配:

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

1. 工程文件

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

2. 程序文件

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

3. 程序编译

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

4. 仿真图

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板,fpga开发

部分代码展示:

module washing_machine(clk_in, dataout,en,reset_n, start_key, led, end_beep);
   input        clk_in;//50MHz
   input        reset_n;//复位按下低电平
   input        start_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 (washing_time > 8'b00000000)
                  state <= 2'b01;
               else
                  state <= 2'b10;
            2'b10 ://结束
state <= 2'b10;
            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
  reg [31:0] beepclk_cnt=32'd0;
  reg beepclk=0;
   always @(posedge clk_in)      
      begin
if(beepclk_cnt>=32'd25_000)begin//仿真时将25_000改小为10
beepclk_cnt<=0;
beepclk<=~beepclk;
end
else begin
beepclk_cnt<=beepclk_cnt+1;
beepclk<=beepclk;
end
      end
  
   assign end_beep = end_beep_buf & beepclk;
   
   
   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'd50_000_000)//50_000_000--50M计数50000000为1s,仿真将计数器改小为50
         begin
            second_div_cnt <= 32'd0;
            second_en_1s <= 1'b1;//50MHz分频为1Hz
         end
         else
         begin
            second_div_cnt <= second_div_cnt + 32'd1;
            second_en_1s <= 1'b0;
         end
      end
   
   always @(posedge clk_in)     
      begin
         if (state!=2'b01)//非倒计时状态清零
            second_cnt <= 8'b00000000;
         else if (second_en_1s == 1'b1)//倒计时状态计时
         begin
            if (second_cnt >= 8'd59)//59s
               second_cnt <= 8'd0;
            else
               second_cnt <= second_cnt + 8'd1;
         end
         else
            second_cnt <= second_cnt;
      end
  
   always @(posedge clk_in)
      
      begin
         if (second_en_1s == 1'b1 && second_cnt == 8'd59)
            min_en <= 1'b1;//分钟信号
         else
            min_en <= 1'b0;
      end
   
   
   always @(posedge clk_in)     
      begin
         if (state == 2'b00)
            washing_time <= 8'd5;//默认5分钟
         else if (min_en == 1'b1)//分钟信号
         begin
            if (washing_time > 8'd0)
               washing_time <= washing_time - 8'd1;//倒计时
            else
               washing_time <= 8'd0;
         end
         else
            washing_time <= washing_time;
      end
源代码

 扫描文章末尾的公众号二维码文章来源地址https://www.toymoban.com/news/detail-808841.html

到了这里,关于电子定时器洗衣机控制Verilog代码Quartus 睿智FPGA开发板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于FPGA的洗衣机设计系统

    1.1.1VHDL语言简介 VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计

    2024年04月10日
    浏览(28)
  • 基于单片机智能洗衣机设计与实现

      功能介绍 以51单片机作为主控系统; 利用STC89C52单片机进行数据处理;  通过2路继电器分别控制洗衣机进水、出水相关逻辑运算; 采用L298去掉直流电机实现滚筒正反转; 通过单片机进行处理数据,把采集到的数据通过LCD液晶显示; 按键设置模式,定时开启等条件; 三极

    2024年02月15日
    浏览(25)
  • 人工智能基础 | Python实现 洗衣机模糊推理系统

    Pycharm + Anaconda3 已知一组污泥和油脂两个参数的 模糊集合 ,以及对应的洗涤时间推理的结果。 现再给出一组污泥和油脂的模糊集合,进行 模糊推理 ,推出洗涤时间的 模糊集合 。 最后进行 模糊决策 ,选择洗涤时间的档次,采用 最大隶属度 和 加权平均法 两种方法 “污泥

    2023年04月08日
    浏览(31)
  • FPGA自动洗衣机的设计与验证(Verilog编写)

    目的及要求         1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗 衣45秒,漂洗30 秒,脱水15 秒;         2.用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;         

    2024年02月21日
    浏览(32)
  • 0088-基于单片机的全自动洗衣机仿真设计

    1、采用51/52单片机作为主控芯片; 2、支持四种洗衣(流程)模式:      标准模式:进水-洗涤-排水--进水-漂洗1-排水--进水-漂洗2-排水--脱水;      经济模式:进水-洗涤-排水--进水-漂洗-排水--脱水;      单独洗涤:进水-洗涤-排水;      单独脱水:排水-脱水; 3、支持两

    2024年01月21日
    浏览(32)
  • STM32状态机编程实例——全自动洗衣机(上)

    前面几篇文章,以按键功能,介绍了状态机的原理与按键状态机实例,实现按键单击、双击、长按等状态的检测。 本篇,继续使用状态机编程,来实现一个更有趣的功能——全自动洗衣机。 下面是一个全自动洗衣机的控制面板: 面板上有4个按键: 电源:控制洗衣机通电与

    2024年02月09日
    浏览(31)
  • 仿真设计|基于单片机的全自动洗衣机模拟系统

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 程序(Keil5) 仿真实现(protues8.7) 全部资料 模拟全自动洗衣机工作过程,以电机替代洗衣机电机。 可以显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。显示工作剩余时间(洗衣程序可自定义,时间

    2024年03月13日
    浏览(50)
  • STM32 Proteus仿真全自动洗衣机洗涤脱水-0074

    STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 Proteus 仿真小实验: STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 功能: 硬件组成:STM32F103R6单片机+LCD1602显示器 +L298N驱动电机正反转+蜂鸣器+LED指示灯+多个按键(标准洗,快速洗,单独脱水,水位符合,停止) 1.有3种洗衣模式:标准、

    2024年02月16日
    浏览(26)
  • 【人工智能】实验二: 洗衣机模糊推理系统实验与基础知识

    理解模糊逻辑推理的原理及特点,熟练应用模糊推理。 设计洗衣机洗涤时间的模糊控制。 已知人的操作经验为: “污泥越多,油脂越多,洗涤时间越长”; “污泥适中,油脂适中,洗涤时间适中”; “污泥越少,油脂越少,洗涤时间越短”。 模糊控制规则如表1所示: x y z

    2024年02月03日
    浏览(35)
  • 【UML】-- 顺序图练习题含答案(自动售货机、学生选课、提款机、购买地铁票、洗衣机工作)

    根据下面的叙述,绘制一幅关于顾客从自动售货机中购买物品的顺序图。 顾客( User )先向自动售货机的前端( Front )投币; 售货机的识别器( Register )识别钱币; 售货机前端( Front )根据 Register 的识别结果产生商品列表; 顾客选择商品; 前端控制的出货器( Dispense

    2023年04月18日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包