数电课程设计报告自动洗衣机Word文件下载.docx
《数电课程设计报告自动洗衣机Word文件下载.docx》由会员分享,可在线阅读,更多相关《数电课程设计报告自动洗衣机Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
注水
S4:
洗涤S5:
放水S6:
甩干S7:
结束
S8:
报警S9:
空状态S10:
时间设定的延时
3、按键:
拨码开关:
1:
复位(R)
2:
开始(START)
3:
开始甩干(START_SG)
4:
时间设定(SET-TIME)
5:
注水结束(IN_END)
6:
放水结束(OUT_END)
7:
无
8:
故障(GZ)
键盘:
SL+12:
SH+1
ML+1C:
MH+1
二、程序清单
1、主控制程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYCONTROLLERis
PORT(CPIN,R,START,START_SHUAIGAN,SET_TIME,IN_END,OUT_END,GUZHANG:
INSTD_LOGIC;
MH:
INSTD_LOGIC_VECTOR(3DOWNTO0);
--分十位
ML:
--分个位
SH:
--秒十位
SL:
--秒个位
MHQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
MLQ:
SHQ:
SLQ:
SPEAKER,ERROR_LIGHT,DONE:
OUTSTD_LOGIC;
MODEL:
MOTOR:
OUTSTD_LOGIC_VECTOR(1DOWNTO0)
);
ENDENTITY;
ARCHITECTUREXYJOFCONTROLLERIS
SIGNALCPCT:
INTEGERRANGE0TO999999;
SIGNALCP,SPEAK:
STD_LOGIC;
SIGNALZT_N:
INTEGERRANGE0TO99;
SIGNALCNT:
SIGNALTMP1,TMP2,SGTime,RING_Time,ZTime,TMPTime:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALMODEL_S:
STD_LOGIC_VECTOR(3DOWNTO0);
TYPESTATESIS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9);
TYPES4STATESIS(P0,P1,P2,P3);
SIGNALS:
STATES;
SIGNALP:
S4STATES;
SIGNALMHT:
SIGNALMLT:
SIGNALSHT:
SIGNALSLT:
BEGIN
PROCESS(CPIN,R)
IFR='
1'
THEN
CPCT<
=249999;
ELSIFCPIN='
ANDCPIN'
EVENTTHEN
IFCPCT=0THEN
CP<
=NOTCP;
ELSE
=CPCT-1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CP,R)
S<
=S0;
TMP1<
=X"
1E"
;
TMP2<
3C"
SGTime<
28"
RING_Time<
TMPTime<
08"
ERROR_LIGHT<
='
0'
MODEL_S<
="
0000"
SPEAK<
DONE<
CNT<
=20;
MHT<
MLT<
SHT<
SLT<
ELSIFCP='
ANDCP'
CASESIS
WHENS0=>
MODEL_S<
S<
=S1;
ERROR_LIGHT<
SGTime<
TMPTime<
0011"
WHENS1=>
0001"
IFSET_TIME='
=S2;
ELSIFSTART='
=S3;
ELSIFSTART_SHUAIGAN='
=S6;
WHENS2=>
0010"
IFGUZHANG='
=S8;
MHT<
=MH;
MLT<
=ML;
SHT<
=SH;
SLT<
=SL;
-----------------------------------------时间设定
WHENS3=>
IFIN_END='
=S4;
----------------------------------------------注水
WHENS4=>
0100"
ELSIFMHT="
ANDMLT="
ANDSHT="
ANDSLT="
=S5;
ELSIFSLT="
ANDSHT="
ANDMLT="
IFCNT=0THEN
1001"
SHT<
0101"
=MHT-1;
=CNT-1;
=MLT-1;
=SHT-1;
=SLT-1;
---------------------------------------------洗涤
WHENS5=>
IFOUT_END='
----------------------------------------------放水
WHENS6=>
0110"
IFSGTime>
X"
00"
=SGTime-1;
=S7;
---------------------------------------------甩干
WHENS7=>
0111"
IFRING_Time>
RING_Time<
=RING_Time-1;
DONE<
=S9;
-----------------------结束,蜂鸣器响两秒,转入状态S9
WHENS8=>
1000"
--报警,蜂鸣器持续响
--故障排除,转入状态S9
WHENOTHERS=>
NULL;
ENDCASE;
PROCESS(MODEL_S)
MODEL<
=MODEL_S;
PROCESS(SPEAK)
SPEAKER<
=SPEAK;
PROCESS(CP,R,MHT,MLT,SHT,SLT)
P<
=P0;
ZTime<
14"
MOTOR<
ZT_N<
=03;
IFS=S4THEN
CASEPIS
WHENP0=>
=P1;
WHENP1=>
MOTOR<
01"
IFZT_N>
0THEN
IFZTime>
ZTime<
=ZTime-1;
ZT_N<
=ZT_N-1;
=P2;
=01;
WHENP2=>
10"
=P3;
=02;
WHENP3=>
11"
---------------执行左转3s,暂停1s,再右转2s
PROCESS(MHT,MLT,SHT,SLT)
MHQ<
=MHT;
MLQ<
=MLT;
SHQ<
=SHT;
SLQ<
=SLT;
ENDXYJ;
2、设置时间模块:
ENTITYdecoderIS
PORT(RESET:
START:
SET_TIME:
KEY:
INSTD_LOGIC_VECTOR(3DOWNTO0);
--KEY[3..0]分十分个秒十秒个
OUTSTD_LOGIC_VECTOR(3DOWNTO0)--秒个位
END;
ARCHITECTUREmOFdecoderIS
SIGNALEDIT:
PROCESS(START,RESET)--电路可输入状态设置
BEGIN
IFRESET='
EDIT<
='
ELSIFSTART'
EVENTANDSTART='
THEN--如果start按下将edit置0
PROCESS(RESET,KEY,EDIT)--手动设置时间
ELSIFEDIT='
ANDSET_TIME='
IFKEY(3)'
EVENTANDKEY(3)='
THEN--设置分的十位
IFMHT="
="
=MHT+1;
IFKEY
(2)'
EVENTANDKEY
(2)='
THEN--设置分的个位
IFMLT="
=MLT+1;
IFKEY
(1)'
EVENTANDKEY
(1)='
THEN--设置秒的十位
IFSHT="
=SHT+1;
IFKEY(0)'
EVENTANDKEY(0)='
THEN--设置秒的个位
IFSLT="
=SLT+1;
MH<
ML<
SH<
SL<
endm;
3、键盘转按键:
--CPIN时钟脉冲输入按10MHz设计;
复位R
entityPADTOKEYis
port(
CPIN,R,VALIDKEY:
KEY:
KEYOUT:
OUTSTD_LOGIC_VECTOR(15DOWNTO0);
CLK_1MHZ,RST:
OUTSTD_LOGIC
endentity;
architectureJGTofPADTOKEYis
SIGNALCTCP:
INTEGERRANGE0TO5;
SIGNALCPO:
SIGNALCTCPO:
INTEGERRANGE0TO4999;
TYPESTATESIS(S0,S1,S2);
SIGNALS:
begin
PROCESS(CPIN)
IFCPIN='
IFCTCP=5THEN
CPO<
=NOTCPO;
CTCP<
=0;
=CTCP+1;
PROCESS(CPO,R)
CLK_1MHZ<
=CPO;
RST<
CTCPO<
KEYOUT<
0000000000000000"
ELSIFCPO='
ANDCPO'
IFCTCPO/=4999THEN
CTCPO<
=CTCPO+1;
WHENS0=>
RST<
IFVALIDKEY='
CASEKEYIS
WHEN"
=>
KEYOUT<
0000000000000001"
0000000000000010"
0000000000000100"
0000000000001000"
0000000000010000"
0000000000100000"
0000000001000000"
0000000010000000"
0000000100000000"
0000001000000000"
1010"
0000010000000000"
1011"
0000100000000000"
1100"
0001000000000000"
1101"
0010000000000000"
1110"
0100000000000000"
1111"
1000000000000000"
NULL;
endarchitectureJGT;
4、LCD显示模块:
entityLCDis
port(CPIN,RESET,BUSY:
MH,ML,SH,SL:
MODL:
CLK,RST,STROBE,OUTLINE:
OUTSTD_LOGIC;
DATA:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ADDR:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
architectureJGTofLCDis
TYPESTATESIS(S0,S1,S2,S3,S4);
SIGNALLCDPT:
INTEGERRA