【国信长天蓝桥杯】扩展板③ 数码管的使用

摘要

本文章主要基于国信长天蓝桥杯嵌入式开发板及其扩展板,介绍了扩展板上数码管的使用方法。
在这里插入图片描述

硬件原理图

在这里插入图片描述

通过上图可以看出,三个数码管分别由三个75LS595锁存器驱动,采用共阴极的方式连接。

75LS595的三个控制引脚RCLKSCKSER与主控板连接,连接方式如下:

PA1 <-----> SER
PA2 <-----> RCLK
PA3 <-----> SCK

数码管使用步骤

① 复制数码管驱动代码

复制下面的代码,粘贴到main.c文件 main()函数上面空白处


unsigned char LEDS[17] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};
	
static void LEDS_Init(void) //初始化数码管
{
	GPIO_InitTypeDef GPIO_InitStruct = {0};
	__HAL_RCC_GPIOA_CLK_ENABLE();
  	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_PIN_RESET);
	GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化PA1,2,3脚为输入模式
}

static void LEDS_Display(int data) //数码管显示数字
{
	int i,j;
	unsigned char tem = 0;

	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
	
	for(j = 0; j < 3; j++)
	{
		tem = LEDS[data%10]; 
		if((data == 0) && (j > 0))tem = LEDS[16];
		data/=10;
		for(i = 0; i < 8; i++)
		{
				HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
				if(tem & 0x80)
				{
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
				}
				else
				{
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
				}

				tem = tem << 1;
				HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
		}
	}
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
}

② 初始化数码管并显示数字

如下图所示,在main() 函数中LCD_Init();下面调用 LEDS_Init();

在这里插入图片描述

在while(1)里面直接调用 LEDS_Display();即可在数码管上显示数字,注意最多只能显示三位数。

作者:我是鹏老师

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值