• 正文
  • 相关推荐
申请入驻 产业图谱

全自动洗衣机控制系统的设计VHDL代码Quartus  Spirit_V4开发板

7小时前
113
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称: 全自动洗衣机控制系统的设计VHDL代码Quartus  Spirit_V4开发板

软件: Quartus II

语言: VHDL

代码功能

本项目实现了一个完整的全自动洗衣机控制系统,具备多种洗涤模式和智能控制功能。系统主要功能包括:

·多模式洗涤:支持标准洗、加强洗、弱洗三种洗涤模式

·完整洗涤流程:实现洗涤→漂洗→甩干的完整自动化流程

·实时显示数码管显示设定时间和剩余时间

·安全控制:机盖开关检测和暂停功能,确保使用安全

·智能提示蜂鸣器提示洗涤完成,提供用户反馈

·按键消抖:硬件按键消抖处理,提高系统稳定性

代码实现思路

系统架构设计

系统采用分层模块化设计,主要包含五个功能模块:

1.顶层控制模块:协调各模块工作,实现系统整体控制

2.洗涤控制模块:核心状态机控制洗涤流程和模式选择

3.显示模块:数码管动态扫描显示时间和状态信息

4.分频模块:将50MHz时钟分频为1Hz和1000Hz工作时钟

5.按键消抖模块:硬件消抖处理,提高按键响应可靠性

状态机设计

洗涤控制模块采用12状态状态机实现完整的洗涤流程:

·空闲状态:系统初始化,等待用户操作

·模式选择:用户选择洗涤模式和参数

·洗涤流程:洗涤→漂洗→甩干的顺序执行

·安全控制:机盖检测、暂停、复位等安全功能

·完成提示:洗涤完成后的蜂鸣器提示

代码结构

模块层次结构

auto_wash (顶层模块)
├── wash_ctrl (洗涤控制模块)
├── display (显示控制模块)
├── div_1000 (1Hz分频器)
├── div_50000 (1000Hz分频器)
└── key_jitter ×5 (按键消抖模块)

模块功能描述

1.auto_wash.vhd:顶层模块,集成所有功能模块

2.wash_ctrl.vhd:核心控制模块,实现12状态状态机

3.display.vhd:显示控制,支持四位数字动态显示

4.div_1000.vhd:50MHz→1Hz分频,用于时间计数

5.div_50000.vhd:50MHz→1000Hz分频,用于显示扫描

6.key_jitter.vhd:硬件按键消抖处理模块

时钟系统设计

系统采用三级时钟架构:

·50MHz主时钟:系统基准时钟

·1Hz工作时钟:用于时间计数和状态转换

·1000Hz显示时钟:用于数码管动态扫描显示

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

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.Testbench

6.仿真图

整体仿真图

按键模块仿真图

显示模块

分频模块

洗衣控制模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY auto_wash IS
   PORT (
      clk         : IN STD_LOGIC;--50MHz
      a_key       : IN STD_LOGIC;--洗涤模式按键,按下低电平
      b_key       : IN STD_LOGIC;--洗涤顺序减按键,按下低电平
      S3          : IN STD_LOGIC;--启动暂停按键,按下低电平
      door        : IN STD_LOGIC;--开关机盖按键
      S4          : IN STD_LOGIC;--复位按键,按下低电平
      
      D1          : OUT STD_LOGIC;--正转
      D2          : OUT STD_LOGIC;--反转
      D3          : OUT STD_LOGIC;--暂停
      buzzer      : OUT STD_LOGIC;--蜂鸣器
      D5          : OUT STD_LOGIC;--标准洗
      D4          : OUT STD_LOGIC;--加强洗
      D6          : OUT STD_LOGIC;--弱洗
      
      seg_select  : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--数码管段选
      SEL         : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--数码管位选
   );
END auto_wash;
ARCHITECTURE behavioral OF auto_wash IS
   COMPONENT display IS
      PORT (
         clk_1000Hz  : IN STD_LOGIC;
         time_set    : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
         rest_time   : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
         seg_select  : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
         SEL         : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT div_50000 IS
      PORT (
         clk         : IN STD_LOGIC;
         S4          : IN STD_LOGIC;
         clk_1000Hz  : OUT STD_LOGIC
      );
   END COMPONENT;
   
   COMPONENT div_1000 IS
      PORT (
         clk         : IN STD_LOGIC;
         S4          : IN STD_LOGIC;
         clk_1Hz     : OUT STD_LOGIC
      );
   END COMPONENT;
   
   COMPONENT key_jitter IS
      PORT (
         clkin       : IN STD_LOGIC;
         key_in      : IN STD_LOGIC;
         key_negedge : OUT STD_LOGIC
      );
   END COMPONENT;

 

【来源:www.hdlcode.com

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录