基于VHDL的洗衣机控制器设计Word格式.docx
《基于VHDL的洗衣机控制器设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于VHDL的洗衣机控制器设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
默认模式为模式2----注水洗涤排水洗衣机界面如下图所示:
运转方式如下图所示:
2.算法简介总程序描述:
种模块,在洗衣机控制器输入变化时,立刻转换模式5总程序通过调用;
暂停时,除显示开关状态的输出外,0并产生对应输出。
当开关关闭时,所有输出为。
所有输出为0开关开启后,设置洗衣模式,之后按下“开始”即可开始工作。
在洗衣机控制器输入变化时,立刻转换模式并产生对应输出。
电子元器件模型如下图所示:
sorpclkin为系统时序脉冲信号,switch为开关信号,modelselect为开关选择信号,/暂停信号。
为开始为drainstate为注水程序的工作状态,washrstate为洗涤程序的工作状态,waterstate为脱水程序的工作状态。
排水程序的工作状态,drystate为警报提醒的状态。
alarmout暂停的为数码管显示的开始/)为数码管显示的开关的状态(0/1,spstateswitchstate为数码管显示的currentmodel为数码管显示的洗衣机工作状态(0~4),,状态(0/1)state为数码管显示的timeunit为数码管显示的剩余时间的十位,当前模式(0~2),timedecade剩余时间的个位。
下面介绍各模块功能与算法:
1)开关与模式选择模块..
a接收开关信息,b接收模式选择信息。
c输出总电路的开关信息(开启洗衣机并且设置完毕电路后,即可准备工作,等待“开始”信号)。
e为开关信息,将输入到数码管中显示。
time1与time2分别代表洗衣时间的十位和个位,将输入到计数器与警报模块中。
y为模式信息,将输入到码管中显示。
2)开始/暂停模块
a接收开关信息,b接收开始/暂停信息,clk接收系统时序脉冲信号。
startorpause输出受开始/暂停信息调控的系统时序脉冲信号。
y为开始/暂停信息,将输入到码管中显示。
3)计数器与警报模块
clk接收受开始/暂停信息调控的系统时序脉冲信号,a接收开关信息,time1和time2分别接收洗衣时间的十位和个位。
alarm输出警报信息;
outtime1和outtime2分别为剩余时间的十位和个位,将输入到数码管中显示,同时将输入到控制模块中。
。
在脉冲信号的控制下,剩余时间逐渐减少,当剩余时间为0时,停止减小,并开启警报。
4)控制模块
a接收开关信息,b接收开始/暂停信息,time1和time2分别接收剩余时间的十位和个位。
water、wash、drain、dry分别输出注水、洗涤、排水、脱水的控制信息。
act为模块内部使用的BUFFER量。
控制模块根据剩余时间的多少决定工作状态。
如:
剩余时间为16-30分钟时洗涤,31-35分钟时注水。
则剩余时间33分钟时,water为1,其他控制信息为0;
剩余时间。
01,其他控制信息为为21分钟时,wash5)译码器与数码管显示模块
b接收开关信息,a接收4位二进制数据。
q在数码管上显示字形。
..e,time1,time2,y:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
程序源代码及说明二、
个模块代码组成程序代码由主程序及5)主程序1LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYxyjIS
PORT(switch,modelselect,clkin,sorp:
INSTD_LOGIC;
暂停按键状态的输入电源开关、模式选择、时钟、开始/--waterstate,washstate,drainstate,drystate,alarmout:
OUTSTD_LOGIC;
--注水程序、洗涤程序、排水程序、脱水程序、警报状态的输出OUTswitchstate,spstate,state,currentmodel,timedecade,timeunit:
--工作状态、工作模式、剩余时间的输出STD_LOGIC_VECTOR(6DOWNTO0));
ENDENTITYxyj;
ARCHITECTUREbehaveOFxyjIS
调用开关与模式选择模块--COMPONENTmodel
PORT(a,b:
c:
ENDCOMPONENTmodel;
COMPONENTcount--调用计数器与警报模块
PORT(clk,a:
time1,time2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
alarm:
outtime1,outtime2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENTcount;
COMPONENTBCD7--调用译码器与数码管显示模块
PORT(b:
a:
q:
OUTSTD_LOGIC_VECTOR(0TO6));
ENDCOMPONENTBCD7;
COMPONENTstartpause--调用开始/暂停模块
PORT(a,b,clk:
startorpause:
e:
ENDCOMPONENTstartpause;
COMPONENTcontrol--调用控制模块
PORT(a,b:
water,wash,drain,dry:
act:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENTcontrol;
SIGNAL
sig1,sig2,sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALaout,bout:
STD_LOGIC;
BEGIN
U1:
modelPORT
MAP(a=>
switch,b=>
modelselect,c=>
aout,y=>
sigBCD7_1,time1=>
sig1,time2=>
sig2,e=>
sigBCD7_5);
U2:
startpausePORT
aout,b=>
sorp,clk=>
clkin,startorpause=>
bout,e=>
sigBCD7_6);
U3:
controlPORT
sorp,time1=>
sigBCD7_2,time2=>
sigBCD7_3,water=>
waterstate,wash=>
washstate,drain=>
drainstate,dry=>
drystate,act=>
sigBCD7_4);
U4:
countPORT
aout,clk=>
bout,time1=>
sig2,alarm=>
alarmout,outtime1=>
sigBCD7_2,outtime2=>
sigBCD7_3);
U5:
BCD7PORTMAP(b=>
aout,a=>
sigBCD7_1,q=>
currentmodel);
U6:
sigBCD7_2,q=>
timedecade);
U7:
sigBCD7_3,q=>
timeunit);
U8:
sigBCD7_4,q=>
state);
U9:
sigBCD7_5,q=>
switchstate);
U10:
sigBCD7_6,q=>
spstate);
ENDARCHITECTUREbehave;
2)开关与模式选择模块
LIBRARYIEEE;
ENTITYmodelIS--开关与模式选择模块
--.
定义开关和模式选择按键的输入--PORT(a,b:
洗衣机工作开关的输出--c:
定义所需
时间/min,time1为十位,time2为各位
ENDENTITYmodel;
ARCHITECTUREbehaveOFmodelIS
PROCESS(a,b)
BEGIN
IF(a='
1'
)THEN--开关开启时执行
CASEbIS
WHEN'
=>
y<
=模式1:
60分钟
0'
=0;
time1<
=模式2:
10分钟
ENDCASE;
c<
='
;
e<
=--开关开启且模式选择完毕,开始工作
ELSEy<
=
=--开关关闭时不工作
ENDIF;
ENDPROCESS;
3)开始/暂停模块
ENTITYstartpauseIS--开始/暂停模块
PORT(a,b,clk:
ENDENTITYstartpause;
ARCHITECTUREbehaveOFstartpauseIS
I