1数字电路与逻辑设计实验报告题目: 洗衣机控制器设计2一、洗衣机控制器要求设计制作一个全自动洗衣机的控制器:_ 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20 秒,漂洗30 秒,脱水15 秒;_ 用一个按键实现洗衣程序的手动选择:A 、单洗涤;B 、单漂洗;C 、单脱水; D 、漂洗和脱水;E 、洗涤、漂洗和脱水全过程;_ 用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个 状态的工作时间,全部过程结束后,应提示使用者;_ 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前 保留的状态;_ 选做:三个过程的时间有多个选项供使用者选择。
_ 选做:可以预约洗衣时间。
_ 选做:自拟其它功能。
二、系统设计基本思想电路由模式选择、计数器、报警模块以及译码驱动电路和数字显示电路等模块组成。
1、模式选择模块五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。
2、减计数计数器模块计数器洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计数。
计时单位为一秒钟。
3、译码和数码显示电路译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。
显示器件选用LED 七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
4、报警模块当系统运行到“报警”状态时,蜂鸣器将会报警,时间为5 秒。
4、分频器模块设计一个大小合适的分频器使得系统能够正确的实现一秒的计时。
三、总体设计图以及转移图流程图示:3状态选择开始信号输入变量A 为1YESNO进行洗涤变量B 为1YESNO进行漂洗变量C 为1YES进行脱水NO完成洗衣后报警提示完成4总体逻辑设计图:状态转移图示:控制器分频器OSC时间计数器洗涤漂洗脱水译码时间显示ClkClk1Clk2T15 T20 T2Cnt clr 报警Pause状态选择 译码5管脚设计图:WAITA =’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 : OUTSTD_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;8END PROCESS;PROCESS (START,CLK,PAUSE,CHANGE)----洗衣控制进程BEGIN IF ( START = '0' ) THEN --------开始前模式选择模块 IF(CHANGE'EVENT AND CHANGE='1') THEN CASE MODE ISWHEN "000"=>MODE<="001"; WHEN "001"=>MODE<="010"; WHEN "010"=>MODE<="100"; WHEN "100"=>MODE<="110"; WHEN "110"=>MODE<="111"; WHEN OTHERS=>MODE<="000"; END CASE; END IF; STATE <= MODE;------------选择洗衣模式BUZZER <= '0'; CASE STATE IS ------设置模式时间以及中间变量的值 WHEN "001" =>TEMP <= 0 ;TIME <= 20;WHEN "010" =>TEMP <= 0 ;TIME <= 25;WHEN "100" =>TEMP <= 0 ;TIME <= 15;WHEN "110" =>TEMP <= 25 ;TIME <= 40;WHEN "111" =>TEMP <= 40 ;TIME <= 60;WHEN "000" =>TEMP <= 0 ;TIME <= 0;WHEN OTHERS =>TEMP<= 0 ;TIME<= 0;END CASE ;ELSE IF ( PAUSE = '0') THEN ----设置暂停信号IF ( CLK'EVENT AND CLK = '1' AND TIME/=0) THEN TIME <= TIME - 1 ; ------时间自减 IF ( TIME=1 ) THENSTATE <="000";BUZZER<= '1';------蜂鸣信号启动ELSIF ( TIME = TEMP ) THEN ----洗衣中模式的切换 CASE STATE IS WHEN "111" =>STATE <= "110";TEMP <= 20;WHEN "110" =>STATE <= "100";9TEMP <= 0;WHEN OTHERS =>TEMP <= 0 ;STATE <= "000";END CASE;END IF;END IF;END IF;END IF;MODEEND <= STATE; ------中间变量赋值给结果变量END PROCESS;PROCESS (CLOCK,TIME)BEGIN IF (CLOCK='1') THEN ------提取十位数CAT<="111110"; ------数码管选通END IF;END PROCESS;process (MA) ---------将数字译码为七段共阴数码管码 begin case MA is when 1 => q <= "0110000" ; when 2 => q <= "1101101" ; when 3 => q <= "1111001" ; when 4 => q <= "0110011" ; when 5 => q <= "1011011" ; when 6 => q <= "1011111" ; when 7 => q <= "1110000" ; when 8 => q <= "1111111" ; when 9 => q <= "1111011" ;when others => q <= "1111110";end case;end process;end washer; ----------洗衣机控制器结束首先根据实验题目的要求可以将洗衣机控制器分解成为如下的几个模块:洗衣机模式选择、计数器、报警模块以及译码驱动电路和数字显示电路。
1、模式选择模块:总共五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块,这个模式选择模块将在洗衣机的开始按键start 按下前进行模式选择。