STM32F 实现单个数码管循环显示数字0-9,请给出代码
时间: 2023-06-02 12:05:21 浏览: 356
动态扫描数码管-各位0~9循环源码【有详细注释】
以下是使用STM32F实现单个数码管循环显示数字0-9的代码:
```c
#include "stm32f4xx.h"
int main(void) {
uint8_t num = 0;
uint16_t display[10] = {0x3F00, 0x0600, 0x5B00, 0x4F00, 0x6600, 0x6D00, 0x7D00, 0x0700, 0x7F00, 0x6F00};
// 数字0-9对应的7段数码管编码
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // 数码管共阴极
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while(1) {
uint8_t i;
for(i = 0; i < 8; i++) {
GPIO_Write(GPIOA, display[num] | (1 << i));
Delay(2);
GPIO_Write(GPIOA, display[num]);
}
num++;
num %= 10; // 循环显示数字0-9
}
}
void Delay(__IO uint32_t nCount) {
while(nCount--) {
}
}
```
阅读全文