洗衣机试验报告_第1页
洗衣机试验报告_第2页
洗衣机试验报告_第3页
洗衣机试验报告_第4页
洗衣机试验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——洗衣机试验报告

数字电路与规律设计综合试验

试验报告

试验名称:基于CPLD的简易洗衣机控制器的设计与实现指导老师:班级:学号:班内序号:姓名:

2023.11.9

一.设计课题的任务要求

题目:基于CPLD的简易洗衣机控制器的设计与实现基本要求:

1、洗衣机的工作步骤为洗涤、漂洗和脱水三个过程,工作时间分别为:洗涤30秒(进水5秒,洗衣15秒,排水5秒,甩干5秒),漂洗25秒(进水5秒,漂洗10秒,排水5秒,甩干5秒),脱水15秒(排水5秒,甩干10秒);

2、用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;

3、用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程终止后,应有声音提醒使用者,并保持在中止状态,直至再次开始;

4、用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作状况,四种工作状况的动画显示要有区别且尽可能的形;

5、用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保存的状态。提高要求:

1、三个过程的时间有多个选项供使用者选择;2、可以预约洗衣时间;3、自拟其它功能;

二、系统设计

设计思路:

从系统总体要求出发,将设计任务分解为5类不同的功能模式,3种工作类型。基本功能描述洗衣机控制器可工作于五种模式下:单洗涤、单漂洗、单脱水、漂洗十脱水、洗涤十漂洗+脱水,由按键控制洗衣机控制器工作在任意一种模式,并显示出洗衣机的工作状态和剩余工作时间,在剩余时间终止后有报警声提醒使用者,并且可实现暂停洗衣和继续的功能。3种工作类型:洗涤、漂洗、脱水。

由此分析可将洗衣机控制器分为分频器模块、控制模块、倒计时模块、点阵模块、初始模式选择模块、报警模块、数码管显示模块等。

总体框图:

分块设计:

①分频器模块:利用分频模块将频率分频为500HZ、100HZ以及1HZ,分别用于不同模块。500HZ用于:数码管显示、扫描模块;100HZ用于:暂停按键、模式选择按键、开始按键;1HZ用于:蜂鸣器模块、点阵模块。

②倒计时模块:进行时间的倒计时,将减计数得到的剩余时间送给显示模块进行显示。

③点阵模块:通过不同的状态协同倒计时显示不同的点阵动画,

使洗

衣机使用者能一目了然的知道现在洗衣工作进行到哪一步骤。④初始模式选择模块:洗衣机使用者通过对模块选择按键的控制,选择指定模式,再通过开始及暂停键,控制洗衣机的工作与暂停。⑤报警模块:当状态转移模块送出终止信号时,控制蜂鸣器响5秒钟。⑥数码管显示模块:此模块的作用是洗衣模式显示以及该模式下的剩余时间显示。

三、仿真波形及波形分析

点阵:

防抖:

(6个时钟脉冲内,按下按键,只能产生一次按键脉冲信号)

分频:

模式选择:

数码管显示:

四、源程序

顶层文件:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYwashingISPORT(

clk:INSTD_LOGIC;clear:INSTD_LOGIC;

up,down,mode,sure,choice,pause,start:INSTD_LOGIC;--DISP:OUTSTD_LOGIC_VECTOR(7DOWNTO0);beep:OUTSTD_LOGIC;

LED1:OUTSTD_LOGIC_VECTOR(4DOWNTO0);LED2:OUTSTD_LOGIC_VECTOR(2DOWNTO0);CAT:OUTSTD_LOGIC_VECTOR(5DOWNTO0);row:OUTSTD_LOGIC_VECTOR(7DOWNTO0);colg:OUTSTD_LOGIC_VECTOR(7DOWNTO0);colr:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDwashing;

ARCHITECTUREbehaveOFwashingIS

--clk_500,clk_1,clk_100分别对应500HZ信号,1HZ信号,100HZ信号--

--sure_tmp:数字钟模式下的标志信号,1表示数字钟开始,0表示暂停--

--pause_tmp:开始暂停的标志信号,1开始0暂停----choose_tmp:对应当前被选中的数码管--

--h_1,h_2,m_1,m_2,s_1,s_2:用来保存在数字钟模式下的时分秒----hx_1,hx_2,mx_1,mx_2,sx_1,sx_2:用来保存在洗衣漂洗脱水等模式下的时间--

--H1,H2,M1,M2,S1,S2:对应从左到右6位数码管的每一位----model_tmp:对应当前模式--

--beep_flag:蜂鸣器是否响了5秒的标志信号--

--cl_beeper:cl_beeper的0、1决定beep_flag的1、0--

SIGNALclk_500,clk_1,clk_100,sure_tmp:STD_LOGIC;SIGNALpause_tmp:STD_LOGIC:='1';--SIGNALchoice_tmp:INTEGERRANGE0TO2;SIGNALh_1:INTEGERRANGE0TO3;SIGNALm_1,s_1:INTEGERRANGE0TO6;SIGNALh_2,m_2,s_2:INTEGERRANGE0TO9;SIGNALH1,H2:INTEGERRANGE0TO9;

SIGNALM1,S1,M2,S2:INTEGERRANGE0TO9;SIGNALmode_tmp:INTEGERRANGE0TO5;SIGNALmode_m:INTEGERRANGE0TO5;SIGNALbeep_flag:STD_LOGIC;SIGNALcl_beeper:STD_LOGIC;

SIGNALstate:INTEGERRANGE0TO3;指示洗衣过程SIGNALarr_mode:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALnum1:INTEGERRANGE0TO50:=30;SHUZIKONGZHISIGNALnum2:INTEGERRANGE0TO50:=25;SIGNALnum3:INTEGERRANGE0TO50:=15;

SIGNALde1:INTEGERRANGE0TO30:=15;--洗涤时洗衣时间SIGNALde2:INTEGERRANGE0TO30:=10;--漂洗时洗衣时间SIGNALde3:INTEGERRANGE0TO30:=10;--甩干时脱水时间SIGNALflag:INTEGERRANGE0TO1;

SIGNALstart_tmp:INTEGERRANGE0TO1;--开始标志

COMPONENTCLOCKPORT(

clear:INSTD_LOGIC;

clk_1,up,down,sure_tmp,mode:INSTD_LOGIC;mode_tmp:ININTEGERRANGE0TO5;h_1:OUTINTEGERRANGE0TO9;

h_2:OUTINTEGERRANGE0TO9;m_1,s_1:OUTINTEGERRANGE0TO9;m_2,s_2:OUTINTEGERRANGE0TO9;

flag:OUTINTEGERRANGE0TO1;--倒计时终止标志choice_tmp:ININTEGERRANGE0TO2);ENDCOMPONENT;

COMPONENTset_surePORT(

sure,clk_100:INSTD_LOGIC;--sure是数字钟模式下的确认按钮

sure_tmp:OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTclk_divPORT(

clear,clk:INSTD_LOGIC;

clk_500,clk_1,clk_100:OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTSHOWPORT(

clk_500:INSTD_LOGIC;clear:INSTD_LOGIC;H1:ININTEGERRANGE0TO9;H2:ININTEGERRANGE0TO9;M1,S1:ININTEGERRANGE0TO9;M2,S2:ININTEGERRANGE0TO9;CAT:OUTSTD_LOGIC_VECTOR(5DOWNTO0);DISP:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

COMPONENTset_pausePORT(

clear,pause,clk_100:INSTD_LOGIC;pause_tmp:OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTset_modePORT(

mode,clear,clk_100:INSTD_LOGIC;choice:INSTD_LOGIC;

mode_tmp:OUTINTEGERRANGE0TO5;LED1:OUTSTD_LOGIC_VECTOR(4DOWNTO0);flag:ININTEGERRANGE0TO1;choice_tmp:OUTINTEGERRANGE0TO2);

ENDCOMPONENT;

COMPONENTset_beep--SET_BEEPPORT(clk_1,clk_100:INSTD_LOGIC;mode:INSTD_LOGIC;clk_500:INSTD_LOGIC;beep_flag:INSTD_LOGIC;cl_beep:OUTSTD_LOGIC;beep:OUTSTD_LOGIC);ENDCOMPONENT;

COMPONENTset_ledPORT(

clear,clk_1:INSTD_LOGIC;state:ININTEGERRANGE0TO3;

led_out:OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDCOMPONENT;

COMPONENTset_arrayPORT(

clear,clk_1,clk_500:INSTD_LOGIC;

arr_mode:INSTD_LOGIC_VECTOR(2DOWNTO0);四种状态row:OUTSTD_LOGIC_VECTOR(7DOWNTO0);colg:OUTSTD_LOGIC_VECTOR(7DOWNTO0);colr:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENT;

COMPONENTset_startPORT(

start,clk_100,mode:INSTD_LOGIC;flag:ININTEGERRANGE0TO1;start_tmp:OUTINTEGERRANGE0TO1);

ENDCOMPONENT;

PORTMAPBEGINu1:CLOCK

PORT

MAP(clear=clear,clk_1=clk_1,up=up,down=down,sure_tmp=sure_tmp,mode=mode,mode_tmp=mode_tmp,

h_1=h_1,h_2=h_2,m_1=m_1,m_2=m_2,s_1=s_1,s_2=s_2,choice_tmp=choice_tmp,flag=flag);--u2:set_sure

MAP(clk_100=clk_100,sure=sure,sure_tmp=sure_tmp);u3:clk_div

PORTPORT

MAP(clear=clear,clk=clk,clk_500=clk_500,clk_1=clk_1,clk_100=clk_100);u4:SHOW

PORT

MAP(clk_500=clk_500,clear=clear,H1=H1,H2=H2,M1=M1,M2=M2,S1=S1,

S2=S2,CAT=CAT,DISP=DISP);u5:set_pause

PORT

MAP(clk_100=clk_100,clear=clear,pause=pause,pause_tmp=pause_tmp);u6:set_mode

PORT

MAP(clk_100=clk_100,mode=mode,clear=clear,choice=choice

,

LED1=LED1,flag=flag,

choice_tmp=choice_tmp,mode_tmp=mode_tmp);u7:set_beep

PORT

MAP(beep_flag=beep_flag,clk_1=clk_1,clk_100=clk_100,mode=mode,

clk_500=clk_500,cl_beep=cl_beeper,beep=beep);--u8:set_led

PORT

MAP(clk_1=clk_1,clear=clear,state=state,led_out=LED2);u9:set_array

MAP(clear=clear,clk_1=clk_1,clk_500=clk_500,

arr_mode=arr_mode,row=row,colr=colr,colg=colg);u10:set_start

PORTPORT

MAP(start=start,clk_100=clk_100,mode=mode,start_tmp=start_tmp,flag=flag);倒计时:

PROCESS(clear,clk,up,down,clk_1)BEGIN

IFclear='1'THEN

H1=0;H2=0;M1=0;M2=0;S1=0;S2=0;num1=30;num2=25;num3=15;

state=3;arr_mode=000;de1=15;de2=10;de3=10;ELSIF(mode='1')THEN

num1=30;num2=25;num3=15;state=3;arr_mode=000;ELSIF(clk_1'eventANDclk_1='1')THEN

CASEmode_tmpIS

0,CLOCKMODEWHEN

0=H1=h_1;H2=h_2;M1=m_1;M2=m_2;S1=s_1;S2=s_2;1.单洗衣模式WHEN1=H1=num1/10;H2=(num1)mod(10);IF(start_tmp=1)THENIFpause_tmp='0'THEN

state=0;xiyiarr_mode=001;

IF(num1=10+de1)THENarr_mode=010;IF(num1=10)THENarr_mode=011;IF(num1=5)THEN

arr_mode=100;ENDIF;ENDIF;ENDIF;IF(num1=0)THEN

state=3;终止arr_mode=000;CASEcl_beeperISWHEN'1'=beep_flag='0';WHENOTHERS=beep_flag='1';ENDCASE;ELSE

num1=num1-1;ENDIF;ENDIF;ELSIFup='1'THEN

num1=num1+1;de1=de1+1;

ELSIFdown='1'THEN--暂停洗衣,down高电平调时,实现减1--

IF(num1/=0)THEN

num1=num1-1;de1=de1-1;ENDIF;

ELSENULL;ENDIF;

2.单漂洗模式WHEN2=H1=0;H2=0;M1=num2/10;M2=(num2)mod(10);IF(start_tmp=1)THEN

IFpause_tmp='0'THEN--开始漂洗,倒计时--state=1;

arr_mode=001;piaoxiIF(num2=10+de2)THENarr_mode=010;IF(num2=10)THENarr_mode=011;IF(num2=5)THENarr_mode=100;ENDIF;ENDIF;ENDIF;IF(num2=0)THEN

state=3;终止

arr_mode=000;CASEcl_beeperISWHEN'1'=beep_flag='0';WHENOTHERS=beep_flag='1';ENDCASE;ELSE

num2=num2-1;ENDIF;ENDIF;

ELSIFup='1'THEN--暂停漂洗,up高电平调时,实现加1--

num2=num2+1;de2=de2+1;

ELSIFdown='1'THEN--暂停漂洗,down高电平调时,实现减1--

IF(num2/=0)THEN

num2=num2-1;de2=de2-1;ENDIF;ELSENULL;

温馨提示

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

评论

0/150

提交评论