加载中…
正文 字体大小:

基于至简设计法实现的闹钟工程

(2017-03-21 15:18:07)
标签:

fpga

明德扬

至简设计法

闹钟工程

闹钟功能

分类: 明德扬---至简设计法

一、   功能描述

本工程包括矩阵键盘和数码管显示模块,共同实现一个带有闹钟功能、可以设置时间的数字时钟。具体功能如下:

1.        数码管可以显示时十位、时个位、分十位、分个位、秒十位、秒个位。

2.        上电后,数码管显示000000,并开始每秒计时。

3.        按下按键0进入时间设置状态。再按下按键0退出时间设置状态,继续计时。

4.        在时间设置状态,通过按键1来选择设置的时间位,在0~5之间循环选择。

5.        在时间设置状态,通过按键2来对当前选择的时间位进行加1

6.        在计时状态下,按下按键14,进入闹钟时间点设置状态。再按下按健15,退出闹钟设置状态。

7.        在闹钟设置状态,按下按键13选择设置的时间位,此时可以按下所需要的按键序号设置对应闹钟时间。

8.        当前时间与所设置的时间点匹配上了,蜂鸣器响应5秒。

二、    平台效果图

基于至简设计法实现的闹钟工程

三、    实现过程

首先根据所需要的功能,列出工程顶层的输入输出信号列表。

信号名

I/O

位宽

说明

clk

I

1

系统工作时钟50M

rst_n

I

1

系统复位信号,低电平有效

key_col

I

4

矩阵键盘按键列输入

key_row

O

4

按键输出行信号

seg_ment

O

8

数码管段选信号

seg_sel

O

6

数码管位选信号

bell

O

1

蜂鸣器控制信号

 

我们把工程分成四个模块,分别是数码管显示模块,矩阵键盘扫描模块,时钟计数模块,闹钟设定模块。

 

1.数码管显示模块

本模块实现了将时钟数据或者闹钟数据显示到七段译码器上的功能。

七段译码器引脚图:

基于至简设计法实现的闹钟工程


根据七段译码器的型号共阴极或者共阳极,给予信号01点亮对应的led灯,一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选(a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即;共阳数码管的字符编码为11000000

在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

本模块采用6个七段译码器显示闹钟小时分钟秒位,使用一个计数器不停计数0-5,每个数字代表一个七段译码器,在对应的七段译码器给予对应的字符编码,以此达到扫描数码管显示数据的功能。

信号列表如下:

信号名

I/O

位宽

说明

rst_n

I

1

系统复位信号,低电平有效

clk

I

1

系统工作时钟50M

din

I

32

每个数码管的时间数据

seg_sel

O

8

数码管位选

seg_ment

O

8

数码管段选

 

 

2.矩阵键盘扫描模块

本次案例万年历使用的是4x4矩阵键盘,本模块就是实现了矩阵键盘的扫描并使用以及按键消抖功能。通过行扫描法得到按下的键的位置信息。

信号列表如下:

信号名

I/O

位宽

说明

clk

I

1

系统工作时钟50M

rst_n

I

1

系统复位信号,低电平有效

key_col

I

4

矩阵键盘列信号

key_row

O

4

矩阵键盘行信号

key_num

O

4

按键位置信号

key_vld

O

1

按键有效信号

 







3.时钟计数模块

本模块实现了时钟计数功能,按键1按下则进入时钟数字调节界面,此时利用按键2来位选,按键3来调节数字,按一次按键3则加1,再次按下按键1则恢复计数。

信号列表如下:

信号名

I/O

位宽

说明

clk

I

1

系统工作时钟50M

rst_n

I

1

系统复位信号,低电平有效

key_num

I

4

输入按键值

key_vld

I

1

按键输入有效指示

dout

O

24

时钟数据输出

dout_vld

O

24

时钟数据输出有效

 

4.闹钟设定模块

本模块实现了设定闹钟时间功能,按下按键14则进入闹钟时间设定界面,此时利用按键13来位选,然后按下对应的按键则设定对应的数字,按下按键15则退出闹钟设定界面,当时钟数据和闹钟数据相同时,也就是到达设定时间时,蜂鸣器响5s

信号列表如下:

信号名

I/O

位宽

说明

clk

I

1

系统工作时钟50M

rst_n

I

1

系统复位信号,低电平有效

time_now

I

24

当前输入时间

time_now_vld

I

1

当前输入时间有效

bell

O

1

蜂鸣器控制信号

set_group

O

24

设置闹钟时间点

setting

O

1

设置状态标志

 

代码资料下载:http://pan.baidu.com/s/1skIJLRv

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有