洗衣机控制器课程设计报告书.docx

上传人:b****6 文档编号:15736266 上传时间:2023-07-07 格式:DOCX 页数:16 大小:108.37KB
下载 相关 举报
洗衣机控制器课程设计报告书.docx_第1页
第1页 / 共16页
洗衣机控制器课程设计报告书.docx_第2页
第2页 / 共16页
洗衣机控制器课程设计报告书.docx_第3页
第3页 / 共16页
洗衣机控制器课程设计报告书.docx_第4页
第4页 / 共16页
洗衣机控制器课程设计报告书.docx_第5页
第5页 / 共16页
洗衣机控制器课程设计报告书.docx_第6页
第6页 / 共16页
洗衣机控制器课程设计报告书.docx_第7页
第7页 / 共16页
洗衣机控制器课程设计报告书.docx_第8页
第8页 / 共16页
洗衣机控制器课程设计报告书.docx_第9页
第9页 / 共16页
洗衣机控制器课程设计报告书.docx_第10页
第10页 / 共16页
洗衣机控制器课程设计报告书.docx_第11页
第11页 / 共16页
洗衣机控制器课程设计报告书.docx_第12页
第12页 / 共16页
洗衣机控制器课程设计报告书.docx_第13页
第13页 / 共16页
洗衣机控制器课程设计报告书.docx_第14页
第14页 / 共16页
洗衣机控制器课程设计报告书.docx_第15页
第15页 / 共16页
洗衣机控制器课程设计报告书.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

洗衣机控制器课程设计报告书.docx

《洗衣机控制器课程设计报告书.docx》由会员分享,可在线阅读,更多相关《洗衣机控制器课程设计报告书.docx(16页珍藏版)》请在冰点文库上搜索。

洗衣机控制器课程设计报告书.docx

洗衣机控制器课程设计报告书

 

九江学院

课程设计

课程EDA技术课程设计

题目洗衣机控制器

院系电子信息学院

专业班级电子信息工程技术

学生姓名张翁生

学生学号37

指导教师高玉宝

 

 

一、设计要求与原理

设计一个洗衣机控制器,要求洗衣机有正转、反转、暂停三种状态。

设定洗衣机的工作时间,要洗衣机在工作时间内完成:

定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止,同时发出提示音。

基本要求:

1、设计一个电子定时器,控制洗衣机作如下运转:

定时启动正转20秒暂停10秒反转20秒暂停10秒定时未到回到“正转20秒暂停10秒……”,定时到则停止;

2、若定时到,则停机发出音响信号;

3、用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;

4、三只LED灯表示“正转”、“反转”、“暂停”三个状态。

二、洗衣机的工作过程

首先用电路控制三只LED显示洗衣机正转、反转、暂停三种状态。

然后用电子定时器控制洗衣机设定的工作时间,以及正传和反转运行时间的控制。

同时用两个数码管显示洗涤的预置时间(按分钟计数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;最后定时到则停止,同时用蜂鸣器发出提示音。

通过各种开关组成控制电路,使洗衣机实现程序运转。

直至结束为止。

 

三、各模块图

洗衣机控制电路由定时输入模块,电机输出模块,电机时间控制模块,数字显示电路,倒计时模块以及报警器模块组成。

 

图一

四、各模块的VHDL代码与仿真结果

1、输入定时模块,

此模块是为了实现希望让洗衣机工作多少个分钟,有两个数码管显示工作时间,所以可以不同要求输入要洗衣的时间,可以输入1~59分钟不等时间,人性化控制,与实际的洗衣机工作是一样的。

程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityshuruis

Port(shu:

instd_logic;

hshu:

instd_logic;

din:

instd_logic;

dout:

outstd_logic_vector(3downto0);

dout1:

outstd_logic_vector(3downto0));

endshuru;

architectureBehavioralofshuruis

signalcount:

std_logic_vector(3downto0);

signalcount1:

std_logic_vector(3downto0);

begin

process(shu,hshu,din)

begin

dout<=count;

dout1<=count1;

ifdin='0'then

dout<="1111";dout1<="1111";

elsifrising_edge(shu)then

ifcount="1001"then

count<="0000";

else

count<=count+1;

endif;

endif;

ifrising_edge(hshu)then

ifcount1="0110"then

count1<="0000";

else

count1<=count1+1;

endif;

endif;

endprocess;

endBehavioral;

仿真波形如下

 

2、产生1HZ频率的信号

此程序是将学校试验箱上提供的48MHZ的信号分频成1HZ频率的信号,这样可以一秒进行计数,程序很简单,如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfp48Mis

port(clk_48MHZ:

instd_logic;

clk_1HZ:

outstd_logic

);

endfp48M;

architecturebehavoffp48Mis

signalclk_1HZ_r:

std_logic;

signalcount:

std_logic_vector(24downto0);

begin

process(clk_48MHZ)

begin

ifclk_48MHZ'eventandclk_48MHZ='1'then

ifcount="1011011100011010111111111"then

count<=(others=>'0');

clk_1HZ_r<=notclk_1HZ_r;

elsecount<=count+1;

clk_1HZ<=clk_1HZ_r;

endif;

endif;

endprocess;

endbehav;

3、提供定时脉冲模块

此模块提供1分钟产生一个高电平和5秒产生一个高电平,这两个脉冲为后面的循环和控制60秒减一分钟有很多的作用,起到后面的链接作用,同时可以根据自己来设置各状态工作时间,这可以和后面的循环控制一起来控制,程序如:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitywashmachineis

Port(clk:

instd_logic;

c:

outstd_logic;

d:

outstd_logic);

endwashmachine;

architecturemiao20ofwashmachineis

signalcount:

std_logic_vector(2downto0);

signalshi:

integerrange0to60;

begin

process(clk)

begin

ifrising_edge(clk)then

ifshi=60then

shi<=0;c<='1';

elseshi<=shi+1;c<='0';

endif;

ifcount="100"then

count<="000";

d<='1';

else

count<=count+1;

d<='0';

endif;

endif;

endprocess;

endmiao20;

仿真波形如下:

4、循环控制模块

此模块是为了实现能够控制洗衣机正转、反转、暂停的功能,同时也可以和前一模块一起控制各个状态的工作时间。

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitydianjiis

Port(

cc:

instd_logic;

deng:

outstd_logic_vector(2downto0));

enddianji;

architecturediofdianjiis

signalcount:

std_logic_vector(3downto0);

signaldeng1:

std_logic_vector(2downto0);

begin

deng<=deng1;

process(cc)

begin

ifrising_edge(cc)then

ifcount="1010"then

count<="0000";

else

count<=count+1;

endif;

ifcount="0000"then

deng1<="011";

elsifcount="0100"then

deng1<="101";

elsifcount="0110"then

deng1<="110";

endif;

endif;

endprocess;

enddi;

仿真波形如下:

5、分钟的个位控制

根据课程设计要求,把工作状态及工作时间显示出来,按下KEY5键就可以显示工作时间的分钟个位显示在数码管上,可以根据洗衣不同要求设置同时可以控制分钟的十位时间,当个位分钟为0时下一个分钟个位脉冲过来分钟的十位就减1程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfen_lis

Port(jian:

instd_logic;

reset:

instd_logic;

din:

instd_logic_vector(3downto0);

dout:

outstd_logic_vector(3downto0);

c:

outstd_logic);

endfen_l;

architectureBehaveoffen_lis

signalcount:

std_logic_vector(3downto0);

begin

dout<=count;

process(jian,reset,din)

begin

ifreset='0'then

count<=din;

c<='0';

elsifrising_edge(jian)then

ifcount="0000"then

count<="1001";

c<='1';

else

count<=count-1;

c<='0';

endif;

endif;

endprocess;

endBehave;

仿真波形如下:

6、分钟的十位控制

根据课程设计要求,把工作状态及工作时间显示出来,按下KEY5键就可以显示工作时间的分钟十位显示在数码管上,可以根据洗衣不同要求设置,这和上面程序相似,当个位分钟为0时下一个分钟个位脉冲过来分钟的十位就减1程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfen_his

Port(jian:

instd_logic;

reset:

instd_logic;

din:

instd_logic_vector(3downto0);

dout:

outstd_logic_vector(3downto0);

c:

outstd_logic);

endfen_h;

architectureBehaveoffen_his

signalcount:

std_logic_vector(3downto0);

begin

dout<=count;

process(jian,reset,din)

begin

ifreset='0'then

count<=din;

c<='0';

elsifrising_edge(jian)then

ifcount="0000"then

count<="1001";

c<='1';

else

count<=count-1;

c<='0';

endif;

endif;

endprocess;

endBehave;

7、数码管显示模块

此模块是显示要洗衣的时间,这个时间是可以在前面的控制模块控制的,安下KEY5键就可以显示时间。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_Arith.ALL;

USEIEEE.STD_LOGIC_Unsigned.ALL;

ENTITYxianshi_ledIS

PORT(

clk_2k:

INSTD_LOGIC;

d:

INSTD_LOGIC_VECTOR(7DOWNTO0);--输入要显示的数据

dig:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);--数码管选择输出引脚

seg:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)--数码管段输出引脚

);

ENDENTITY;

ARCHITECTUREoneOFxianshi_ledIS

SIGNALseg_r:

STD_LOGIC_VECTOR(7DOWNTO0);--定义数码管输出寄存器

SIGNALdig_r:

STD_LOGIC_VECTOR(7DOWNTO0);--定义数码管选择输出寄存器

SIGNALdisp_dat:

STD_LOGIC_VECTOR(3DOWNTO0);--定义显示数据寄存器

SIGNALcount:

STD_LOGIC_VECTOR(2DOWNTO0);--定义计数寄存器

BEGIN

dig<=dig_r;

seg<=seg_r;

PROCESS(clk_2k)

BEGIN

IFRISING_EDGE(clk_2k)THEN

count<=count+1;

ENDIF;

ENDPROCESS;

PROCESS(clk_2k)

BEGIN

IFRISING_EDGE(clk_2k)THEN

CASEcountIS

WHEN"000"=>disp_dat<=d(7DOWNTO4);--第一个数码管

WHEN"001"=>disp_dat<=d(3DOWNTO0);--第二个数码管

whenothers=>null;

ENDCASE;

CASEcountIS--选择数码管显示位

WHEN"000"=>dig_r<="01111111";--选择第一个数码管显示

WHEN"001"=>dig_r<="10111111";--选择第二个数码管显示

whenothers=>null;

ENDCASE;

ENDIF;

ENDPROCESS;

PROCESS(disp_dat)

BEGIN

CASEdisp_datIS

WHENX"0"=>seg_r<=X"c0";--显示0

WHENX"1"=>seg_r<=X"f9";--显示1

WHENX"2"=>seg_r<=X"a4";--显示2

WHENX"3"=>seg_r<=X"b0";--显示3

WHENX"4"=>seg_r<=X"99";--显示4

WHENX"5"=>seg_r<=X"92";--显示5

WHENX"6"=>seg_r<=X"82";--显示6

WHENX"7"=>seg_r<=X"f8";--显示7

WHENX"8"=>seg_r<=X"80";--显示8

WHENX"9"=>seg_r<=X"90";--显示9

WHENX"a"=>seg_r<=X"88";--显示a

WHENX"b"=>seg_r<=X"83";--显示b

WHENX"c"=>seg_r<=X"c6";--显示c

WHENX"d"=>seg_r<=X"a1";--显示d

WHENX"e"=>seg_r<=X"86";--显示e

WHENX"f"=>seg_r<=X"8e";--显示f

ENDCASE;

ENDPROCESS;

END;

8、提供数码管工作频率模块

由于数码管要工作在2KHZ的频率信号下有所需要将试验箱48MHZ的信号分频分频成2KHZ,此程序和产生1HZ是一样的程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfp2kis

port(clk_48MHZ:

instd_logic;

clk_2KHZ:

outstd_logic

);

endfp2k;

architecturebehavoffp2kis

signalclk_2KHZ_r:

std_logic;

signalcount:

std_logic_vector(14downto0);

begin

process(clk_48MHZ)

begin

ifclk_48MHZ'eventandclk_48MHZ='1'then

ifcount="10111011011111"then

count<=(others=>'0');

clk_2KHZ_r<=notclk_2KHZ_r;

elsecount<=count+1;

clk_2KHZ<=clk_2KHZ_r;

endif;

endif;

endprocess;

endbehav;

五、将各个模块连接及其目标器件选择

将各个模块的VHDL语言生产原理图模块器件,将各个模块连接如下图:

六、实训总结

这次EDA课程设计虽然只有一个星期但是还是学到了很多东西,老师给我们很多的题目让我们自己选择一个做,我先看了下那几个题目,感觉自己可以尝试做几个,虽然老师说要我们去网上查资料看看网上是怎么写的,但是我还是自己写程序,一开始我做了拔河机,用了大概一天时间把程序写完,但是在试验箱上却不能完全实现,经过多次的修改,功能实现还是有点欠缺;之后我又做了交通灯和洗衣机(洗衣机做了两个版本),在实现功能上交通灯还是有点欠缺,就是一个方向的绿灯和黄灯在最后5秒不能切换,这个问题我请教过老师,老师给出了些建议,最后的洗衣机做了两个版本,就是在控制三个状态转换上有点不同,一个是一个模块完成的,另外一个是有两个20秒倒计时和10秒倒计时时完成,这两个思维都在实验上看到结果和预计的是一样的。

通过和老师的交流我认识到自己的不足,虽然这次课程设计我做出了几个设,但是还是有很多的不足,就拿数码管来说吧,其中的管脚DIG和SEG我就没有明白是什么意思,所以在和老师的交流过程中我意识到自己的硬件知识不足,以后要在这方面多努力。

这次课程设计激起我对EDA更多的兴趣,在以后的一定会投入更多的时间去学习。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

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

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2