FPGA动态数码管显示 | 您所在的位置:网站首页 › fpga高电平多大 › FPGA动态数码管显示 |
数码管动态显示的原理是基于人眼的视觉暂留即人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉影像并不立即消失,这种残留的视觉称“后像”,视觉的这一现象则被称为“视觉暂留”。 其次是数码管的余晖效应,当停止向发光二极管供电时发光二极管亮度仍能维持一段时间。根据这两种现象进行动态设计,让数码管轮流显示,而且轮流显示速度很快,这种方式称为动态扫描。 在实验过程中,我们使用的是正点原子的达芬奇开发板,板载的数码管为共阳极数码管,需使用低电平点亮。实验内容位是从0000计数到9999,我们参考波形图进行数码管动态显示程序设计。 4位数码管动态显示波形图输入输出及信号定义其中en信号是数码管使能信号,设计中一直让其拉高即可; data信号是输入的十进制数据,假设这里我们输入的十进制数为9876; ge、shi、bai、qian这4个信号是数据转换模块转化的的BCD码,也就是说这4个BCD码就是输入十进制数9876各个位的BCD码,所以这里个位(ge)是6,十位(shi)是7,百位(bai)是8,千位(qian)是9; data_c信号是数码管待显示内容寄存器,因为这里假设输入要显示的十进制数为9876,所以4个数码管就会显示9876的数值; 待显示内容赋值cnt_1ms信号是使用1ms的扫描时间去扫描各个数码管,所以需要一个1ms的计数器对1ms进行循环计数; 1ms计数器flag_1ms信号是1ms计数标志信号,当1ms计数器计到1ms时拉高该标志信号,使用该标志信号去控制位选数码管计数器的计数; 1ms计数标志信号cnt_sel信号是位选数码管计数器,动态扫描方式是用1ms的刷新时间让4个数码管轮流显示; 位选计数器sel_c信号是数码管位选信号寄存器,为了让数码管位选信号和段选信号同步,先将位选信号进行寄存,刷新到哪个数码管就将sel中对应位给低电平点亮即可; 位选寄存器data_d:当前点亮数码管显示的值。若我们此时点亮的是第1个数码管,那么就需要给第1个数码管显示值 6,若刷新到第2个数码管,那么我们就需要给第2个数码管显示7,以此类推,当刷新到第4个数码管时,此时显示的是9,这里定义 data_d的值为10时让数码管什么也不显示。 seg信号是数码管段选信号,当扫描到哪个数码管显示需要显示的值时,我们将对于的段点亮即可; 数码管显示sel信号是数码管位选信号。将数码管位选信号寄存器打一拍即可,以此实现实现数码管段选信号和位选信号的同步。 数码管位选至此,数码管动态显示程序设计结束,我们没有学习过FPGA怎么去驱动动态数码管,但是可以从已知的单片机驱动动态数码管入手,驱动原理其实都是一样的,只是在表示上FPGA要稍微复杂一些。 |
CopyRight 2018-2019 实验室设备网 版权所有 |