0302基于STM32的数码管动态扫描proteus仿真

本文介绍了一段STM32F10x系列微控制器的硬件设计代码,通过包含`stm32f10x.h`、`smg.h`和`Delay.h`头文件,实现了GPIO口的写入操作。代码中定义了两个数组`table`和`wei`,用于显示特定的字符。在无限循环中,程序逐个将数组元素写入GPIOB和GPIOC,通过延时函数实现字符的动态显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件设计

链接:https://pan.baidu.com/s/1wv5nsR7VAf1DsmXNmMIDag
提取码:a76k
在这里插入图片描述

代码设计

#include "stm32f10x.h"
#include "smg.h"
#include "Delay.h"
uint16_t table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint16_t wei[]={0x0fe,0x0fd,0x0fb,0x0f7,0x0ef,0x0df,0xff,0xff};
uint8_t i;
int main(void)
{
 SMG_Init();
 while(1)
 {
  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);
   }
 }
}

### STM32控制数码管动态显示实现方法 #### 一、硬件连接 为了使STM32能够成功驱动数码管并实现动态扫描显示,需先完成两者间的正确接线。通常情况下,共阳极数码管的公共端接到电源正极,而各段则通过限流电阻分别连到MCU的不同I/O口上;对于共阴极型,则相反处理其公共端接地,其他部分相同[^1]。 #### 二、软件配置 ##### 初始化GPIO接口 在程序初始化阶段,要设置好用于控制数码管各个笔画亮灭状态对应的GPIO引脚模式为推挽输出方式,并指定初始电平高低以决定默认熄屏与否。 ```c // 定义结构体变量存储待配置参数 GPIO_InitTypeDef GPIO_InitStructure; // 配置具体哪个IO作为输出,这里假设PA0~7对应8个LED灯位模拟简单情况 GPIO_InitStructure.Pin = GPIO_PIN_0 | GPIO_PIN_1 | ... | GPIO_PIN_7; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; // 设置成推挽输出类型 GPIO_InitStructure.Pull = GPIO_NOPULL; // 不带上下拉 GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; // 设定高速切换速度 HAL_GPIO_Init(GPIOA,&GPIO_InitStructure); // 应用上述设定给选定外设 ``` ##### 编写函数管理显示逻辑 创建专门负责刷新当前应展示数值至实际物理器件上的子过程,在此期间会循环遍历每一位数的位置及其所代表字符编码表内的相应点亮组合,再经由延时操作制造视觉暂留效应从而达成连续变化的效果。 ```c void Display_Digit(uint8_t digit[], uint8_t length){ for(int i=0;i<length;i++){ // 关闭前一位选通信号 HAL_GPIO_WritePin(DIGIT_PORT,DIGIT_PINS[i],RESET); // 输出新数据到段线上 Write_Segment(digit[i]); // 打开新的选通信号 HAL_GPIO_WritePin(DIGIT_PORT,DIGIT_PINS[i],SET); // 延迟一段时间让眼睛看到这个数字 Delay_ms(5); } } ``` #### 三、注意事项 - 动态扫描频率不宜过低以免造成闪烁感影响观感体验; - 各种不同型号之间可能存在差异所以在移植代码之前务必查阅官方手册确认细节之处; - 如果遇到无法正常工作的情况可以尝试调整供电电压范围或者更换质量更好的外部元件来解决问题[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值