数码管的显示有静态显示和动态扫描显示。一个数码管通常有8个段码,当要控制数码管的数量在两个及以上时,动态扫描无疑是一个最好的选择,可以大量节约IO资源。

静态显示很好理解,8个段码拼成了数字8.,当我们想要显示对应的数字时只需要对应的段码显示就可以了;那么,什么是动态扫描?动态扫描就是利用肉眼视觉暂留现象,通过快速切换数码管显示位码达到肉眼无法分辨闪烁的效果。

设计思路:

需要动态显示6位数码管,然后需要一个相对快的时钟去切换数码管的位码,我采用的是1Khz频率,系统时钟50Mhz,低电平复位。有的人喜欢给case语句的条件写一个时钟,让位码在这个时钟下进行切换,但是我并不喜欢这样,这样写如果时钟计数值不是数码管位数的整数倍时,数码管很容易出现有一个比较淡的重影,严重的话直接影响数码管的显示效果,我更习惯于用C语言的思路,或者说是状态机的想法进行位码的赋值。

FPGA Verilog 动态扫描部分代码如下:

`timescale 1ns / 1ps
module digital(input            clk  ,input            rstn ,input      [3:0] data1,input      [3:0] data2,input      [3:0] data3,input      [3:0] data4,input      [3:0] data5,input      [3:0] data6, output reg [7:0] seg  ,output reg [5:0] sel);//digital digital_u(
//  .clk  (clk  ),
//  .rstn (rstn ),
//  .data1(data1),
//  .data2(data2),
//  .data3(data3),
//  .data4(data4),
//  .data5(data5),
//  .data6(data6),
//  .seg  (seg  ),
//  .sel  (sel  )
//);reg [15:0]cn1;reg clk1k;always@(posedge clk or negedge rstn)beginif(!rstn)begincn1<=0;clk1k<=0;endelse if(cn1>=24999)beginclk1k<=!clk1k;cn1<=0;endelse cn1<=cn1+1;endreg [3:0] tub;reg [2:0] con;reg [5:0] sel_reg;always@(posedge clk1k or negedge rstn)beginif(!rstn)begintub      <= 0;con      <= 0;sel_reg  <= 0;sel      <= 6'b000000;endelse begincase(con)//浪费seg一个时钟0:begin tub<=data1;sel_reg<=6'b011111;con<=1;end1:begin tub<=data2;sel_reg<=6'b101111;con<=2;end2:begin tub<=data3;sel_reg<=6'b110111;con<=3;end3:begin tub<=data4;sel_reg<=6'b111011;con<=4;end4:begin tub<=data5;sel_reg<=6'b111101;con<=5;end5:begin tub<=data6;sel_reg<=6'b111110;con<=0;enddefault:con<=0;endcasesel <= sel_reg;//时钟对齐endendalways@(posedge clk1k or negedge rstn)if(!rstn)seg<=8'b1100_0000;else case(tub)0:seg<=8'b1100_0000;1:seg<=8'b1111_1001;2:seg<=8'b1010_0100;3:seg<=8'b1011_0000;4:seg<=8'b1001_1001;5:seg<=8'b1001_0010;6:seg<=8'b1000_0010;7:seg<=8'b1111_1000;8:seg<=8'b1000_0000;9:seg<=8'b1001_0000;//           10:seg<=8'b1000_1000;//            11:seg<=8'b1000_0011;//            12:seg<=8'b1100_0110;//            13:seg<=8'b1010_0001;//            14:seg<=8'b1000_0110;//            15:seg<=8'b1000_1110;default:seg<=8'b1100_0000;endcaseendmodule

基于FPGA的数码管动态扫描显示(含代码)相关推荐

  1. 实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计

    实验三 基于FPGA的数码管动态扫描电路设计 源文件的链接放在最后啦 实验目的: (1) 熟悉7段数码管显示译码电路的设计. (2) 掌握数码管显示原理及静态.动态扫描电路的设计. 实验任务: (1) ...

  2. 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...

    秦红凯 明德扬FPGA科教 一.项目背景概述 随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性.数字密码锁因为它的保密性很高,安全系数也 ...

  3. 基于fpga的数码管动态扫描电路设计_FPGA是什么?里面有什么?能做什么?

    本文由硬禾学堂创始人苏公雨首发于微信公众号电路设计技能. 今天在群里有工程师问我,怎么才叫学会了FPGA,怎么才叫学好了FPGA?我相信有很多朋友有类似的问题,因为在多数人的潜意识里,FPGA是非常高 ...

  4. 数字系统实验—第13周任务(3位数码管动态扫描显示实验含工程与优化)

    数字系统实验--第13周任务 任务书 0.简介 1. 实验操作:1周 2. 完成并在线提交文档(100%) 日志(系统功能描述) 报告(目的 设计 实现 总结) 3. 三位数码管数据显示实验在线验收 ...

  5. c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...

    数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...

  6. 【Proteus仿真】8位数码管动态扫描显示变化数据

    [Proteus仿真]8位数码管动态扫描显示变化数据 Proteus仿真 示例代码 /*-----------------------------------------------名称:8位数码管动 ...

  7. linux 动态扫描 数码管,数码管动态扫描显示01234567程序(三种方案) - 全文

    数码管由于价格便宜,使用简单,在电器特别是家电领域(比如空调.热水器和冰箱等)得到了极为广泛的应用.在高校电子信息类专业单片机的教学过程中,数码管动态显示及实现方法是学生普遍反映较难掌握的内容.鉴于此 ...

  8. 【 FPGA 】控制数码管动态扫描显示的小实验

    实验的功能很简单,就是让4个数码管每隔1s递增显示,使用动态扫描的方式来实现. 从这个功能的描述可以看出,我们首先要写一个计数器模块,来让计数值每隔1s增加1,暂时实现的是16进制的东西,从0到f,之 ...

  9. 四位共阳极数码管显示函数_初学者,求助!!设计一个4位LED数码管动态扫描显示电路,用...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; ...

最新文章

  1. 使用tomcat自带的连接池,报错
  2. leaflet的入门开发(一)
  3. CG CTF PWN When did you born?
  4. RabbitMQ管理(1)——多租户与权限
  5. ubuntu14.04 boost动态库找不到 libboost_system.so.1.58.0
  6. leetcode 554. 砖墙
  7. div模拟select/option解决兼容性问题及增加可拓展性
  8. java base64 显示不完整_如何解决CAD图纸显示不完整、图纸无效?一分钟教你,不允许错过...
  9. python生成器迭代器_python 生成器 迭代器
  10. iOS 在视图中调整按钮距离边框的位置
  11. 文字生成图片:输入描述语,人工智能自动帮你绘图!
  12. 使用Canvas绘制简单工程符号(续)
  13. Docker容器dockerfile简介
  14. 使用GLAD加载OpenGL的库
  15. 卷王指南,大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?
  16. Ant Design Pro 企业级后台实战(73 个视频)
  17. 编译原理:算符优先分析实验
  18. 如何用ChatGPT高效完成工作
  19. 13.0高等数学五-幂级数的收敛域与和函数
  20. Winhex数据粘贴方法

热门文章

  1. STC15F104W无线收发模块,源程序注释很详细,PDF格式说明书,可以学习20个遥控器,3个按键一个学习按键还有按键开和按键关
  2. java selectionkey_Java SelectionKey.interestOps方法代碼示例
  3. 心理学:情商高的人必懂的三大沟通技巧
  4. 弹弹堂为什么我早上登陆显示加载服务器列表失败fail,弹弹堂登陆失败怎么办?...
  5. sublime4禁止检查更新
  6. #创新应用#打车小秘:随时打车毫无压力!
  7. LFI漏洞利用总结(文件包含)
  8. 基于java图书借阅管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  9. 为什么数据集中的mask是彩色的?
  10. 高性能蓝光存储让你心中有‘数’,不浪费存储成本