单个数码管动态显示(STM32F103C8T6)

注:

        本文只是博主学习记录分享,仅供参考。如有错误肯定是博主理解有问题,谢谢!

一、前言

        通过STM32F103C8T6控制单个数码管动态显示数字0-9及字母A、B、C、D、E、F。

二、概述

        数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极的多个阴极。

(一)数码管引脚图及功能

        数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们和各个笔划,公共电极。共阳极就是把所有LED的阳极连接到共同接点com,每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示

(二)数码管共阴共阳的区别

        按发光管的单元连接方式可分为共阳极数码管共阴极数码管

        共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳极数码管在应用时将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

        共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴极数码管在应用时将公共极COM接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点亮,当某一字段的阳极为高电平时,相应字段就不亮。

 (三)字型码

共阳极字型码表

共阴极字型码表

三、硬件连接

四、程序 

1、初始化函数

void Digital_Tube_Pin_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	//打开时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

	//推挽输出
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | 
																GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	
	GPIO_SetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | 
											GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
}	

2、显示函数

void Digital_Tube_Display(GPIO_TypeDef* GPIOx,u8 val)
{
	uint16_t display_val = val << 8;
	
	GPIO_Write(GPIOx,display_val);
}

3、主函数

int main(void)
{
	int i = 0;
	Digital_Tube_Pin_Init();
	Sys_Delay_Init();
	//Usart1_Pin_Init(115200);
	//printf("初始化成功\r\n");
	
	while(1)
	{
		for (i = 0; i < 16;i++) {
			Digital_Tube_Display(GPIOB,smgduan[i]);
			delay_ms(500);
		}
	}
}

相关代码,有需要可以自行下载
网盘链接:
链接:https://pan.baidu.com/s/1KObTspAd10P6fnBTfWk9Vg 
提取码:21nj
如有什么问题欢迎指出来,有什么模块可以联系博主,博主会查询资料分享出来。

  • 35
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
好的,我可以为您提供一些简单的代码示例,用于在STM32微控制器上驱动数码管显示0到9。 首先,您需要连接数码管STM32微控制器的GPIO引脚上,并根据具体的数码管型号确定引脚的连接方式,例如共阳数码管需要将引脚连接到高电平,共阴数码管需要将引脚连接到低电平。 然后,您可以使用以下代码来实现数码管显示0到9的功能: ```c #include "stm32f10x.h" #define LED0 GPIO_Pin_0 #define LED1 GPIO_Pin_1 #define LED2 GPIO_Pin_2 #define LED3 GPIO_Pin_3 #define LED4 GPIO_Pin_4 #define LED5 GPIO_Pin_5 #define LED6 GPIO_Pin_6 #define LED7 GPIO_Pin_7 void Delay(__IO uint32_t nCount); int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = LED0 | LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) { GPIO_Write(GPIOB, 0x3F); // 显示数字0 Delay(500000); GPIO_Write(GPIOB, 0x06); // 显示数字1 Delay(500000); GPIO_Write(GPIOB, 0x5B); // 显示数字2 Delay(500000); GPIO_Write(GPIOB, 0x4F); // 显示数字3 Delay(500000); GPIO_Write(GPIOB, 0x66); // 显示数字4 Delay(500000); GPIO_Write(GPIOB, 0x6D); // 显示数字5 Delay(500000); GPIO_Write(GPIOB, 0x7D); // 显示数字6 Delay(500000); GPIO_Write(GPIOB, 0x07); // 显示数字7 Delay(500000); GPIO_Write(GPIOB, 0x7F); // 显示数字8 Delay(500000); GPIO_Write(GPIOB, 0x6F); // 显示数字9 Delay(500000); } } void Delay(__IO uint32_t nCount) { for (; nCount != 0; nCount--); } ``` 在这个示例代码中,我们使用了GPIOB引脚来控制数码管的显示,通过设置相应的GPIO引脚输出高电平或低电平,来控制数码管显示相应的数字。其中,Delay函数用于延时一段时间,以便我们可以看到数码管显示的数字。 请注意,此代码仅供参考,具体的实现方式可能会因为不同的数码管型号而有所不同。如有疑问,请参考相关的数码管数据手册或咨询专业人士。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员超庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值