基于Proteus无实物STM32入门自学教程(四)--动态数码管

本自学教程三开始教大家动态点亮数码管,主要相对于教程三的静态点亮模式。
采用数码管动态扫描方式,使用STM32F103R6芯片和6个共阴极LED数码管,通过数码管动态扫描程序实现6个数码管显示“654321”。

一、Proteus仿真图

电路组成
根据任务要求,数码管动态扫描显示电路是由STM32F103R6、6位数码管(7SEG-MOX6-CC)和一片74LS245驱动电路组成。74LS245没学过的同学可以忽略,当成一根导线。
电路连接方法
将所有位的段选控制端并联起来,接到PC0~PC7引脚。
PC0~PC7引脚输出显示段码(包括小数点“.”DP段)。
PC0~PC7引脚通过一片74LS245依次接数码管的A~G和DP引脚。
PB0~PB5引脚输出位码,PB0~PB5引脚依次接数码管的位码引脚1~6。

二、MED代码

编程思想:数码管动态扫描显示实现分析
动态扫描是采用分时的方法,轮流点亮各位数码管的显示方式。
在某一时间段,只让其中一位数码管的“位选端”(com端)有效,并送出相应的字型编码。
动态扫描过程如下:
从段选线上送出字型编码,再控制位选端,字符就显示在指定数码管上,其他位选端无效的数码管都处于熄灭状态;
持续保持1.5ms时间,然后关闭所有数码管显示;
接下来又送出新的字型编码,按照上述过程又显示在另外一位数码管上,直到每一位数码管都扫描完为止。

在USER里面,新建并保存smgdtxs.c文件,smgdtxs.c主文件代码如下:

uint16_t  wei[]={0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df,0xff,0xff};        //位码

  for(i=1;i<7;i++)

  {    GPIO_Write(GPIOB,wei[i-1]);  //位选,数码管一个一个轮流显示

        GPIO_Write(GPIOC,table[i]);  //输出显示的字型码

        Delay(20);  //保持显示一段时间

        GPIO_Write(GPIOB,0x0ff);  //使所有数码管都熄灭一段时间

        Delay(20);

  }

点亮方式与上一个教程一样,核心思想就是利用人眼的余辉效应,只要点亮显示间隔2ms,显示效果会一直在人眼中保留,感觉好像都点亮一样。

动态数码管点亮在显示生活中比较常见,相对静态数码管的点亮优点是节省IO,且节能。

三、仿真效果和源代码资源

基于Proteus无实物零基础STM32入门自学教程(四)--数码管动态显示-单片机文档类资源-CSDN下载

  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远都是新手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值