基于FPGA的动态数码管显示


前言

从今天开始进入下一篇章,及使用数码管实现在线时钟显示的功能,这里也将通过几个篇章进行逐一讲解,此篇章主要是对IO控制的基本功能进行实现。

一、数码管简介

数码管
从图可知,数码管分为共阳极或者共阴极两种结构,对于共阳极而言,想要数码管的灯点亮则需要将对应灯段拉成低电平,数字显示为7段,若是加上小数点则为8段,此开发板采用的是共阳极数码管,故若要点亮数码管则需要拉低电平即可。
数码管的显示方式主要由两种,一种是静态显示,一种是动态显示;静态显示这里不再讲述,直接讲述动态数码管的工作原理,所谓动态显示即是对多个数码管进行级联,每个数码管的段选线均并联在一起,不同数码管显示不同的数字则用位选线进行控制,为了让数码管一起显示,则需要用高频时钟快速的将数字信号进行刷新,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示,动态数码管硬件原理图如下:
动态数码管

二、74HC595芯片

‌74HC595是一款8位串行输入/并行输出的移位寄存器,主要用于扩展微控制器的IO端口,并通过三态输出控制外设如LED、继电器等。74HC595的控制主要需要配合移动时钟shcp和锁存时钟stcp实现数据同步,出上述两个信号外还需要配合sclk和ds信号,sclk是其的通讯时钟,ds是数据移位信号。
不同的温度对应SCLK的信号频率也有所不同,74HC595通过高效的串并转换与灵活的控制逻辑,成为数字电路中扩展IO和驱动多路设备的经典解决方案。
74hc595

三、程序代码

1.74HC595

// ********************************************************
// 当要传输数据出去时,需要将stcp置为0,传输完成后置为1
// 74HC595是在shcp的上升沿将ds数据移到存储寄存器中
// 所以FPGA需要在shcp的下降沿将ds数据传出去
// shcp的时钟频率在-40°C~85°C范围内的值不小于24Mhz
// ********************************************************
module hc595_driver
(
   input                   clk_sys        ,
   input                   rst_sys        ,
   //
   input                   dri_ena        ,
   input     [15:0]        dri_dat        ,
   //
   output reg              shcp           ,
   output reg              stcp           ,
   output reg              ds
);


// ********************************************************
// signal
// ********************************************************
reg      [15:0]            reg_data       ;

reg      [7:0]             cnt_tags = 0   ;      
reg      [7:0]             cnt_shcp = 0   ;      


// ********************************************************
// process
// ********************************************************
always @ ( posedge clk_sys )
begin
   if( dri_e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值