数字电路课程设计:全自动洗衣机设计_第1页
数字电路课程设计:全自动洗衣机设计_第2页
数字电路课程设计:全自动洗衣机设计_第3页
数字电路课程设计:全自动洗衣机设计_第4页
数字电路课程设计:全自动洗衣机设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

08电自8班 岳培豪 20080711124课 程 设 计 报 告主 课 题 :全自动洗衣机 报 告 人 :岳培豪 20080711124 同组成员 :周宜行、王博泽 望开心 课设时间 :2010年12月6日-12月17日目录一、洗衣机功能简介3二、设计准备12三、设计方案3四、方案程序4五、课程设计感想23一、洗衣机功能简介1.1主要功能1、实现自动洗衣机主要功能的状态模拟。状态包括复位,等待,设定洗涤时间,注水,洗涤,放水,甩干和结束;2、进水从电路启动开始,以水位检测达到要求的位置为结束(在此为排水定时);排水以洗涤结束位起点,以检测达到要求为止;甩干过程为定时状态。3、总体工作的主要工作为洗涤过程,洗涤过程要求洗涤定时及电机的正转、暂停、反转定时,如下所示:进入洗涤正转3s暂停1s反转2s进入下一程序定时到注:一些小组方案的功能解析1、在复位后可以选择设时洗涤、按默认时间洗涤与直接甩干三种模式;2、工作时显示洗涤的剩余时间和正在执行的步骤标号;3、故障模拟时,能够自动结束运行并鸣响提醒,直到故障信号结束;4、正常运行流程结束时,有2秒的鸣响;1.2主要功能模块1、主程序模块VHDL2.Vhd:实现全自动洗衣机的各个状态的运行及相互联系,同时附加了LCD及键盘模块的转换。2、键盘模块VHDL3.Vhd:实现开发板键盘的输入功能及防抖功能。3、LCD显示模块VHDL4.Vhd:实现开发板LCD的显示功能。(包括静态及动态显示)4、蜂鸣器模块VHDL5:规定蜂鸣器的鸣响频率。二、设计准备2.1软件方面加快对Altium Designer 6 软件的学习,熟练掌握相关的功能及应用,掌握程序的编写、仿真及调试下板。2.2硬件方面了解现实当中全自动洗衣机的运行情况,分清洗衣机的各个运行状态,同时搞清楚各个状态之间的联系,以及故障的处理。正的来讲就是熟悉所选项目的实际情况及功能。三、设计方案3.1全自动洗衣机全过程状态S0:复位状态S1:等待状态S2:定时状态S3:注水状态S4:洗涤状态S5:放水状态S6:甩干状态S7:结束状态S8:故障状态S9:空状态S10:键盘调节模块(使得键盘输入防抖功能更完善)3.2洗涤状态电机的状态P0:等待状态并给初始状态付初值P1:电机正转状态P2:电机暂停状态P3:电机反转状态四、方案程序4.1主程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DK is PORT (CPIN,R,START,START2,SET_TIME,FS_END,GZ,SU,SD,GU,GD :IN STD_LOGIC; SPEAKER,LIGHT,GZLIGHT :OUT STD_LOGIC; XD_Time,BZ :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ZYDeng :OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END ENTITY ;ARCHITECTURE XYJ OF DK ISSIGNAL CPCT :INTEGER RANGE 0 TO 999999;SIGNAL CP,SPEAK:STD_LOGIC;SIGNAL ZT_N : INTEGER RANGE 0 TO 99;SIGNAL ZSTime,OMTime,SGTime,FMTime,ZTime,JCTime :STD_LOGIC_VECTOR(11 DOWNTO 0);SIGNAL XDTime,BZ_S :STD_LOGIC_VECTOR(7 DOWNTO 0);TYPE STATES IS (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10);TYPE S4STATES IS (P0,P1,P2,P3);SIGNAL S : STATES;SIGNAL P : S4STATES;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=1 THEN S=S0;ZSTime=X028;OMTime=X4B0;JCTime=X008;GZLIGHT=0; SGTime=X028;FMTime=X028;XDTime=X00;BZ_S=X00;LIGHT=1; SPEAK -复位BZ_S=X00;S=S1;ZSTime=X028;OMTime=X4B0;LIGHT=1; SGTime=X028;FMTime=X028;XDTime=X1E;GZLIGHT=0; JCTime=X008;SPEAK BZ_S=X01; -等待 IF SET_TIME=1 THEN S=S2; ELSIF START=1 THEN S=S3; ELSIF START2=1 THEN S=S6;XDTime BZ_S=X02; -定时 IF GZ=1 THEN S=S8; ELSE IF GU=1 THEN IF XDTime=X63 THEN XDTime=X00; ELSE XDTime=XDTime+1; END IF; S=S10; ELSIF GD=1 THEN IF XDTime=X00 THEN XDTime=X63; ELSE XDTime=XDTime-1; END IF; SX59 THEN XDTime=X00; ELSE XDTime=XDTime+X0A; END IF; S=S10; ELSIF SD=1 THEN IF XDTimeX0A THEN XDTime=X63; ELSE XDTime=XDTime-X0A; END IF; S=S10; ELSIF START=1 THEN S BZ_S=X03; -放水 IF GZ=1 THEN SX000 THEN ZSTime=ZSTime-1; ELSE S BZ_S=X04; -洗涤 IF GZ=1 THEN S0 THEN IF OMTime0 THEN OMTime=OMTime-1; ELSE OMTime=X4B0; XDTime=XDTime-1; END IF; ELSE S BZ_S=X05; -放水 IF GZ=1 THEN S=S8; ELSE IF FS_END=1 THEN S BZ_S=X06; -甩干 IF GZ=1 THEN SX000 THEN SGTime=SGTime-1; ELSE FMTime=X028; S BZ_SX000 THEN SPEAK=1;FMTime=FMTime-1; ELSE S=S9;SPEAK=0;BZ_S=X00;LIGHT BZ_S=X08; -故障 IF GZ=1 THEN SPEAK=1;GZLIGHT=1; ELSE S=S9;SPEAK=0;BZ_S=X00;LIGHT=0;XDTime=X00; GZLIGHT IF JCTimeX000 THEN -键盘调节 JCTime=JCTime-1; ELSE S=S2;JCTime NULL; END CASE;END IF;END PROCESS;PROCESS (BZ_S)BEGINBZ=BZ_S;END PROCESS;PROCESS (SPEAK)BEGINSPEAKER=SPEAK;END PROCESS;PROCESS (XDTime)BEGINIF XDTimeX0A THEN XD_Time=XDTime;ELSIF XDTimeX14 THEN XD_Time=XDTime+6;ELSIF XDTimeX1E THEN XD_Time=XDTime+12;ELSIF XDTimeX28 THEN XD_Time=XDTime+18;ELSIF XDTimeX32 THEN XD_Time=XDTime+24;ELSIF XDTimeX3C THEN XD_Time=XDTime+30;ELSIF XDTimeX46 THEN XD_Time=XDTime+36;ELSIF XDTimeX50 THEN XD_Time=XDTime+42;ELSIF XDTimeX5A THEN XD_Time=XDTime+48;ELSIF XDTimeX64 THEN XD_Time=XDTime+54;END IF;END PROCESS;PROCESS (CP,R,XDTime)BEGINIF R=1 THEN P=P0;ZTime=X014;ZYDeng=000;ZT_N P=P1;ZTime=X014;ZYDeng=000;ZT_N ZYDeng0 THEN IF ZTime0 THEN ZTime=ZTime-1; ELSE ZT_N=ZT_N-1; ZTime=X014; END IF; ELSE P=P2;ZTime=X014;ZT_N ZYDeng0 THEN IF ZTime0 THEN ZTime=ZTime-1; ELSE ZT_N=ZT_N-1; ZTime=X014; END IF; ELSE P=P3;ZTime=X014;ZT_N ZYDeng0 THEN IF ZTime0 THEN ZTime=ZTime-1; ELSE ZT_N=ZT_N-1; ZTime=X014; END IF; ELSE P=P1;ZTime=X014;ZT_N NULL; END CASE; ELSE ZYDeng=000; END IF;END IF;END PROCESS;END XYJ;图1、主程序模块生成图4.2 LCD显示功能LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity GENLCD8 is port (CPIN,R,BUSY :IN STD_LOGIC; D0,D1,D2,D3 :IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end entity ;architecture JGT of GENLCD8 is TYPE STATES IS (S0,S1,S2); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 8; SIGNAL CPCT : INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC;-SIGNAL ASCEW,ASCSN : STD_LOGIC_VECTOR(7 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP; ELSE CPCTS2- :Y: 转S3- ;N; NULL-S2:给出STROBE信号。转S1-S1,S2完成初始化固定显示的功能PROCESS(CP,R)BEGINIF R=1 THEN S=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0; IF BUSY=0 THEN IF LCDPT=12 THEN LCDPT=1; ELSE LCDPT=LCDPT+1; END IF; S S=S1;STROBE NULL; END CASE;END IF; END PROCESS;PROCESS(LCDPT)BEGINCASE LCDPT ISWHEN 0 = NULL;WHEN 1=DATA=0011&D0(7 DOWNTO 4);ADDR=0010;OUTLINEDATA=0011&D0(3 DOWNTO 0);ADDR=0011;OUTLINEDATA=0011&D1(7 DOWNTO 4);ADDR=0101;OUTLINEDATA=0011&D1(3 DOWNTO 0);ADDR=0110;OUTLINEDATA=0011&D2(7 DOWNTO 4);ADDR=1001;OUTLINEDATA=0011&D2(3 DOWNTO 0);ADDR=1010;OUTLINEDATA=0011&D3(7 DOWNTO 4);ADDR=1100;OUTLINEDATA=0011&D3(3 DOWNTO 0);ADDR=1101;OUTLINEDATA=01011000;ADDR=0010;OUTLINEDATA=01000100;ADDR=0011;OUTLINEDATA=01000010;ADDR=1001;OUTLINEDATA=01011010;ADDR=1010;OUTLINE NULL;END CASE;END PROCESS;图2、LCD程序生成图4.3键盘模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity PADTOKEY is port (CPIN,R :IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); ICOL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); OROW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY;architecture JGT of PADTOKEY is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL SROW : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CPCT : INTEGER RANGE 0 TO 255; SIGNAL CTDELAY: INTEGER RANGE 0 TO 511; SIGNAL CP:STD_LOGIC; BEGIN PROCESS(CPIN) BEGIN IF CPIN=1 AND CPIN EVENT THEN IF CPCT=255 THEN CPCT=0;CP= NOT CP; ELSE CPCT=CPCT+1; END IF; END IF; END PROCESS; PROCESS(CP,R) VARIABLE N:INTEGER RANGE 0 TO 12; BEGIN IF R=1 THEN S=S0;Y=0000000000000000;SROWSOROW=SROW;SSY(3 DOWNTO 0)Y(7 DOWNTO 4)Y(11 DOWNTO 8)Y(15 DOWNTO 12)NULL; END CASE; WHEN S3=IF N=12 THEN N:=0;S=S4;CTDELAY=0;SROW=1110; ELSE N:=N+4;S=S1;SROWIF CTDELAY=511 THEN S=S1;CTDELAY=0; ELSE CTDELAY=CTDELAY+1; END IF; END CASE;END IF;END PROCESS;END JGT;图3、键盘模块生成图4.4蜂鸣器模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity spea isport(cp,r:in std_logic; speakers:out std_logic );end spea;architecture jgt of spea issignal cpct:integer range 0 to 5; -GAIsignal speak:std_logic;beginprocess(cp,r)beginif r=0 then cpct=0;speak=0;elsif cp=1 and cp event then if cpct=5 then -GAI cpct=0;speak=not speak; else cpct=cpct+1; end if;end if;end process;process(speak)beginspeakers=speak;end process;end jgt;图4、蜂鸣器生成模块4.5模拟演示:1、复位信号R置1,各器件回到默认状态。正反转指示灯不亮,洗涤时间显示为00,步骤标号显示00;2、洗涤时间自动跳转为默认值30,步骤标号则跳转为01;3、选择设时洗涤模式,SET_TIME置1,步骤标号显示02。可按动SU,SD,GU,GD所对应的按钮分别控制洗涤时间的十位加一,十位减一,个位加一和个位减一。其中上限为99而下限为00,如大于上限则转为00,小于下限则转为99;4、信号START置1,步骤标号为03,进入注水状态,注水默认时间2秒后自动结束;5、进入洗涤状态,步骤标号为04。洗涤时间将没分钟减1,直到变为00并自动结束。在洗涤状态中,正反转灯的显示为:左灯亮3秒,中间灯亮1秒,右灯亮2秒,并如此循环下去;6、进入放水状态,步骤标号为05。直到模拟洗衣机桶底湿度传感器信号的FS_END置1,结束当前状态;7、进入甩干状态,步骤标号为06。甩干默认时间2秒后自动结束;8、进入结束状态,步骤标号为07。蜂鸣器鸣响2秒后停止,同时结束状态并

温馨提示

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

最新文档

评论

0/150

提交评论