2021-05-28_蓝桥杯嵌入式拓展板STM32G431--数码管

蓝桥杯嵌入式拓展板STM32G431--数码管


前言

仅涉及实现功能的代码模块,不涉及原理性知识讲解。

原理图

2021-05-28_蓝桥杯嵌入式拓展板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);

总结

仅供参考,没有原理性知识介绍。。。单纯用来自己学习,防止忘记2021-05-28_蓝桥杯嵌入式拓展板STM32G431--数码管

上一篇:stm32数码管显示实时时间并有闹钟功能


下一篇:沁恒微USB蓝牙单片机CH573F初步熟悉