蓝桥杯嵌入式拓展板STM32G431--数码管
前言
仅涉及实现功能的代码模块,不涉及原理性知识讲解。
原理图
一、seg接口宏定义
名称按照板子上的命名
PA1、PA2、PA3全设置为GPIO_output即可
#define SER_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET)
#define SER_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET)
#define RCK_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET)
#define RCK_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET)
#define SCK_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET)
#define SCK_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET)
二、seg显示模块-子函数
代码如下(示例):
unsigned char seg7[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};
void seg_set(unsigned int bit1,unsigned int bit2,unsigned int bit3)
{
unsigned int i = 0;
unsigned int seg_play = 0;
RCK_L;
seg_play = seg7[bit3];
for(i = 0; i< 8;i++)
{
SCK_L;
if(seg_play & 0x80)
SER_H;
else
SER_L;
seg_play = seg_play <<1;
SCK_L;
SCK_H;
}
seg_play = seg7[bit2];
for(i = 0; i< 8;i++)
{
SCK_L;
if(seg_play & 0x80)
SER_H;
else
SER_L;
seg_play = seg_play <<1;
SCK_L;
SCK_H;
}
seg_play = seg7[bit1];
for(i = 0; i< 8;i++)
{
SCK_L;
if(seg_play & 0x80)
SER_H;
else
SER_L;
seg_play = seg_play <<1;
SCK_L;
SCK_H;
}
RCK_L;
RCK_H;
}
三、显示数据–调用seg显示函数
代码如下(示例):
seg_set(1,2,3);
HAL_Delay(1000);
总结
仅供参考,没有原理性知识介绍。。。单纯用来自己学习,防止忘记