全球旧事资料 分类
实验四七段数码管的动态扫描显示
一、实验目的1进一步熟悉QuartusII软件进行FPGA设计的流程;2掌握利用宏功能模块进行常用的计数器,译码器的设计;3学习和了解动态扫描数码管的工作原理的程序设计方法;二、实验原理及过程
实验板上面常用的4为联体的共阳极7段数码管。其接口电路是把所有数码管的8个笔划段ah同名端连接起来,而每一个数码管由一个独立的公共极COM端控制。对于这种结构的数码管,采用动态显示的方法是最为广泛的一种显示方式之一。
在轮流点亮的过程中每位显示器的点亮时间都极为短暂,但由于人的视觉暂留现象以及发光二极管的余晖效应,尽管实际上每个显示器并非同时点亮,但只要扫描的速度足够快(如达到30Hz以上),给人的印象就是一组稳定的显示数据,不会有闪烁感。
本次实验要求在实验板上实现显示0000000099999999的十进制计数器。使用的是宏模块产生一个16位的二进制计数器cou
ter作为4个数码管的显示数据;编写一个分频模块div,其输出作为计数器cou
ter的时钟信号;编写数码管驱动模块segmai
,完成7段译码和扫描显示控制1、建立工程,并建立顶层图。2、设计计数时钟
设计一分频器,对50Mhz分频输出到计数器,让计数器以
f较慢速度递增。建立v文件,输入以下代码
modulei
t_divclkdiv_outi
putclkoutputregdiv_outreg310clk_divparameterCLK_FREQD50_000_000parameterDCLK_FREQD10alwaysposedgeclkbegi
ifclk_divCLK_FREQDCLK_FREQclk_divclk_div1
elsebegi
clk_div0div_outdiv_oute
d
e
de
dmodule
输入完成后,将该文件设为顶层文件,并分析该设计文件,
用于检查设计错误。检查无误后,要生成一个分频器的原
件符号,根据步骤建立该原件的原件符号。
3、数码管扫描显示程序设计
数码管扫描显示程序如下:
modulesegmai
clkreset_
datai
seg_dataseg_com
i
putclk
i
putreset_

i
put310datai

由于要显示8位数字所以要将输入数据设为32位
output70seg_data输出与例子中的一样保持不变,任然为8位
output70seg_com设置输出时要用到的8个端口
reg70seg_com由于在always语句中要用到,所以再把它们都定义为寄存器变量类型
reg70seg_data寄存器变量reg30bcd_led寄存器变量类型reg360cou
t寄存器变量类型,同时cou
t用于计数i
tegert一个整形变量t
falwaysposedgeclkalways语句用于判断当上升沿来到时计数器的状态,并且设置计数器的归零功能
begi
ifreset_
cou
t0elsebegi
cou
tcou
t1tdatai
e
d
e
d
alwayscou
t1412ordatai
判断已经计数的状态,并将相应的r
好听全球资料 返回顶部