基于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。基于vhdl多功能电子钟设计说明书
相关推荐
5ns的时钟信号;清 0端( reset)前面一小段( 100ns)为低电平,后面均为高电平;置数端( set)前面一小段( 200ns)为低电平,后面均为高电平;时重置端( h1)可设置数值为 20时,保存波形图,进行仿真,产生如下波形: 由上述波形可以清楚的看到:当清 0信号( reset)无效时,时计时器置数,从 20时开始计数,到 23时回到 0,并且从 enhour输出一个高电平。
39。 039。 then if clk39。 event and clk=39。 139。 then 信号为 1时有效 if(count=100) then 当扫描为次数为 100 次时 q=39。 039。 count :=0。 else count:=count+1。 否则开始计数 end if。 end if。 else q=39。 139。 end if。 秒 /分
复位 信号 喇叭 4 方波生成模块 FEN 分频占空比为 1: 1000 的方波,用于消除抖动。 分频电路的输入时钟CLK是由外部时钟提供的,外部时钟周期取 200ns。 FEN模块程序如下: LIBRARY IEEE。 USE ENTITY fen IS PORT(clk:in std_logic。 clk1:out std_logic)。 END fen。 ARCHITECTURE
供电源,节约成本,但输出功率不高。 复位电路部分,考虑到程序的简洁,避免冗长,采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位目的。 输入信号部分,直接在 I/O 口接上按键开关,精简和优化电路,该系统对于交通灯及数码管的控制只用单片机本身的 I/O口就可以实 现,显示电路采用共阳数码管。 整个系统组成框图如图 : 图 方案二系统组成框图 A 车道信号 灯
3 硬件设计 11 广。 7 P1 口、 P2 口、 P3口、 P4 口 为 4个并行 8位 I/O 口。 8 特殊功能寄存器 共有 21 个,用于对片内的个功能的部件进行管理、控制、监视。 实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的 RAM区。 由上可见, 80C51 单片机的硬件结构具有功能部件种类全,功能强等特点。 特别值得一提的是该单片机 CPU 中的位处理 器
入。 行路形程 服 务 项 目 房餐报价 导游保险 是 否 数据输入子程序 服 务 报 价 输入。 应收账款 应 付 账 款 收 款 登 记 付款等价 是 否 团队财务 子程序 18 图 报名接待子程序流程图 用户界面设计 一般交互涉及信息显示、数据输入、和系统整体控制等方面。 一致性 为客户交互界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。 在设计的过程中