数字逻辑电路课程设计全自动洗衣机控制器的设计.docx

上传人:b****4 文档编号:26994439 上传时间:2023-06-24 格式:DOCX 页数:13 大小:50.42KB
下载 相关 举报
数字逻辑电路课程设计全自动洗衣机控制器的设计.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

数字逻辑电路课程设计全自动洗衣机控制器的设计

 

数字逻辑电路课程设计

 

设计题目全自动洗衣机控制器的设计

 

姓名

学号

专业

班级

完成日期

 

一、实验目的…………………………………………………………………3

二、设计题目与思路…………………………………………………………3

三、总体方案的设计与选择…………………………………………………4

四、使用元件…………………………………………………………………5

五、分析与心得………………………………………………………………5

六、附件一:

实验代码………………………………………………………5

 

一、实验目的

1.进一步掌握数字电路课程所学的理论知识。

2.了解数字电路设计的基本思想和方法,学会科学分析和解决问题。

3.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。

4.培养认真严谨的工作作风和实事求是的工作态度。

二、设计题目与思路

本次数字电路课程设计我选择的题目是“全自动洗衣机控制器”。

这个系统的主要功能是:

1.设计一个全自动洗衣机控制器电路,实现对洗衣机的全自动控制。

根据全自动洗衣机的控制原理设计一个控制电路,使之能够控制全自动洗衣机完成整个工作过程。

洗衣机工作过程如下:

当按下复位按钮时,洗衣机上电,控制电路复位到初始状态(默认水位为“中”);使用者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:

进水阀门打开,开始上水,并根据水位设置(高、中、低、少)历时不同的时间timeadd(8s、7s、6s、5s);然后进水阀门关闭,电机开始运转,开始洗衣过程,并历时9s;然后电机停止运转,排水阀门打开,开始排水,并根据水位设置(高、中、低、少)历时不同的时间timedrain(7s、6s、5s、4s);然后排水阀门关闭,进水阀门打开,开始第二次上水,并历时timeadd……当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束。

洗衣机工作过程简记如下:

空闲(idle)→第一次加水(water1)7s→洗衣(wash)9s→第一次排水(drain1)6s→第二次加水(water2)7s→漂洗(rinse)9s→第二次排水(drain2)6s→甩干(dry)5s→蜂鸣15s

2、控制器只要送出对应的控制信号就可以了。

这些控制信号控制的继电器不需要购买。

3、用开关启动洗衣机,数码管动态显示剩余时间,发光二极管点亮或停止,表示电机的运动规律。

 

三、总体方案的设计与选择

1.总体方案的设计

经过分析问题及初步的整体思考,拟定以下方案:

总体电路共分三大块。

第一块实现洗衣机运行过程控制;第二块实现花洗衣机水位控制;第三块实现数码管状态显示。

主体框图如下:

四、使用元件

1.设计所需的元件:

TDS系列数字电路实验系统-----------------------------------------1套;

ISP系统可编程器件以及集成电路--------------------------------------1套;

PC计算机-----------------------------------------------------------1台;

实验板一个;

万用表一个;

导线若干;

 

五、分析与心得

这次课程设计对我来说是一项很大的挑战,看到题目后几乎没有思路,翻阅教材,看了下自动洗衣机那张的讲解,有了眉目,但是设计的内容过于庞杂,很难下手。

这时候,我选择从已有的程序着手,先看懂,然后和同学讨论思路,最后形成了这个作业。

做仿真波形的时候,就是验证结论的时候,过程还算顺利。

通过这次作业,掌握了从没接触过的VHDL语言,加强了动手能力,发现了学会查阅资料的重要性,受益匪浅。

 

附件:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYtestIS

PORT(clk:

INSTD_LOGIC;--500HZ信号,用于扫描数码管--

clear:

INSTD_LOGIC;--复位信号--

start:

INSTD_LOGIC;--开始暂停--

model1:

INSTD_LOGIC_VECTOR(3DOWNTO0);--模式控制--

--w:

OUTSTD_LOGIC;

m:

OUTSTD_LOGIC;

--d:

OUTSTD_LOGIC;

v:

OUTSTD_LOGIC;

SDISP:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);--输出水位--

ADISP:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

DISP:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)--控制数码管显示的数字的信号--

);

ENDtest;

ARCHITECTUREaOFtestIS

SIGNALwater1:

INTEGERRANGE0TO1;

SIGNALwash:

INTEGERRANGE0TO1;

SIGNALdrain1:

INTEGERRANGE0TO1;

SIGNALwater2:

INTEGERRANGE0TO1;

SIGNALrains:

INTEGERRANGE0TO1;

SIGNALdrain2:

INTEGERRANGE0TO1;

SIGNALdry:

INTEGERRANGE0TO1;

SIGNALbeep:

INTEGERRANGE0TO1;

SIGNALmodel:

INTEGERRANGE0TO7;

SIGNALcount:

INTEGERRANGE0TO9;--模值为9的计数器--

BEGIN

 

--water1!

!

!

!

!

!

!

!

!

!

!

--

p1:

PROCESS(clk,clear,start)

VARIABLEshuiwei:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFclear='1'THEN

model<=0;

shuiwei:

="0010";

v<='0';

m<='0';

count<=0;

water1<=0;

wash<=0;

drain1<=0;

water2<=0;

rains<=0;

drain2<=0;

dry<=0;

beep<=0;

ADISP<="0000";

ELSIFclk'eventANDclk='1'ANDstart='1'THEN

water1<=1;

--ADISP<="0001";

IF(water1=1)THENADISP<="0000";

--IFshuiwei=1;

--count<=7;

shuiwei(3downto0):

=model1;

caseshuiweiis

WHEN"0000"=>count<=4;--0

WHEN"0001"=>count<=5;

WHEN"0010"=>count<=7;

WHEN"0011"=>count<=8;

WHENOTHERS=>count<=7;

ENDcase;

SDISP<=shuiwei;

--WHEN1=>SDISP<="0001";--1

--WHEN2=>SDISP<="0010";--2

--WHEN3=>SDISP<="0011";--3

--WHEN4=>SDISP<="0100";--4

--WHENOTHERS=>SDISP<="0000";--0

v<='0';

m<='0';

--ADISP<="0001";

--w<='1';

--m<='0';

--d<='0';

--IF(w<='1')THENm<='0';d<='0';ENDIF;

IF(count=0)THENwash<=1;water1<=0;

ELSEcount<=count-1;ADISP<="0000";

ENDIF;

ENDIF;

---wash!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(wash=1)THEN

count<=9;water1<=0;

ADISP<="0001";

v<='0';m<='0';

--w<='0';

--m<='1';

--d<='0';

--IF(m<='1')THENw<='0';d<='0';ENDIF;

IF(count=0)THENdrain1<=1;wash<=0;

ELSEcount<=count-1;ADISP<="0001";

ENDIF;

ENDIF;

---drain1!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(drain1=1)THEN--ADISP<="0011";

count<=6;wash<=0;

v<='0';m<='1';

--w<='0';

--m<='0';

--d<='1';

--IF(d<='1')THENm<='0';w<='0';ENDIF;

IF(count=0)THENwater2<=1;drain1<=0;

ELSEcount<=count-1;ADISP<="0010";

ENDIF;

ENDIF;

---water2!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(water2=1)THEN

count<=7;drain1<=0;

ADISP<="0011";

v<='0';m<='0';

--w<='1';

--m<='0';

--d<='0';

IF(count=0)THENrains<=1;water2<=0;

ELSEcount<=count-1;ADISP<="0011";

ENDIF;

ENDIF;

---rinse!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(rains=1)THEN

count<=9;

ADISP<="0100";

v<='0';m<='0';

--w<='1';

--m<='0';

--d<='0';

IF(count=0)THENdrain2<=1;rains<=0;

ELSEcount<=count-1;ADISP<="0100";

ENDIF;

ENDIF;

---drain2!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(drain2=1)THEN

count<=6;

ADISP<="0101";

v<='0';m<='0';

--w<='0';

--m<='0';

--d<='1';

IF(count=0)THENdry<=1;drain2<=0;

ELSEcount<=count-1;ADISP<="0101";

ENDIF;

ENDIF;

---dry!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(dry=1)THEN

count<=1;

ADISP<="0110";

v<='0';m<='0';

--w<='0';

--m<='1';

--d<='0';

IF(count=0)THENbeep<=1;dry<=0;

ELSEcount<=count-1;ADISP<="0110";

ENDIF;

ENDIF;

---beep!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

-

IF(beep=1)THEN

--VARIABLEa:

integer:

=0;

--L1:

LOOP

count<=0;

ADISP<="0111";

v<='1';m<='1';

IF(model=2)THEN

v<='0';m<='0';ADISP<="0000";

ELSEmodel<=model+1;

--ENDloopL1;

ENDIF;

ENDIF;

ENDIF;

ENDPROCESSp1;

 

 

--SIGNALdisp_tmp:

INTEGERRANGE0TO9;--从0到9,显示在数码管上的数字--

--BEGIN

--p1:

PROCESS(clk,clear)--500HZ扫描信号控制计数器当前值--

--BEGIN

--IFclear='1'THEN

--count<=0;

--ELSIFclk'eventANDclk='1'THEN

--IF(count=0)THENcount<=9;

--ELSEcount<=count-1;

--ENDIF;

--ENDIF;

--ENDPROCESSp1;

 

p2:

PROCESS(count)--根据disp_tmp的值显示对应的数字--

BEGIN

CASEcountIS

WHEN0=>DISP<="0000";--0

WHEN1=>DISP<="0001";--1

WHEN2=>DISP<="0010";--2

WHEN3=>DISP<="0011";--3

WHEN4=>DISP<="0100";--4

WHEN5=>DISP<="0101";--5

WHEN6=>DISP<="0110";--6

WHEN7=>DISP<="0111";--7

WHEN8=>DISP<="1000";--8

WHEN9=>DISP<="1001";--9

WHENOTHERS=>DISP<="0000";--0

ENDCASE;

ENDPROCESSp2;

 

ENDa;

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

当前位置:首页 > 表格模板 > 合同协议

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

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