1、4、 自拟其它功能。二:系统设计(包括设计思路、总体框图、分块设计)设计思路由一个总的控制器完成各个状态的转换。主要分两个大状态,一为没有开始前的可编辑状态。二为开始后的不可编辑状态。所以总的控制器中应有个edit输出控制各个模块是否可改变。Start开始前,为设置时间状态和火力状态和烧烤选择状态。Start开始后edit变量为0,各个模块不可在编辑。控制器转入倒计时模块,同时led灯进入工作状态。需要注意的是需要为所有模块设置reset输入,以重置各个模块状态值。主要考虑问题:1:由于键盘输入不稳定,数字跳变太快,所以需要加键盘防抖模块。2:键盘防抖模块需要特殊的频率,所以分频器模块不止一个
2、。综上,主要涉及以下几个模块。分频器,键盘防抖模块,控制器,数据选择,数据装载,数字译码,数码管显示模块,led进度显示模块,火力选择和显示模块,倒计时模块,蜂鸣器模块总体框图分块设计1分频器 1hz用于倒计时,100hz是时间输入防抖所用频率,10khz是火力防抖所用(也可以用100hz的,不过就是输入稳定性略差)防抖模块左边为时间输入防抖,右边为火力输入和开始键的防抖。3:控制器状态控制器的功能根据输入信号和自身当时所处的状态完成状态的转换和输出相应的控制信号,其模块框图如图所示。其中,输出信号LD_DONE指示数据装载电路载入的烹调结束的状态信息的显示的驱动信息数据;LD_CLK显示数据
3、装载电路的设置的时间数据;LD_EDIT用于输出给其他分模块以便设置是否可改变;COOK指示烹饪的状态,并提示计时器进行减法计算;DATA15.0:将key转化为二进制编码;KEY为定时时间输入信号,用于设置烹饪时间的长短,其高到低分别表示时间分、秒的十位、个位。当LD_DONE有效时,输出烹调结束数据。当LD_CLK有效时,输出烹调的设置时间数据。4:数据装载当LD_DONE有效时,输出烹调结束的信息数据数据。当L_CLK有效时,输出烹调的设置时间数据。由于结构内部用到与或表达式LOADq00000010when 2=00000100when 3=00001000when 4=0001000
4、0when 5=00100000when 6=01000000when 7=10000000的循环。Dianzhenlieshuju是每列对应的数据,用于完成大中小三个字的显示。低电平有效。8:led显示模块Clk外接1hz分频,用于内部对秒的计数。Key接受输入的时间信号,并在内部转化成秒数。对clk的计数和key转化的总时间数比较,当计数对应1/8,2/8,3/87/8个key时点亮相应的led灯。Ledbar用于输出led显示信号从00000000-11111111.clk没到达一定数字,相应的增加一位1显示。计数完成时,led全部点亮。Set用于清空clk计数。Start用于将key的
5、输入转化成秒数。9:蜂鸣器模块Clk用于1hz输入。对秒计数。每两秒输出一个高电平。总共输出2下。Reset用于清空计数Done用于接收倒计时的完成信号。当done为高电平时开始计数。Out1用于连接蜂鸣器。高电平蜂鸣器响。10总框图三:仿真波形及波形分析控制器仿真图中,CLK是输入脉冲,RESET复位,SET_T设置时间,KEY按键输入,START开始计时,COOK正在烹饪,Key输入59分00秒。Start按之前,ld_clk为有效,可改变数码管显示,start按下后ld-clk为0,不能改变,同时ld-edit变为低电平,控制其他模块不可改变,同时cook信号变为1,表示开始倒计时。Re
6、set后DATA变回0.2数据装载仿真LDclk有效时,DATAOUT=DATAIN,同时load信号有效,表示倒计时接受来自LOADER的信号3倒计时模块:图中,LOAD为高电平时读取信号DATA的值,当COOK信号为高电平时,对DATA的值进行减法计数,并在每个时钟周期都输出减法计数器的当前值。仿真结果与预先设定的电路功能相吻合。4:decoder译码电路模块每个数字对应相应的数码管脚显示信号如0的时候数码管脚为0111111,与预期一致。5:驱动数码管模块可见a轮流显示每个数码管T则相应的数码管上显示相应的数字。符合预期。Key输入11秒在start后11秒左右,ledbar全部为1,完
7、成led功能。且reset后ledbar清零。在接受done信号后每两秒输出一个高电平且持续两秒。总共响2次。完成功能。总体仿真四:源程序分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi1hz is port(clk_in : in std_logic; clk_out : out std_logic);end;architecture a of fenpinqi1hz is signal cnt : integer range 0 to 24999999; -
8、用于clk计数。(10khz为2499,100hz为249999) signal clk_tmp : std_logic;begin process(clk_in) begin if (clk_inevent and clk_in=1) then if cnt=24999999 then cnt=0; clk_tmp= not clk_tmp; -输出相反电平 else=cnt+1; end if; end process; clk_out=clk_tmp;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL
9、;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fangdou is port (CLK_100hz:in std_logic; -定义端口 key:in std_logic_vector(3 downto 0); -按键输入 keyout:out std_logic_vector(3 downto 0) -按键输出 ); end fangdou; architecture art of fangdou is signal tmp1:std_logic_vector(3 downto 0); signal tmp2: PROCESS(CLK_100hz,key)
10、 BEGIN IF(CLK_100hzevent AND CLK_100hz=0)THEN消抖部分 tmp2(0)=tmp1(0); tmp1(0)=key(0); tmp2(1)=tmp1(1); tmp1(1)=key(1); tmp2(2)=tmp1(2); tmp1(2)=key(2); tmp2(3)=tmp1(3); tmp1(3)=key(3); END IF; keyout(0) = CLK_100hz AND tmp1(0) AND (NOT tmp2(0); keyout(1) =CLK_100hz AND tmp1(1) AND (NOT tmp2(1); keyout(2) =CLK_100hz AND tmp1(2) AND (NOT tmp2(2); keyout(3) =CLK_100hz AND tmp1(3) AND (NOT tmp2(3); END PROCESS; end art;USE IEEE.STD_LOGIC_11
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1