STM32
直播中

张玉兰

8年用户 1446经验值
私信 关注
[问答]

如何去实现数码管的动态显示呢

如何去实现数码管的动态显示呢?有什么方法吗?

回帖(1)

陆轶文

2021-10-21 17:07:53
  数码管动态显示
  四位共阳极数码管,段码给0显示
  main.c
  #include “sys.h”
  #include “delay.h”
  //#include “led.h”
  #include “num.h”
  int main(void)
  {
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //系统时钟设置PLL作为系统时钟
  delay_init(); //初始化延时函数
  NUM_MOVE(); //数码管动态函数
  }
  num.c
  #include “num.h”
  #include “delay.h”
  //动态数码管段码
  unsigned char seg[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  //数码管初始化
  void NUM_Init(void){
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //使能GPIO端口时钟,数码管显示GPIO使能配置
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //位选使能
  //段码设置
  GPIO_InitStructure.GPIO_Pin = NUM_STATIC_GPIO; //数码管段选显示GPIO引脚配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //最高输出速率50MHz
  GPIO_Init(GPIOD, &GPIO_InitStructure); //IO口初始化
  //位选设置
  GPIO_InitStructure.GPIO_Pin = NUM_STATIC_BIT; //数码管位选显示GPIO引脚配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
  GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //最高输出速率50MHz
  GPIO_Init(GPIOC, &GPIO_InitStructure); //IO口初始化
  GPIO_ResetBits(GPIOC, NUM_STATIC_BIT); //给数码管位码置0
  }
  //数码管动态函数
  void NUM_MOVE(void){
  uint16_t i;
  NUM_Init();
  while(1)
  {
  for(i=0;i《16;i++)
  {
  GPIO_Write(GPIOD,seg[i]); //段码输出
  delay_ms(3000);
  }
  }
  }
  num.h
  #include “sys.h”
  //段码引脚
  #define NUM_STATIC_GPIO GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7
  #define NUM_STATIC_BIT GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3
  //数码管动态函数
  void NUM_MOVE(void);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分