数电课程设计报告自动洗衣机_第1页
数电课程设计报告自动洗衣机_第2页
数电课程设计报告自动洗衣机_第3页
数电课程设计报告自动洗衣机_第4页
数电课程设计报告自动洗衣机_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数 电 课 程 设 计 报 告课题:全自动洗衣机报告人:XX 学号:XXXXXXX班级:XXX 设计时间:XXXX-XXXX目 录一、全自动洗衣机的功能21、功能说明22、状态机状态23、按键2二、程序清单21、主控制程序22、设置时间模块83、键盘转按键104、LCD显示模块125、LED模块156、蜂鸣器模块16三、模拟演示17四、仿真波形17五、原理图18六、心得体会19一、 全自动洗衣机的功能:1、功能说明:1) 复位,设定洗涤时间,注水,开始洗涤,放水,甩干,结束。2) 复位后,直接拨拨码开关3,即可跳过洗涤过程直接进行甩干。3) 故障模拟时,能够自动结束运行并鸣响提醒,直到故障信号

2、结束。4) 正常运行流程结束时,有1秒的鸣响。5) 在洗涤过程中,实现正转3秒,暂停1秒,反转2秒的循环工作模拟。注:由于实际的洗衣机中,放水结束和报警是由感应设备感应的,在设计中,我们用拨码开关开关代替。2、状态机状态:S0:初始化 S1:等待 S2:时间设定 S3:注水 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)键盘:1:SL+1 2

3、:SH+13:ML+1 C:MH+1 二、程序清单1、主控制程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CONTROLLER is PORT (CPIN,R,START,START_SHUAIGAN,SET_TIME,IN_END,OUT_END,GUZHANG:IN STD_LOGIC; MH:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -分十位 ML:IN STD_LOGIC_VECTOR(

4、3 DOWNTO 0); -分个位 SH:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -秒十位 SL:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -秒个位 MHQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分十位 MLQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分个位 SHQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -秒十位 SLQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -秒个位 SPEAKER,ERROR_LIGHT,DONE :OU

5、T STD_LOGIC; MODEL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MOTOR:OUT STD_LOGIC_VECTOR(1 DOWNTO 0) );END ENTITY ;ARCHITECTURE XYJ OF CONTROLLER ISSIGNAL CPCT :INTEGER RANGE 0 TO 999999;SIGNAL CP,SPEAK:STD_LOGIC;SIGNAL ZT_N : INTEGER RANGE 0 TO 99;SIGNAL CNT: INTEGER RANGE 0 TO 99;SIGNAL TMP1,TMP2,SGTime,RI

6、NG_Time,ZTime,TMPTime:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL MODEL_S:STD_LOGIC_VECTOR(3 DOWNTO 0);TYPE STATES IS (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9);TYPE S4STATES IS (P0,P1,P2,P3);SIGNAL S : STATES;SIGNAL P : S4STATES;SIGNAL MHT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MLT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SH

7、T:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SLT:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CPIN,R)BEGINIF R='1' THEN CPCT<=249999;ELSIF CPIN='1' AND CPIN 'EVENT THEN IF CPCT=0 THEN CPCT<=249999;CP<=NOT CP; ELSE CPCT<=CPCT-1; END IF;END IF;END PROCESS;PROCESS(CP,R)BEGINIF R=&

8、#39;1' THEN S<=S0;TMP1<=X"1E"TMP2<=X"3C"SGTime<=X"28"RING_Time<=X"28"TMPTime<=X"08" ERROR_LIGHT<='0'MODEL_S<="0000" SPEAK<='0' DONE<='0' CNT<=20; MHT <="0000" MLT <

9、;="0000" SHT <="0000" SLT <="0000"ELSIF CP='1' AND CP 'EVENT THEN CASE S IS WHEN S0=> MODEL_S<="0000"S<=S1;TMP1<=X"1E"TMP2<=X"3C"ERROR_LIGHT<='0' CNT<=20; SGTime<=X"28"RING_Time<

10、;=X"28" TMPTime<=X"08" SPEAK<='0' DONE<='0' MHT <="0011" MLT <="0011" SHT <="0000" SLT <="0000" WHEN S1=>MODEL_S<="0001" IF SET_TIME='1' THEN S<=S2; ELSIF START='1' THE

11、N S<=S3; ELSIF START_SHUAIGAN='1' THEN S<=S6; MHT <="0000" MLT <="0000" SHT <="0000" SLT <="0000" END IF; WHEN S2=>MODEL_S<="0010" IF GUZHANG='1' THEN S<=S8; ELSIF START='1' THEN S<=S3; ELSE MHT&l

12、t;=MH; MLT<=ML; SHT<=SH; SLT<=SL; END IF;- -时间设定 WHEN S3=> MODEL_S<="0011" IF GUZHANG='1' THEN S<=S8; ELSE IF IN_END='1' THEN S<=S4; END IF; END IF;-注水 WHEN S4=>MODEL_S<="0100" IF GUZHANG='1' THEN S<=S8; ELSIF MHT ="0000&

13、quot;AND MLT ="0000"AND SHT ="0000"AND SLT ="0000" THEN S<=S5; ELSIF SLT="0000" AND SHT="0000" AND MLT="0000" THEN IF CNT=0 THEN MLT<="1001"SHT<="0101" SLT<="1001" MHT<= MHT-1; CNT<=20; ELSE C

14、NT<=CNT-1; END IF; ELSIF SLT="0000" AND SHT="0000" THEN IF CNT=0 THEN SLT<="1001"SHT<="0101" MLT<= MLT-1; CNT<=20; ELSE CNT<=CNT-1; END IF; ELSIF SLT="0000" THEN IF CNT=0 THEN SLT<="1001" SHT<=SHT-1; CNT<=20; ELSE

15、 CNT<=CNT-1; END IF; ELSE IF CNT=0 THEN SLT<=SLT-1; CNT<=20; ELSE CNT<=CNT-1; END IF; END IF; -洗涤 WHEN S5=> MODEL_S<="0101" IF GUZHANG='1' THEN S<=S8; ELSE IF OUT_END='1' THEN S<=S6; END IF; END IF;-放水 WHEN S6=>MODEL_S<="0110" IF GUZH

16、ANG='1' THEN S<=S8; ELSE IF SGTime>X"00" THEN SGTime<=SGTime-1; ELSE SGTime<=X"28" S<=S7; END IF; END IF;-甩干 WHEN S7=>MODEL_S<="0111" IF RING_Time>X"00" THEN SPEAK<='1' RING_Time<=RING_Time-1;DONE<='1' E

17、LSE S<=S9; SPEAK<='0'MODEL_S<="0000" END IF; -结束,蜂鸣器响两秒,转入状态S9 WHEN S8=> MODEL_S<="1000" IF GUZHANG='1' THEN SPEAK<='1' ERROR_LIGHT<='1' -报警,蜂鸣器持续响 ELSE S<=S9; SPEAK<='0'MODEL_S<="0000"-故障排除,转入状态S9 ER

18、ROR_LIGHT<='0' END IF; WHEN OTHERS=> NULL; END CASE;END IF;END PROCESS;PROCESS (MODEL_S)BEGINMODEL<=MODEL_S;END PROCESS;PROCESS (SPEAK)BEGINSPEAKER<=SPEAK;END PROCESS;PROCESS (CP,R,MHT,MLT,SHT,SLT)BEGINIF R='1' THEN P<=P0;ZTime<=X"14"MOTOR<="00&quo

19、t;ZT_N<=03;ELSIF CP='1' AND CP 'EVENT THEN IF S=S4 THEN CASE P IS WHEN P0=> P<=P1;ZTime<=X"14"MOTOR<="00"ZT_N<=03; WHEN P1=> MOTOR<="01" IF ZT_N>0 THEN IF ZTime>0 THEN ZTime<=ZTime-1; ELSE ZT_N<=ZT_N-1; ZTime<=X"14

20、" END IF; ELSE P<=P2;ZTime<=X"14"ZT_N<=01; END IF; WHEN P2=> MOTOR<="10" IF ZT_N>0 THEN IF ZTime>0 THEN ZTime<=ZTime-1; ELSE ZT_N<=ZT_N-1; ZTime<=X"14" END IF; ELSE P<=P3;ZTime<=X"14"ZT_N<=02; END IF; WHEN P3=> MO

21、TOR<="11" IF ZT_N>0 THEN IF ZTime>0 THEN ZTime<=ZTime-1; ELSE ZT_N<=ZT_N-1; ZTime<=X"14" END IF; ELSE P<=P1;ZTime<=X"14"ZT_N<=03; END IF; WHEN OTHERS=> NULL; END CASE; ELSE MOTOR<="00" END IF;-执行左转3s,暂停1s,再右转2sEND IF;END PROCES

22、S;PROCESS(MHT,MLT,SHT,SLT)BEGINMHQ<=MHT;MLQ<=MLT;SHQ<=SHT;SLQ<=SLT;END PROCESS;END XYJ;2、设置时间模块 : LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder IS PORT( RESET:IN STD_LOGIC; START:IN STD_LOGIC; SET_TIME:IN STD_LOGIC; KEY: IN STD_LOGIC_VECTOR(3 DOW

23、NTO 0); -KEY3.0 分十 分个 秒十 秒个 MH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分十位 ML:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分个位 SH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -秒十位 SL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -秒个位 );END;ARCHITECTURE m OF decoder ISSIGNAL MHT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MLT:STD_LOGIC_VECTOR(3 D

24、OWNTO 0);SIGNAL SHT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SLT:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL EDIT:STD_LOGIC;BEGINPROCESS(START,RESET) -电路可输入状态设置 BEGIN IF RESET = '1' THEN EDIT <= '1' ELSIF START'EVENT AND START = '1' THEN -如果start按下将edit置0 EDIT <= '0' END

25、 IF;END PROCESS;PROCESS(RESET,KEY,EDIT) -手动设置时间 BEGIN IF RESET = '1' THEN MHT <="0000" MLT <="0000" SHT <="0000" SLT <="0000" ELSIF EDIT='1'AND SET_TIME='1' THEN IF KEY(3)'EVENT AND KEY(3)='1' THEN -设置分的十位 IF MHT

26、 = "0101" THEN MHT<= "0000" ELSE MHT<= MHT+ 1; END IF; END IF; IF KEY(2)'EVENT AND KEY(2) = '1' THEN -设置分的个位 IF MLT = "1001" THEN MLT<= "0000" ELSE MLT <= MLT + 1; END IF; END IF; IF KEY(1)'EVENT AND KEY(1) = '1' THEN -设置秒的十

27、位 IF SHT = "0101" THEN SHT <= "0000" ELSE SHT <=SHT + 1; END IF; END IF; IF KEY(0)'EVENT AND KEY(0) = '1' THEN -设置秒的个位 IF SLT = "1001" THEN SLT <= "0000" ELSE SLT <= SLT + 1; END IF; END IF; END IF;END PROCESS;PROCESS(MHT,MLT,SHT,SLT)BE

28、GINMH<=MHT;ML<=MLT;SH<=SHT;SL<=SLT;END PROCESS;end m;3、键盘转按键:-CPIN 时钟脉冲输入 按10MHz设计 ;复位RLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;entity PADTOKEY is port ( CPIN,R,VALIDKEY :IN STD_LOGIC; KEY :IN STD_LOGIC_VECTOR(3 DOWNTO 0); KEYO

29、UT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); CLK_1MHZ,RST: OUT STD_LOGIC );end entity ;architecture JGT of PADTOKEY is SIGNAL CTCP: INTEGER RANGE 0 TO 5; SIGNAL CPO :STD_LOGIC; SIGNAL CTCPO :INTEGER RANGE 0 TO 4999; TYPE STATES IS (S0,S1,S2); SIGNAL S: STATES;beginPROCESS(CPIN)BEGINIF CPIN='1' AND

30、 CPIN 'EVENT THEN IF CTCP=5 THEN CPO <= NOT CPO; CTCP<=0; ELSE CTCP<=CTCP+1; END IF;END IF;END PROCESS;PROCESS(CPO,R)BEGINCLK_1MHZ<=CPO;IF R='1' THEN RST<='0'S<=S0;CTCPO<=0; KEYOUT<="0000000000000000"ELSIF CPO='1' AND CPO 'EVENT THEN

31、IF CTCPO /= 4999 THEN CTCPO<=CTCPO+1; ELSE CTCPO<=0; CASE S IS WHEN S0 =>RST<='0' IF VALIDKEY='1' THEN S<=S1; CASE KEY IS WHEN "0000"=>KEYOUT<="0000000000000001" WHEN "0001"=>KEYOUT<="0000000000000010" WHEN "0010

32、"=>KEYOUT<="0000000000000100" WHEN "0011"=>KEYOUT<="0000000000001000" WHEN "0100"=>KEYOUT<="0000000000010000" WHEN "0101"=>KEYOUT<="0000000000100000" WHEN "0110"=>KEYOUT<="00000000

33、01000000" WHEN "0111"=>KEYOUT<="0000000010000000" WHEN "1000"=>KEYOUT<="0000000100000000" WHEN "1001"=>KEYOUT<="0000001000000000" WHEN "1010"=>KEYOUT<="0000010000000000" WHEN "1011"

34、=>KEYOUT<="0000100000000000" WHEN "1100"=>KEYOUT<="0001000000000000" WHEN "1101"=>KEYOUT<="0010000000000000" WHEN "1110"=>KEYOUT<="0100000000000000" WHEN "1111"=>KEYOUT<="10000000000000

35、00" WHEN OTHERS=>NULL; END CASE; ELSE S<=S0;KEYOUT<="0000000000000000" END IF; WHEN S1=>RST<='1'S<=S2; WHEN S2=>RST<='0'S<=S0; WHEN OTHERS=> NULL; END CASE; END IF;END IF;END PROCESS; end architecture JGT;4、LCD显示模块:LIBRARY IEEE;USE IEEE.ST

36、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity LCD is port ( CPIN,RESET,BUSY:IN STD_LOGIC; MH,ML,SH,SL:IN STD_LOGIC_VECTOR(3 DOWNTO 0); MODL: IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNT

37、O 0) );end entity ;architecture JGT of LCD is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 9; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; SIGNAL C1,C2,C3,C4: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(CPIN,RESET) -分频为500US周期BEGINCLK<=CPIN;I

38、F RESET='1' THEN CPCT<=65535;ELSIF CPIN='1' AND CPIN 'EVENT THEN IF CPCT=0 THEN CPCT<=65535;CP<=NOT CP; ELSE CPCT<=CPCT-1; END IF;END IF;END PROCESS;-主进程:拟采用500us时钟,即在500us后完成状态转换,修改LCDPT指针-S0:初始状态,在R=1时,处于S0状态,LCDPT=0; 输出RST=1, 转S1-S1:输出RST=0;判断BUSY=0? : Y: LCDPT+1;L

39、CDPT到固定最后?:N: ->S2 - :Y: ->S3- :N: NULL-S2:给出STROBE信号。转S1-S1,S2完成初始化固定显示的功能-S3S4完成扫描显示功能-S3:BUSY=0? :Y: LCDPT循环+1 ,转S4-S4:给出STROBE信号,转S3PROCESS(CP,RESET)BEGINIF RESET='1' THEN S<=S0;LCDPT<=0;RST<='1'ELSIF CP='1' AND CP 'EVENT THEN CASE S IS WHEN S0=> S&l

40、t;=S1;LCDPT<=0;RST<='1' WHEN S1=> RST<='0'STROBE<='0' IF BUSY='0' THEN LCDPT<=LCDPT+1; IF LCDPT=2 THEN S<=S3; ELSE S<=S2; END IF; END IF; WHEN S2=> S<=S1;STROBE<='1' WHEN S3=> STROBE<='0' IF BUSY='0' THEN

41、IF LCDPT=9 THEN LCDPT<=2; ELSE LCDPT<=LCDPT+1; END IF; S<=S4; END IF; WHEN S4=> STROBE<='1'S<=S3; WHEN OTHERS=> NULL; END CASE;END IF; END PROCESS;-选择输出进程(LCDPT)- LCDPT=0,NULL- =1 显示 :3AH,5- =2,3,4,5- W 57H,9 A 41H,10 I 49H,11 T 54H,12,即显示WAIT;- G 47H,9 N 4EH,10 X 58H,11

42、 Z 5AH,12,- S 53H,9 Z 5AH,10 S 53H,11 J 4AH,12- Z 5AH,9 S 53H,10 . 2EH,11 . 2EH,12- X 58H,9 D 44H,10 . 2EH,11 . 2EH,12- F 46H,9 S 53H,10 . 2EH,11 . 2EH,12- S 53H,9 G 47H,10 . 2EH,11 . 2EH,12- R 52H,9 I 49H,10 N 4EH,11 G 47H,12- O 4FH,9 V 56H,10 E 45H,11 R 52H,12- =6,7 MYH,3 MYL,4- =8,9 SYH,6 SYL,7PR

43、OCESS(MODL)BEGIN CASE MODL IS WHEN "0000" => C1<="01010111"C2<="01000001"C3<="01001001"C4<="01010100" WHEN "0001" => C1<="01000111"C2<="01001110"C3<="01011000"C4<="01011010&qu

44、ot; WHEN "0010" => C1<="01010011"C2<="01011010"C3<="01010011"C4<="01001010" WHEN "0011" => C1<="01011010"C2<="01010011"C3<="00101110"C4<="00101110" WHEN "0100"

45、=> C1<="01011000"C2<="01000100"C3<="00101110"C4<="00101110" WHEN "0101" => C1<="01000110"C2<="01010011"C3<="00101110"C4<="00101110" WHEN "0110" => C1<="0101001

46、1"C2<="01000111"C3<="00101110"C4<="00101110" WHEN "0111" => C1<="01010010"C2<="01001001"C3<="01001110"C4<="01000111" WHEN "1000" => C1<="01001111"C2<="010101

47、10"C3<="01000101"C4<="01010010" WHEN OTHERS=> NULL; END CASE;END PROCESS;PROCESS(LCDPT,C1,C2,C3,C4)BEGINCASE LCDPT ISWHEN 0 => NULL;WHEN 1=> DATA<="00111010"ADDR<="0101"OUTLINE<='0'WHEN 2=> DATA<=C1;ADDR<="100

48、1"OUTLINE<='0'WHEN 3=> DATA<=C2;ADDR<="1010"OUTLINE<='0'WHEN 4=> DATA<=C3;ADDR<="1011"OUTLINE<='0'WHEN 5=> DATA<=C4;ADDR<="1100"OUTLINE<='0'WHEN 6=>DATA<="0011"&MH;ADDR<="0011"OUTLINE<='0'WHEN 7=>DATA<="0011"&ML;ADDR<="0100"OUTLINE<='0'WHEN 8=>DA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论