数字电路实验 洗衣机程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;