适用于板卡型号:
紫光同创PGC4KD-6ILPG144开发平台(盘古PGX-MINI-4K)
仅需一根TypcC线,插上即用,轻松操作。兼容下载器的一体版,配套资料丰富, 快速掌握国产FPGA!
盘古 PGX-MINI 4K 开发板是一套基于紫光同创 compa 系列 PGC4KD-6ILPG144 芯片为核心的开发套件,支持主自加载双启动功能,集成板载 jtag 调试接口, 预留两组 20PIN 扩展 IO、数码管、按键、led 灯等硬件资源,为用户提供基本的 开发环境。
二:实验目的
动态控制 4 位八段数码管显示不同的数值;
三:实验要求
4 个数码管显示不同的数字,按键 K0 控制左侧起第一个数码管,按一下数字加 1,从 0 到 9;按键 K1 控制左侧起第二个数码管,按一下数字加 1,从0 到 9;按键 K2 控制左侧起第三个数码管,按一下数字加 1,从 0 到 9;按键 K3 控制左侧起第四个数码,按一下数字加 1,从 0 到 9。
四:实验原理
数码管是一种
半导体发光器件,其基本单元是发光二极管。能显示 4 个数码管叫四位数码管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
4 位共阳数码管内部管脚连接图如下:
段选:段选由 8 根 led 灯组成,分别为 a,b,c,d,e,f,g,dp;
由段选信号控制某段数码管点亮;
位选:位选由 4 组 8 个段选 LED 组成,分别为 seg1,seg2,seg3,seg4;
例:如果我们只点亮第一位的 A:需要将 11 脚配置低电平,其他段选(1-5,7,10,11)配置高电平;将 12 脚配置高电平,其他位选脚配置(6,8,9)低电平;
点亮数码管原理:
输入相应的电平点亮一根根小火柴 a-b-c-d-e-f-g-dp。如果数码管是共阴极,给高电平 1,相应的火柴就会被点亮,反之如果是共阳极,相应的火柴就会被点亮。
盘古 PGX-MINI 4K 数码管底板的数码管使用共阳数码管,由于数码管与驱动 2N5401 连接,2N5401 输入低电平时,输出高电平,因此 LED_BIT1~4 输入高电平时,位选信号有效;当 LED_BIT1 为低电平时,A4 为高电平,对应位数码管亮,当 LED_BIT2 为低电平时,A3 为高电平,对应位数码管亮,当 LED_BIT3为低电平时,A2 为高电平,对应位数码管亮,当 LED_BIT4 为低电平时,A1为高电平,对应位数码管亮。
数码管显示出 0~9,代码如下,通过传递要显示的数值给到 key 上,可显示对应数值,sel 选择对应的数码管,如需 4 个如果要显示同样的字符,仅需将dig 的 4 位全部置 1(由于数码管位选信号与 2N5401 驱动连接,2N5401 输入低电平时,输出高电平,因此低电平输入时,位选信号有效),需要做好对应编码;
硬件连接上后,无法同一个时间点显示出不同的数值,我们可以通过刷新显示的方式造成视觉上同时显示了不同的数值,依据如下:
人眼对于时间频率的响应近似一个滤波器,在一般室内强光下,对 15~20Hz信号最敏感,有很强闪烁感(flick),大于 75Hz 响应为 0,闪烁感消失。刚到达闪烁感消失的频率叫做临界融合频率(CFF)。在较暗的环境下,呈低通特性,且 CFF会降低,这时对 5Hz 信号最敏感,大于 25Hz 闪烁基本消失。电影院环境很暗,放映机的刷新率为 24Hz 也不感到闪烁;这种特性也可以解析为视觉暂留特性,即当影像消失/变化时,大脑的影像不会立刻消失,而是保留一个短暂时间。
在设计数码管闪烁式显示时,对于人眼观测来说,频率越高越好,但是数码管中的 LED 灯珠点亮对于高电平(关注发光响应时间)是有要求的,故而不是越高越好,取一个适当的刷新频率即可,实验中我们取刷新率为 10KHz。
方案设计:
1、按键消抖:参考按键流水灯实验
2、按键计数:参考按键流水灯实验
3、数码管的分时显示;
五:实验源码(完整源码查看 demo 源文件)
顶层模块
按键消抖模块
按键计数模块
时钟分频模块
数码管显示模块
六:实验现象
4 个数码管显示不同的数字,按键 K0 控制左侧起第一个数码管,按一下数字加 1,从 0 到 9;按键 K1 控制左侧起第二个数码管,按一下数字加 1,从0 到 9;按键 K2 控制左侧起第三个数码管,按一下数字加 1,从 0 到 9;按键 K3 控制左侧起第四个数码,按一下数字加 1,从 0 到 9。