背景简介
数码管:一般为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