数字电路实验 洗衣机程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1

数字电路与逻辑设计实验报告

题目: 洗衣机控制器设计

2

一、洗衣机控制器要求

设计制作一个全自动洗衣机的控制器:

_ 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20 秒,漂洗30 秒,脱水15 秒;

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

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

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

_ 选做:三个过程的时间有多个选项供使用者选择。 _ 选做:可以预约洗衣时间。 _ 选做:自拟其它功能。

二、系统设计基本思想

电路由模式选择、计数器、报警模块以及译码驱动电路和数字显示电路等模块组成。 1、模式选择模块

五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。 2、减计数计数器模块计数器

洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计

数。计时单位为一秒钟。

3、译码和数码显示电路

译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。显示器件选用LED 七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。 4、报警模块

当系统运行到“报警”状态时,蜂鸣器将会报警,时间为5 秒。 4、分频器模块

设计一个大小合适的分频器使得系统能够正确的实现一秒的计时。

三、总体设计图以及转移图

流程图示:

3

状态选择

开始信号输入

变量A 为1

YES

NO

进行洗涤

变量B 为1

YES

NO

进行漂洗

变量C 为1

YES

进行脱水

NO

完成洗衣后报警提示

完成

4

总体逻辑设计图:

状态转移图示:

控制器

分频器

OSC

时间计数器

洗涤

漂洗

脱水

译码

时间显示

Clk

Clk1

Clk2

T15 T20 T2

Cnt clr 报警

Pause

状态选择 译码

5

管脚设计图:

WAIT

A =’1’

进行洗涤

进行漂洗

A =’0’ B=‘1’

B =’0’

B =’1’

进行脱水

A =’0’ B=‘0’

C =’1’

C =’0’

完成洗衣报警提示

仿真情况:

6

简要说明:本次仿真执行的是第五个状态即洗涤、漂洗和脱水全过程。通过此仿真可以

7

发现当输出选择模式信号change 时,洗衣机模式开始发生变化。输入第一个change 信号的时候进入单洗涤状态,输入第二个change 信号进入单漂洗状态,输入第三个change 信号进入了单脱水的状态,输入第四个change 信号进入了脱水和漂洗的状态,当输入最后一个change 信号的时候进入洗涤、漂洗和脱水的全状态。而在选择每个状态的同时时间信号(q[0]、q[1]、q[2]、q[3]、q[4]、q[5]、q[6])也发生变化,显示出每个状态时的时间。而设定的led 灯(cat0、cat1)则依次闪亮。当start 开始后change 信号不再起作用,而系统进入了运行状态,时间开始逐秒变化。当程序最终运行结束后,进入报警状态,sound 开始显示为高电平,而时间均为0。

(特别说明:由于本实验分2次去做,管脚设定的时候进行了新建工程,代码粘贴过去的,实体名字取得和第二周验收时候不一致,不是其他原因。)

四、代码示例

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; ENTITY xiyiji IS PORT ( START: IN STD_LOGIC;

PAUSE: IN STD_LOGIC; --------暂停信号 CLOCK: IN STD_LOGIC;

Q: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); ----数码管显示信号

CAT : OUT

STD_LOGIC_VECTOR(5 DOWNTO 0) ----数码管选通信号

);

END xiyiji;

ARCHITECTURE washer OF xiyiji IS SIGNAL STATE: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL MODE: STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL TEMP: INTEGER RANGE 45 DOWNTO 0; -------时间中间变量 SIGNAL TIME: INTEGER RANGE 60 DOWNTO 0; -------倒计时时间 SIGNAL TMP: INTEGER RANGE 999 DOWNTO 0; -------分频变量 SIGNAL MA: INTEGER RANGE 9 DOWNTO 0; -------数码管译码变量

SIGNAL CLK: STD_LOGIC; ------分频时钟输出

BEGIN PROCESS(CLOCK)

BEGIN IF (CLOCK'EVENT AND CLOCK='1') THEN ----分频模块 TMP<=TMP + 1; IF (TMP=999) THEN TMP<=0;

CLK<= NOT CLK;

END IF;

END IF;

相关文档
最新文档