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

上传人:牧羊曲112 文档编号:3559036 上传时间:2023-03-13 格式:DOCX 页数:14 大小:41.84KB
返回 下载 相关 举报
数字电路实验 洗衣机程序设计.docx_第1页
第1页 / 共14页
数字电路实验 洗衣机程序设计.docx_第2页
第2页 / 共14页
数字电路实验 洗衣机程序设计.docx_第3页
第3页 / 共14页
数字电路实验 洗衣机程序设计.docx_第4页
第4页 / 共14页
数字电路实验 洗衣机程序设计.docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数字电路实验 洗衣机程序设计.docx》由会员分享,可在线阅读,更多相关《数字电路实验 洗衣机程序设计.docx(14页珍藏版)》请在三一办公上搜索。

1、数字电路实验 洗衣机程序设计数字电路与逻辑设计实验报告 题目: 洗衣机控制器设计 1 一、洗衣机控制器要求 设计制作一个全自动洗衣机的控制器: _ 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20 秒,漂洗30 秒,脱水15 秒; _ 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水; D、漂洗和脱水;E、洗涤、漂洗和脱水全过程; _ 用显示器件显示洗衣机的工作状态,并倒计时显示每个 状态的工作时间,全部过程结束后,应提示使用者; _ 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前 保留的状态; _ 选做:三个过程的时间有多个选项供

2、使用者选择。 _ 选做:可以预约洗衣时间。 _ 选做:自拟其它功能。 二、系统设计基本思想 电路由模式选择、计数器、报警模块以及译码驱动电路和数字显示电路等模块组成。 1、模式选择模块 五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。 2、减计数计数器模块计数器 洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计2 数。计时单位为一秒钟。 3、译码和数码显示电路 译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。显示器件选用LED 七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。 4、报警模块 当系

3、统运行到“报警”状态时,蜂鸣器将会报警,时间为5 秒。 4、分频器模块 设计一个大小合适的分频器使得系统能够正确的实现一秒的计时。 三、总体设计图以及转移图 流程图示: 状态选择 开始信号输入 变量A为1 YES 进行洗涤 变量B为1 YES 进行漂洗 变量C为1 YES 进行脱水 完成洗衣后报警提示 完成 NO NO NO 3 总体逻辑设计图: 报警 洗涤 漂洗 脱水 时间显示 译码 T15 T20 T2状态选择 译码 控制器 Clk1时间计数器 Pause Clk Cnt clr Clk2 OSC 分频器 状态转移图示: 4 WAIT A1 B1 进行洗涤 A0 B=1 进行漂洗 A0 B

4、=0 进行脱水 C0 B0 完成洗衣报警提示 C1 管脚设计图: 5 仿真情况: 6 简要说明:本次仿真执行的是第五个状态即洗涤、漂洗和脱水全过程。通过此仿真可以发现当输出选择模式信号change时,洗衣机模式开始发生变化。输入第一个change信号的时候进入单洗涤状态,输入第二个change信号进入单漂洗状态,输入第三个change信号进入了单脱水的状态,输入第四个change信号进入了脱水和漂洗的状态,当输入最后一个change信号的时候进入洗涤、漂洗和脱水的全状态。而在选择每个状态的同时时间信号也发生变化,显示出每个状态时的时间。而设定的led灯则依次闪亮。当start开始后change

5、信号不再起作用,而系统进入了运行状态,时间开始逐秒变化。当程序最终运行结束后,进入报警状态,sound开始显示为高电平,而时间均为0。 四、代码示例 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY xiyiji IS PORT ( ); END xiyiji; ARCHITECTURE washer OF xiyiji IS SIGNAL STATE: STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL MODE: STD_LOGIC_VECTOR(2 DOWNTO 0); START: IN STD_LOGIC; PA

6、USE: IN STD_LOGIC; CLOCK: IN STD_LOGIC; -暂停信号 7 Q: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -数码管显示信号 CAT : OUT STD_LOGIC_VECTOR(5 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: INTEGE

7、R RANGE 9 DOWNTO 0; -数码管译码变量 SIGNAL CLK: STD_LOGIC; -分频时钟输出 BEGIN PROCESS(CLOCK) BEGIN IF (CLOCKEVENT AND CLOCK=1) THEN -分频模块 TMP=TMP + 1; IF (TMP=999) THEN TMP=0; CLKMODEMODEMODEMODEMODEMODE=000; END CASE; END IF; STATE = MODE; -选择洗衣模式 BUZZER TEMP = 0 ; TIME TEMP = 0 ; TIME TEMP = 0 ; TIME TEMP = 2

8、5 ; TIME TEMP = 40 ; TIME TEMP = 0 ; TIME TEMP= 0 ; TIME= 0; END CASE ; ELSE IF ( PAUSE = 0) THEN -设置暂停信号 IF ( CLKEVENT AND CLK = 1 AND TIME/=0) THEN TIME = TIME - 1 ; -时间自减 IF ( TIME=1 ) THEN STATE =000; BUZZERSTATE = 110; TEMP STATE = 100; 8 TEMP TEMP = 0 ; STATE = 000; END CASE; END IF; END IF; E

9、ND IF; END IF; MODEEND = STATE; -中间变量赋值给结果变量 END PROCESS; PROCESS (CLOCK,TIME) BEGIN IF (CLOCK=1) THEN -提取十位数 CAT q q q q q q q q q q modemodemodemodemodemode=000; end case; 2、减计数计数器模块计数器 洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计数。计时单位为一秒钟。首先,由于需要数码管的显示,又要实现单位为一秒钟的倒计时所以必要对于系统时钟的分频器。主要过程是设计一个总的时间变量称之为

10、TIME,每个时钟上升沿一到就对此变量减一,如此首先在系统内部实现时间的自减。自减是在没有暂停信号且开始信号为一的情况下进行的。另外我设计了一个中间变量,在不同的状态对其进行不同的赋值,并使其与我设计的总时间变量进行比较,然后将比较结果送给模式的另一个中间变量即可实现洗衣过程中的状态变化显示。减计数器及其和中间量的比较的简要代码如下: if ( pause = 0) then if ( clkevent and clk = 1 and time/=0) then time = time - 1 ; if ( time=1 ) then state =000;buzzerstate = 110;

11、temp state = 100;temp temp = 0 ;state = 000; end case; 10 译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。显示器件选用LED 七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。首先,由于需要数码管的显示,又要实现单位为一秒钟的倒计时所以必要对于系统时钟的分频器。基于上个学期进行的基础数字电路vhdl学习,分频器是十分基础的模块易于设计。又因为需要通过两位数码管显示当前倒计时的时间,同时当前倒计时的时间是两位数所以利用倒计时时间TIME除以10可以得到时间的十位,再用其MOD十即可得到时间的个位

12、,然后将要显示的数与七段数码管的七个管角相匹配,最后将这两个数分别赋给两个数码管并使两个数码管交替显示就实现了对于倒计时的译码电路,以下是译码和数码显示电路的简要代码: if (clock=1) then ma=time/10; cat=111101; else ma=time mod 10; cat q q q q q q q q q q = 1111110; end case; end process; 4、报警模块: 报警模块是洗衣机系统的最后一个模块,即任何一个洗衣状态执行完成后倒计时为零时,系统运行到“报警”状态,蜂鸣器将会报警,时间为5 秒。其设计相对比较简单,只是需要加入一个蜂鸣

13、器信号BUZZER,并且使其再TIME倒计时总时间为零时,提供一个上升沿信11 号即可。 五、器件清单 硬件:1 计算机;2 直流稳压电源;3 EDA 开发板及相应元器件。 软件:Quartus的相应版本。 六、遇到的情况 本次数字电路的设计实验是一次综合性实验,是对上学期数字电路实验知识的全方位考察,所以在实验的过程中不免遇到一些问题及故障。下面对实验中所遇到的问题进行分析。首先对于本试验的状态转换模块的设计一开始没有想到采用三位二进制数的表示方法,所以对于五种状态只是采用了一个十进制的变量,但采用后发现这种表示方法对于实现洗衣过程中的状态显示将变得十分困难,后来经过思考发现利用三位二进制数

14、表示模式不但同样易于转换模式同时可以方便的用三个发光二极管显示洗衣状态。第二点就是在仿真的过程中,虽然需要观察的几个波形都十分符合预期,但是其中几个波形的仿真图会出现个别的冒险。尽管并不影响下载到EDA实验板上的显示效果,但并不十分完善。第三点就是下载到EDA实验板上的问题,为了将数字显示到七段数码管上,需要将数字的七位译码连接到数码管的七个管角,但连接后发现数字显示完全错误,经过分析所显示出的错误图形的七位译码发现本EDA实验板的共阴数码管的七个管角与所译的七位码正好反接了,后经过调整即可正常显示所需数字。而且显示平稳,没有突出问题。 七、结语 本试验是一个极具综合性实验,目的是制作一个洗衣机控制器;任务主要是通过对于数字电路逻辑编程的使用,实现洗衣机的控制。但是由于安排的问题,对过去的知识忘记得比较多,只能大量阅读相关资料,查找需要的知识。时间紧、任务重、错误百出,让人比较紧张,希望以后能够安排早一些。最后,还要感谢老师给予的大力协助和指导。 八、参考文献 数字电路与逻辑设计实验 北京邮电大学电路中心 EDA实验和VHDL语言实践 12

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号