背景简介

数码管:一般为8段共阴/共阳数码管共阴极数码管:公共端接地共阳极数码管:公共端接VCC点亮一个8段数码管,需要分别点亮“abcdefg”以及“.”。共阳极八段数码管真值表如下数码管驱动方式:静态显示、动态显示(一般为多位数码管区分驱动方式)公共端-位选信号led段-段选信号

硬件资源

产品需求分析

本次演示使用6位数码管进行动态驱动,公共端接高电平,段位端接低电平。

6位数码管显示“HH.mm.ss”

代码演示

按照顶层文件、定时器模块、按键检测模块、计数模块、数码管动态驱动模块,进行结构划分。

顶层文件

使用3个按键,分别控制时、分、秒设置,故例化3个按键检测模块,

定时器模块

普通的定时器,输出1s、1ms脉冲。此处可以再简化为:只提供一个输出脉冲的可配置时间的定时器模块,在例化两个信号即可。

按键检测模块

与前一个例程“蜂鸣器”中类似(「QuartusII学习」如何通过按键控制蜂鸣器?),采用消抖处理,不然按键修改参数时,可能修改多次。

计数模块

计数模块,也是逻辑模块。根据定时器提供的普通触发,以及按键触发,对需要输出的时间参数进行不同修改。

码管动态驱动模块

1、数据定义区域

定义数码管显示对应数据时的段位状态。

2、基本逻辑1

6位数码管,分别获取时间参数的“HH-MM-SS”对应的各位数字。

根据外部信号,获取刷新频率,控制led显示位置“selectLed”

2、基本逻辑2

根据led显示位置“selectLed”,确定片选“cs_led”状态,以及需要显示的数字“display_num_led”,并修改段选“reg_led”状态

综合分析



转载请注明地址:http://www.abmjc.com/zcmbzz/1577.html