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

编程知识 行业动态 更新时间:2024-06-13 00:22:42

本自学教程三开始教大家动态点亮数码管,主要相对于教程三的静态点亮模式。
采用数码管动态扫描方式,使用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下载

更多推荐

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

本文发布于:2023-04-03 01:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/8347491a738091b829dc8d3989fba21d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实物   入门   数码管   教程   动态

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!