名称:全自动洗衣机控制系统的设计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;
源代码
点击下方的公众号卡片获取