查看: 16150|回复: 30

【小脚丫Step FPGA】数码管驱动2----微风细雨

  [复制链接]
  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-11-6 00:18:30 | 显示全部楼层 |阅读模式
    分享到:
    上一篇教程介绍了单个数码管的驱动,本教程则介绍如何驱动4位数码管,同时显示0-9999计数。
    等学会这个之后,不管多少位,你都可以迎刃而解。
    先介绍一下4位数码管管脚说明:
    0_1302014860mCt0.gif
    每个数码管的公共极为SEG*,其余引脚公用。
    本实验采用的是共阴极4位数码管。
    因此当需要点亮第一个数码管的a段,则需要将数码管的SEG1置0,a引脚置1,当然这之间需要加限流电阻。
    同理,当需要点亮第二个数码管的a段,则切换数码管的SEG2置0即可。

    假设需要用该数码管显示1234,则需要将数码管公共极SEG*轮流置0,同时在当SEGx为0是,段码a_to_g_dp显示相应的数据。比如SEG1=0,其余SEGx均为1时,则段码a_to_g_dp引脚则为1的译码值。这个过程成为动态扫描。
    这里有个故事,之前有个群里同学说这个动态扫描的形成是因为数码管有余光,没有完全熄灭,导致人眼看上去像多位同时显示。义正言辞,差点把我说蒙了。。。
    动态扫描的主要程序如下:
    1. always@(posedge clk,posedge rst)begin
    2.                 if(rst)
    3.                         sel <= 4'b1111;
    4.                 else begin
    5.                         case(count[10:9])
    6.                                 2'b00:begin
    7.                                         sel <= 4'b1110;
    8.                                         data <= bcd[3:0];
    9.                                 end
    10.                                
    11.                                 2'b01:begin
    12.                                         sel <= 4'b1101;
    13.                                         data <= bcd[7:4];
    14.                                 end
    15.                                
    16.                                 2'b10:begin
    17.                                         sel <= 4'b1011;
    18.                                         data <= bcd[11:8];
    19.                                 end
    20.                                
    21.                                 2'b11:begin
    22.                                         sel <= 4'b0111;
    23.                                         data <= bcd[15:12];
    24.                                 end
    25.                                
    26.                                 default:begin
    27.                                         sel <= 4'b1111;
    28.                                         data <= 4'bxxxx;
    29.                                 end
    30.                         endcase
    31.                 end
    32.         end
    复制代码
    上述代码并不包含bcd-7seg译码过程。

    接下来,进行计数器设计。
    主要有两种,一、先用二进制进行计数,计数至9999时赋零,再通过二进制到BCD码转换,最后进行译码显示。二、直接利用BCD码进行计数,再译码显示。
    第一种方法在计数范围小的情况下可以采用。但是一旦计数范围达到几千几万,则建议采取第二种方法。
    以十位数为例,主要代码如下:
    1. //ten
    2.         always@(posedge clk,posedge rst)begin
    3.                 if(rst)
    4.                         bcd_reg[7:4] <= 0;
    5.                 else begin
    6.                         if(clk_1s && bcd_reg[3:0] == 4'd9)begin
    7.                                 if(bcd_reg[7:4] == 4'd9)
    8.                                         bcd_reg[7:4] <= 0;
    9.                                 else
    10.                                         bcd_reg[7:4] <= bcd_reg[7:4] + 1'b1;
    11.                         end
    12.                 end
    13.         end
    复制代码
    需要注意的是,当前位数据的计数判断需要同时满足计数时钟和之前所有位数据均为9。
    7D780FC6CA5116E92A686F6244EAF07E_看图王.jpg
    接线有点凌乱,还望见谅!
    游客,如果您要查看本帖隐藏内容请回复





    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-15 09:30
  • 签到天数: 162 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-11-6 13:32:08 | 显示全部楼层
    楼主,这个小板子用来学FPGA怎么样?给个评价啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2015-11-6 14:06:31 | 显示全部楼层
    haothree 发表于 2015-11-6 13:32
    楼主,这个小板子用来学FPGA怎么样?给个评价啊

    蛮好的,方便自己DIY。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-14 12:16
  • 签到天数: 827 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-11-19 22:49:38 | 显示全部楼层
    谢谢分享学习一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2015-11-20 10:21:32 | 显示全部楼层
    suoma 发表于 2015-11-19 22:49
    谢谢分享学习一下

    不客气,希望继续关注
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-11-28 16:19
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-11-28 17:12:16 | 显示全部楼层
    嘿嘿,肯定有源码~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2017-12-4 18:33
  • 签到天数: 94 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2015-11-29 17:11:28 | 显示全部楼层
    CET420 发表于 2015-11-28 17:12
    嘿嘿,肯定有源码~~

    这个真有!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-18 12:14
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-3-20 10:40:57 | 显示全部楼层
    不错,前来学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-28 14:01:13 | 显示全部楼层
    哈哈,我要开始四个数码管的学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-3-29 09:49:32 | 显示全部楼层
    顶一个,一起学习小脚丫
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 05:04 , Processed in 0.187293 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.