没有合适的资源?快使用搜索试试~ 我知道了~
数电实验 数字钟.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2022-07-09
16:37:21
上传
评论
收藏 958KB PDF 举报
温馨提示
试读
19页
数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf数电实验 数字钟.pdf
资源推荐
资源详情
资源评论
数字电路与逻辑设计综合实验题目——数字钟 0213106 班 代闻 19 号
数字钟
简介:
这是一个以 EPM7128SLC84-15 为软件载体,数码管作显示器件,蜂鸣器作提示器件,
拥有 4 个按键的电子钟。它能够正常计时,支持 12 小时和 24 小时两种计时方式,同时允许
用户手动调时和设置整点报时。
在正常计时状态下,用户可以选择 12 或 24 小时的计时方式,也可以设置或取消整点报
时的功能(蜂鸣器作整点报时的提示设备)。同时,数码管会有相应的显示来指示当前电子
钟的设置。
当用户通过按键进入校时状态时,闪烁的一位数便是当前调节的数;用户可以通过按键
选择要调的位,并对选择位的数字进行修改。(具体按键的功能说明请查阅 软件编写部分三、
2 )
该电子钟的软件部分用 VHDL 编写,编译环境采用的是 MAX+plus II.主要分为分频、
按键防抖动、模式控制、计时校时、显示输出五个模块。(具体设计见 软件编写部分四)
由于时间有限、作者才疏,纰漏在所难免,敬请老师指正。
关键字:
显示模块的刷新率:=显示模块的输入时钟频率/数码管的个数;
防抖动模块的基准频率:
按键操作会产生上升沿,只有当两个上升沿发生在不同的基准周期时才被看作是两次按键;
正常计时的基准频率:1Hz
时钟状态:即 mode,分为正常计时(mode=0)和校时(mode=1)两个状态;
12/24 hour:即 tm,tm=1 为 12 小时制;tm=0 为 24 小时制;
选择位:在校时操作时,用户操作的当前位,可以是时分秒的低位或高位,从硬件显示上看,
就是在校时状态下,闪烁的那一位。
硬件支持部分
硬件
EPM7128SLC84-15
面包板
数码管
蜂鸣器
按键
电阻
数量
1
1
8
1
4
4
软件设计部分
1
数字电路与逻辑设计综合实验题目——数字钟 0213106 班 代闻 19 号
一、 设计要求
设计并制作一台能显示时、分、秒的数字钟。
1、可手动校时,能分别进行时、分的校正;
2、12 小时(含上下午显示)、24 小时计时制可手动选择;
3、选做:整点报时。
4、选做:闹铃功能,当计时计到预定时间时,蜂鸣器发出闹铃信号,闹铃时间为1 秒,
可提前终止闹铃。
5、选做:自拟其它功能。
二、 程序编写方案比较与选择
方案一:
将所有功能设计好,程序结构制定完备后,将代码写入一个或几个文件里。
出发点:数字钟不是非常大的程序,该方案增大了软件的集成度与专用性,减少了处理
过程中的中转信号或变量所占用的空间;
方案二:
将程序模块化,各模块提供相应的接口,一个模块一个文件。
出发点:1)考虑到 EPM7128SLC84-15 的空间问题,有些功能可能会因其容量的限制
而被撤销,如果将代码一次性写在一个文件里,在删除某些功能时,必将会牵扯到一些
共用信号或变量的赋值问题。
2)模块化的程序便于调试
比较:
方案一适合于程序设计完成后,(使用专用芯片)投入批量生产前的集成阶段;
方案二更适合于开发、编写阶段;
故选择方案二。
三、 总体设计
1. 总体思路
1) 软件功能设计
1) 实现基本功能——正常计时,手动校时(能分别进行时、分的校正)
2) 实现基本附加功能——12/24 小时制的手动选择,采用 12 小时制时有上下
午标记;
3) 根据资源占用状况选择实现选择功能——整点报时,闹铃等
2) 对外设的说明:
1) 8 个数码管
左一指示整点报时是否设置,若已设置则中间的一横会亮,否则不亮;
左二指示 12 小时制下的上下午,以字母 A、P 表示
剩下的六个从左向右依次为时分秒的高低位
2) 4 个按键
Key1:模式选择按键,使时钟状态在正常计时和校时状态之间变换;
Key2:功能 1:校时状态下,选择用户想要操作的位;
功能 2:正常计时状态下,设置或取消整点报时共能;
Key3:校时状态下,按一次给当前选择位的数字加一;
Key4:在正常计时状态下,选择 12/24 小时制;
3) 一个蜂鸣器
在整点报时功能设置的状态下,在整点时刻鸣叫一秒。
3) 程序结构设计
2
数字电路与逻辑设计综合实验题目——数字钟 0213106 班 代闻 19 号
Clk
分 频 模 块
Clk1 Clk2 Clk0
按键输入
防
抖
动
模
块
脉冲
时
间
处
理
模
块
显
示
待显示内容
模
块
显示输出
2. 细化模块
1) 总输入输出:
Input:keyx (x=1~4)功能在上一小节中已说明
output: 时分复用的选择信号 SEL[7..0]:选择对哪个数码管进行控制
段选择信号 F[7..0]控制某数码管的那些段显亮。
2) 分频模块细化:三个模块(fenpin x)分别产生 ck0,ck1,ck2,用途如上;
3) 防抖动模块细化:在每个按键后加一个防抖动模块(fangdoudong)(一共 4 个);
4) 时间处理模块细化:模式控制(modectrl)和计时校时(clock_mode0);
5) 显示模块:提供相应借口,输出块选择、段选择信号。
四、 具体模块设计
1. 分频模块:(EPM7128SLC84-15 的时钟频率为 1Mhz)
3
数字电路与逻辑设计综合实验题目——数字钟 0213106 班 代闻 19 号
FENPIN0: 将 clk (1MHz) 分频得到 ck0 (1kHz),用作显示模块的刷新率;
FENPIN1:将 ck0(1kHz)分频得到 ck1(20Hz),用作防抖动模块的基准频率;
FENPIN2:将 ck1(20Hz)分频得到 ck2(1Hz),用作正常计时的基准频率;
Input:待分频信号 output:分频后的信号(fi>fo)
基本原理:通过对输入信号上升沿个数的计数,周期性地翻转输出信号,从而实现对输
入信号的分频。
程序代码如下:
FENPIN0——
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; --必要的库文件
entity fenpin0 is
port(clk: in std_logic;--输入
cpo: out std_logic);--输出端口
end;
architecture a of fenpin0 is
signal cp: std_logic;--针对输出的信号
begin
process(clk)
variable i1: integer range 0 to 50;
variable i2: integer range 0 to 10;--i1max*i2max 来计算多少个原周期就是半个新周期
begin
if(clk'event and clk='1') then
i1:=i1+1;
if(i1=50) then
i1:=0; i2:=i2+1;
if(i2=10) then
i2:=0;
cp<=not cp;--数 500 个上升沿翻转一次,1000 个就是一个新的周期
end if;
end if;
end if;
end process;
cpo<=cp;
end a;
4
剩余18页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8299
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功