数码管显示
1.模块引脚
SER->PA1、RCLK->PA2、SCK->PA3
2.Cubemx实现的配置
3.生成工程
1.段码宏定义
const uint8_t Seg7[17] = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00};
2.数码管显示程序
逻辑理解较易,此处不做解析
void SEG_Display(uint8_t SET1,uint8_t SET2,uint8_t SET3)
{
uint8_t SEG_Flag,i;
SEG_Flag = Seg7[SET3];
for(i = 0; i < 8; i++)
{
if(SEG_Flag & 0x80)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
}
else
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
SEG_Flag <<= 1;
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
}
SEG_Flag = Seg7[SET2];
for(i = 0; i < 8; i++)
{
if(SEG_Flag & 0x80)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
}
else
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
SEG_Flag <<= 1;
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
}
SEG_Flag = Seg7[SET1];
for(i = 0; i < 8; i++)
{
if(SEG_Flag & 0x80)
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
}
else
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
SEG_Flag <<= 1;
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
}