数字电路实验报告 洗衣机控制器附代码及仿真波形.docx

上传人:b****3 文档编号:3901194 上传时间:2022-11-26 格式:DOCX 页数:13 大小:431.90KB
下载 相关 举报
数字电路实验报告 洗衣机控制器附代码及仿真波形.docx_第1页
第1页 / 共13页
数字电路实验报告 洗衣机控制器附代码及仿真波形.docx_第2页
第2页 / 共13页
数字电路实验报告 洗衣机控制器附代码及仿真波形.docx_第3页
第3页 / 共13页
数字电路实验报告 洗衣机控制器附代码及仿真波形.docx_第4页
第4页 / 共13页
数字电路实验报告 洗衣机控制器附代码及仿真波形.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数字电路实验报告 洗衣机控制器附代码及仿真波形.docx

《数字电路实验报告 洗衣机控制器附代码及仿真波形.docx》由会员分享,可在线阅读,更多相关《数字电路实验报告 洗衣机控制器附代码及仿真波形.docx(13页珍藏版)》请在冰豆网上搜索。

数字电路实验报告 洗衣机控制器附代码及仿真波形.docx

数字电路实验报告洗衣机控制器附代码及仿真波形

【实验任务】

●基本任务:

1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:

洗衣20秒,漂洗25秒,脱水15秒;

2.用一个按键实现洗衣程序的手动选择:

A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;

3.用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应提示使用者;

4.用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;

●提高要求:

1.三个过程的时间有多个选项供使用者选择。

2.可以预约洗衣时间。

3.自拟其它功能:

【分块设计】

【流程图】

【状态转移图】

【设计模块】

数码管代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYseg7IS

PORT(

start,en_app:

INSTD_LOGIC;

clk1000:

INSTD_LOGIC;

time_cnt:

ININTEGERRANGE0TO30;

app_time:

ININTEGERRANGE0TO5;

clr:

INSTD_LOGIC;

cat:

OUTSTD_LOGIC_VECTOR(5DOWNTO0);

seg:

OUTSTD_LOGIC_VECTOR(6DOWNTO0)

);

ENDseg7;

ARCHITECTUREbodyofseg7OFseg7IS

SIGNALtem:

INTEGERRANGE0TO1;

SIGNALnum:

INTEGERRANGE0TO9;

SIGNALcat0:

STD_LOGIC_VECTOR(5DOWNTO0);

BEGIN

PROCESS(clk1000)

BEGIN

IF(clk1000'EVENTANDclk1000='1')THEN

IFstart='1'THEN

CASEtemIS

WHEN0=>cat0<="111101";num<=INTEGER((time_cnt)MOD(10));tem<=tem+1;

WHEN1=>cat0<="111110";num<=INTEGER(time_cnt/10);tem<=0;

WHENOTHERS=>cat0<="111111";tem<=0;

ENDCASE;

cat<=cat0;

ELSE

IFen_app='1'THEN

CASEtemIS

WHEN0=>cat0<="111101";num<=INTEGER((app_time)MOD(10));tem<=tem+1;

WHEN1=>cat0<="111110";num<=INTEGER(app_time/10);tem<=0;

WHENOTHERS=>cat0<="111111";tem<=0;

ENDCASE;

cat<=cat0;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(num,clr)

BEGIN

IFclr='1'THEN

seg<="1111110";

ELSE

CASEnumIS

WHEN0=>seg<="1111110";

WHEN1=>seg<="0110000";

WHEN2=>seg<="1101101";

WHEN3=>seg<="1111001";

WHEN4=>seg<="0110011";

WHEN5=>seg<="1011011";

WHEN6=>seg<="1011111";

WHEN7=>seg<="1110000";

WHEN8=>seg<="1111111";

WHEN9=>seg<="1111011";

WHENothers=>seg<="0000000";

ENDCASE;

ENDIF;

ENDPROCESS;

ENDbodyofseg7;

数码管波形:

数码管的选通信号cat【0】cat【1】交替,使两位数码管交替点亮,因为人眼的延迟效果,造成同时点亮的感觉。

可以看到随着start的每一次高电平,工作状态指示灯led就会变一次数值,代表工作状态的改变,说明模式转换功能正常

选择模式代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYchoiceIS

PORT(nextt:

INSTD_LOGIC;

start:

INSTD_LOGIC;

s1,s2,s3:

OUTINTEGERRANGE0TO3;

led:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDchoice;

ARCHITECTUREbodyofchoiceOFchoiceIS

TYPEchoice_stateIS(A,B,C,D,E);

SIGNALcs:

choice_state;

BEGIN

P1:

PROCESS(nextt)

BEGIN

IF(nextt'EVENTANDnextt='1')THEN

IFstart='0'THEN

CASEcsIS

whenA=>s1<=1;s2<=0;s3<=0;led<="100";cs<=B;

whenB=>s1<=2;s2<=0;s3<=0;led<="010";cs<=C;

whenC=>s1<=3;s2<=0;s3<=0;led<="001";cs<=D;

whenD=>s1<=2;s2<=3;s3<=0;led<="011";cs<=E;

whenE=>s1<=1;s2<=2;s3<=3;led<="111";cs<=A;

whenothers=>null;

ENDCASE;

ENDIF;

ENDIF;

ENDPROCESSP1;

ENDbodyofchoice;

选择模式波形图

控制器代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcontrollerIS

PORT(

clk1s,pause:

INSTD_LOGIC;

start:

INSTD_LOGIC;

s1,s2,s3:

ININTEGERRANGE0TO3;

cl_beeper:

INSTD_LOGIC;

tim_out:

OUTINTEGERRANGE0TO30;

pause_show:

OUTSTD_LOGIC;

state_now:

OUTSTD_LOGIC_VECTOR(2DOWNTO0);

startbeeper:

OUTSTD_LOGIC

);

ENDcontroller;

ARCHITECTUREaOFcontrollerIS

SIGNALtim_tmp:

INTEGERRANGE0TO30;

SIGNALstate_over:

INTEGERRANGE0TO1;

SIGNALs_now,s_next,s_last:

INTEGERRANGE0TO3;

BEGIN

p1:

PROCESS(clk1s,start,cl_beeper,state_over,pause,s_now)

BEGIN

IF(clk1s'EVENTANDclk1s='1')THEN

CASEstartIS

WHEN'0'=>

state_over<=1;

s_now<=s1;

s_next<=s2;

s_last<=s3;

WHEN'1'=>

IFstate_over=1THEN

state_over<=0;

CASEs_nowIS

WHEN0=>

CASEcl_beeperIS

WHEN'1'=>startbeeper<='0';

WHENOTHERS=>startbeeper<='1';

ENDCASE;

tim_tmp<=0;state_now<="000";

WHEN1=>tim_tmp<=20;state_now<="100";

WHEN2=>tim_tmp<=25;state_now<="010";

WHEN3=>tim_tmp<=15;state_now<="001";

WHENOTHERS=>NULL;

ENDCASE;

ELSE

CASEpauseIS

WHEN'0'=>

pause_show<='0';

IFtim_tmp>0THEN

tim_out<=tim_tmp;

tim_tmp<=tim_tmp-1;

ELSE

tim_out<=0;

s_now<=s_next;

s_next<=s_last;

s_last<=0;

state_over<=1;

ENDIF;

WHEN'1'=>pause_show<='1';

WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

ENDPROCESS;

END;

控制器波形图:

分频器代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclk1000IS

PORT(

clkcl:

INSTD_LOGIC;

clk1000:

OUTSTD_LOGIC);

ENDclk1000;

ARCHITECTUREbodyofclk1000OFclk1000IS

SIGNALcount1:

INTEGERRANGE0TO499;

SIGNALbuf:

STD_LOGIC;

BEGIN

P1:

PROCESS(clkcl)

BEGIN

IF(clkcl'EVENTANDclkcl='1')THEN

IFcount1=499THEN

buf<=NOTbuf;clk1000<=buf;

ELSE

clk1000<=buf;

ENDIF;

count1<=count1+1;

ENDIF;

ENDPROCESSP1;

ENDbodyofclk1000;

分频模块波形:

【功能说明】

实现洗衣机洗涤,漂洗和脱水,持续时间分别为20秒,25秒和15秒。

用一个功能键完成不同模式的切换:

A.单洗涤;B.单漂洗;C.单脱水;D.漂洗和脱水;E.洗涤,漂洗和脱水全过程。

在所选择的程序完成之后,控制器处于停止状态。

一个拨码开关实现开始功能,另一个拨码开关实现暂停和继续洗衣的功能控制,暂停后继续洗衣能够回到暂停之前保留的状态。

用数码管以倒计时的方式显示当前状态的剩余时间。

而且每一种模式在选择的时候,其对应功能的数码灯就会点亮,而在工作的时候,其对应的数码灯就会进行有规则的闪烁,以表明正在进行的工作状态。

倒计时为0时蜂鸣器响起给予警报。

【故障分析】

1.通过按键开关选择工作模式,由于开始设计程序的时候没有过多的考虑到按键的毛刺和噪声问题,初次测试系统时,发现按键效果非常差,后来在网上查了些资料,加进了按键防抖防抖程序,按键效果好用多了,而且充分运用了拨码开关效果显著。

2.下载到电路板以后,发现状态指示灯显示异常。

当某工作状态结束以后,该状态指示灯没有熄灭,反而还在闪烁。

检查指示灯的信号并无错误。

后发现是与该信号想关联的时钟分频时没有分平均,有1的误差,结果导致此问题。

改正后问题解决。

3.下载后运行,时间倒计时为0后,蜂鸣器并没有给出报警,经多次调试仍无法解决,判定为电路板本身问题,换过电路板后运行成功且蜂鸣器给出报警。

【实验总结】

本次数电综合实验是以数电理论知识以及vhdl代码运用为基础,因为上学期做过相关的实验,本以为不会有太大的问题,结果由于相比去年的数电实验,实验难度跨度相对较大,而且vhdl以及数电理论知识已经抛到了脑后,由于实验安排比较晚已经接近期末,时间不够充裕,遇到了各种各样的问题,具体体现在了代码编写以及各模块接口的使用上。

硬件编程与之前我们学过的C语言不同。

最大的不同就是硬件语言中各段代码是并行执行的,因此之前软件编程的各种经验就不一定有用,甚至有时候还会起反作用。

还有就是调试时遇到的一些不是逻辑错误的问题,都是因为硬件语言的不同所造成的。

遇到这样的问题的时候我只能求助于同学和老师,并且去网上参考一些资料。

通过自己的学习,重新拾起了vhdl的用法和一些基本的数电理论知识。

对vhdl也有了更进一步的了解,一步步的实现编译成功,仿真成功到运行成功,这期间将数码管,led灯管脚几乎背在了脑子里面,从一个个问题的发现到一个个问题的解决,这期间是一次次的查阅资料,一次次的求助同学和老师,每一个问题的解决都是我不懈努力的结果,看着最后自己的劳动成果心中真是欣喜万分。

通过这次实验让我进一步理解了数电的基本理论知识,以及掌握vhdl的编程方法,将理论知识化为实践,亲手操作,独立思考解决问题,唯有亲身经历才能体会到其中的欣喜,只要开始就要咬着牙坚持下去,自己选择的路,跪着也要走完,当你回过头来的时候,你会发现曾经的付出和代价换回了如今的勇敢和自信,用知识武装自己,用勇气激励自己,只要肯相信自己,一切都会成功。

【参考文献】

《数字电路与逻辑设计实验教程》———北京邮电大学电路实验中心

《数字逻辑设计实验技术与EDA工具》———北京邮电大学

《数字电路EDA入门——VHDL程序实例集》———张亦华延明

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1