版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未成年人保护法测试题及答案
- 铁路安全知识题库及答案
- 水工闸门运行工技能鉴定(水工闸门操作知识)考试题库含答案
- 食品安全法考试试题题库及答案(食品生产处)
- 2026年山东省拔尖选调面试真题及答案解析
- 2026年农业社会化服务指导笔试试题(含答案)
- 小学心理健康教育小学主题班会课件
- 电影行业导演编剧组负责人绩效考评表
- 2026年采样技术员招聘考试试卷
- 2026年安全负责人招聘面试试题
- 交警执法培训课件
- 小儿感染性发热护理查房
- 2025年中考数学复习:无刻度直尺作图
- (高清版)DG∕TJ 08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- 护理查房特发性突聋
- 2023年西双版纳州景洪市教育体育局选调教师考试真题
- DB43-T 262-2024 住宅室内装饰装修工程质量验收规范
- 2023年内蒙古自治区招聘事业单位人员考试真题及答案
- 盘扣式钢管模板支撑架验收表
- 关于会计的英文词汇
- 智慧城市智慧社区网格化管理平台解决方案
评论
0/150
提交评论