共阳极数码管,stm32F10x系列数码管从0显示到9的例程
时间: 2024-05-10 12:14:50 浏览: 19
共阳极数码管是指数码管的阳极(正极)是共用的,而数码管的阴极(负极)是分开的。在使用共阳极数码管时,需要将需要显示的数字通过控制数码管的阴极来实现。
下面是 STM32F10x 系列数码管从 0 显示到 9 的例程,使用的是共阳极数码管:
```c
#include "stm32f10x.h"
// 数码管显示0~9的编码
uint8_t num[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
int main(void)
{
// 初始化 IO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
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_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while (1)
{
// 显示0~9
for (uint8_t i = 0; i < 10; i++)
{
GPIO_Write(GPIOB, num[i]);
delay_ms(1000);
}
}
}
// 延时函数
void delay_ms(uint32_t ms)
{
uint32_t i, j;
for (i = 0; i < ms; i++)
{
for (j = 0; j < 2000; j++)
{
}
}
}
```
在上述代码中,使用了 `num` 数组来存储数码管显示 0~9 的编码,通过控制 GPIOB 的 8 个引脚来控制数码管的阴极,从而实现显示数字的功能。在 `main` 函数中,使用循环来显示 0~9 的数字,并使用 `delay_ms` 函数来实现延时。