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

28
五月
2021

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

  • 前言
  • 原理图
  • 一、seg接口宏定义
  • 二、seg显示模块-子函数
  • 三、显示数据--调用seg显示函数
  • 总结


前言

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

原理图

在这里插入图片描述

一、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);

总结

仅供参考,没有原理性知识介绍。。。单纯用来自己学习,防止忘记在这里插入图片描述

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员