基于vhdl多功能电子钟设计说明书内容摘要:

if min1b=0101 then min1b=0000。 if hou1b=0010 and hou2b=0011 then hou1b=0000。 hou2b=0000。 elsif hou2b=1001 then hou2b=0000。 hou1b=hou1b+1。 else hou2b=hou2b+1。 end if。 end if。 end if。 end if。 ELSE sec2b=sec2b+1。 end if。 END IF。 END IF。 end process。 13 end one。 仿真: (由于仿真限制,仿真用了 clk 代替 clk1) 1)手动增值 2)自动增值 ( 4)按键显示发光 LED 模块 : 此模块主要功能是帮助确认按键所处的状态,从而确定数字钟显示的内容。 这个模块利用发光 LED 与按键消抖后的输出相连,当输出为低电平时,即按键按下时,点亮 LED,而输出为高电平时,即没有按下按键时, LED 熄灭。 仿真结果: 14 程序: LIBRARY IEEE。 USE。 USE。 按键显示模块,按键按下,相应的 led 则发光或熄 ENTITY ledkey IS PORT( key1out:IN STD_LOGIC。 architecture behave of ledkey is key2out:IN STD_LOGIC。 begin key3out:IN STD_LOGIC。 process(key1out,key2out,key3out) key4out:IN STD_LOGIC。 begin led1out: out STD_LOGIC。 if key1out=39。 039。 then led1out=39。 039。 led2out: out STD_LOGIC。 else led1out=39。 139。 led3out: out STD_LOGIC。 end if。 led4out: out STD_LOGIC)。 if key2out=39。 039。 then led2out=39。 039。 end entity。 else led2out=39。 139。 end if。 if key3out=39。 039。 then led3out=39。 039。 else led3out=39。 139。 end if。 if key4out=39。 039。 then led4out=39。 039。 else led4out=39。 139。 end if。 end process。 end behave。 仿真结果: 15 ( 5) 声音 模块: 本模块只包括 1 个进程, 进程分为 3 个判断的部分。 分别为闹钟时间到的发声和整点报时到的发声。 第一个部分判断是否处于时钟显示模式且 key4是否按下,如果都满足则赋高电平给蜂鸣器输出端口 beep,使其不发出声音。 第 二 个部分判断 时钟时间是否与闹钟时间相等,若是,则把 低电平 信号赋给蜂鸣器 输出端口 beep,直到 手动按停。 如果期间按键4按下 key4out=39。 039。 则停止发声。 第 三个部分判断是否整点到了。 到了 59 分, 52秒 , 54 秒,56 秒时把 clk3 赋给 beep, 使其发声, 58 秒时 赋 一个高电平‘1’给 beep, 达到最后一个音的音调变高的效果。 其余的 50,21,53,55,57,59 秒赋低电平给蜂 beep 高电平 停止发声。 程序: library ieee。 use。 use。 use。 entity alarm is port( key1out:in std_logic。 key2out:in std_logic。 key3out:in std_logic。 key4out:in std_logic。 seth1a:in std_logic_vector(3 downto 0)。 seth2a:in std_logic_vector(3 downto 0)。 setm1a:in std_logic_vector(3 downto 0)。 setm2a:in std_logic_vector(3 downto 0)。 hou1b:in std_logic_vector(3 downto 0)。 hou2b:in std_logic_vector(3 downto 0)。 min1b:in std_logic_vector(3 downto 0)。 min2b:in std_logic_vector(3 downto 0)。 sec1b:in std_logic_vector(3 downto 0)。 sec2b:in std_logic_vector(3 downto 0)。 clk3:in std_logic。 用于整点报时的音调变化 beep:out std_logic )。 end entity alarm。 architecture one of alarm is begin process(key4out,seth1a,seth2a,setm1a,setm2a,hou1b,hou2b,min1b,min2b,sec1b,sec2b) 16 begin if key4out39。 event and key4out=39。 139。 then手动按停声音 if(key3out=39。 039。 AND key2out=39。 039。 AND key1out=39。 039。 ) or (key3out=39。 039。 AND key2out=39。 139。 AND key1out=39。 039。 )then beep=39。 139。 end if。 end if。 if(seth1a=hou1b and seth2a=hou2b and setm1a=min1b and setm2a=min2b and sec1b=0000 and sec2b=0000)then 闹钟时间到 beep=39。 039。 end if。 if(min1b=0101 and min2b=1001) then整点时间到 if(sec1b=0101) then if(sec2b=0010 or sec2b=0100 or sec2b=0110) then beep=clk3。 从 52,54,56 秒响 elsif(sec2b=1000) then beep=39。 039。 58 秒的音调变高 else beep=39。 139。 59 秒自动停止声音 end if。 else beep=39。 139。 end if。 end if。 end process。 end one。 仿真: 以下 18:00 前后,先是整点闹钟响,接着整点报时响。 17 ( 6) 译码显示以及闪烁模块 : 思路: 此模块包含 4位数码管位选,段选,判断输出显示状态或者设置(修改)状态,判断是否闪烁等功能。 通过判断 key1~key3的状态来确定给 4位数码管输出的内容。 程序分为两个进程,第一个进程用来决定位选与段选。 位选部分使用累加器实 现每进入一次程序依次循环选中每一位数码管。 然后根据检测的情况(时间时 分,时间分 — 秒,闹钟时 分,闹钟分 秒)把要显示的内容从“中间量”以 BCD码的形式赋值给“最终量”,再判断“最终量”代表的数字值,再把数字值相应的段选码送给段选。 位选与段选的数据送至数码管就能实现译码显示功能。 第二个进程有两个用途: ,通过不断把即时要显示的内容(时 分或分 秒或不显示)送至“中间量”,由第一个进程送出去输出。 ,由 clk2( 2Hz)判断数码管的亮灭,当clk2=1,把时 — 分或分 — 秒的 BCD码赋值给“中间量”,即为数码管“亮”;当 clk2=0,按情况把选择要闪烁的那两位用“ 1111”(在进程一内被判定为“灭”)代替 BCD码赋值给“中间量”,这样进程一可表现为“灭”。 程序: LIBRARY IEEE。 USE。 USE。 ENTITY display2 IS PORT( clk2:IN STD_LOGIC。 半秒的驱动 clk3:IN STD_LOGIC。 扫描数码管的驱动频率 dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 段选 selout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 位选 hou1a:in std_logic_vector(3 downto 0)。 修改模式的时钟数据 hou2a:in std_logic_vector(3 downto 0)。 min1a:in std_logic_vector(3 downto 0)。 min2a:in std_logic_vector(3 downto 0)。 seth1a:in std_logic_vector(3 downto 0)。 闹钟数据(只有一种模式) seth2a:in std_logic_vector(3 downto 0)。 setm1a:in std_logic_vector(3 downto 0)。 setm2a:in std_logic_vector(3 downto 0)。 hou1b:in std_logic_vector(3 downto 0)。 显示模式的时钟数据 hou2b:in std_logic_vector(3 downto 0)。 min1b:in std_logic_vector(3 downto 0)。 min2b:in std_logic_vector(3 downto 0)。 sec1b:in std_logic_vector(3 downto 0)。 sec2b:in std_logic_vector(3 downto 0)。 18 key1out:in std_logic。 key2out:in std_logic。 key3out:in std_logic)。 END ENTITY display2。 ARCHITECTURE behave OF display2 IS signal sel:std_logic_v。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。