news 2026/5/21 9:17:32

STM32/5011AS一位共阴8段数码管

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32/5011AS一位共阴8段数码管

目录

1 5011AS数码管简介

2 5011AS数码管原理

3 设计思路

4 示例源码


1 5011AS数码管简介

数码管是能显示数字和其他信息的一种发光电子器件,每一位数码管分为七段和八段(含小数点DP);而每一段又可以看作是一个发光二极管。5011AS数码管则是一位共阴八段数码管。

2 5011AS数码管原理

5011AS数码管一共有10个引脚(如上左图)1-10每个编号便是一个引脚,除了公共引脚3和8外,每个引脚都对应数码管的一个段(如上右图,除公共端刚好八个段)引脚7对应数码管段A、引脚6对应数码管段B,以此类推......

共阴和共阳:

  • 共阴则是公共端3和8接地(GND),其余引脚给一个高电平(3.3v)则点亮低电平则熄灭;
  • 共阳则是公共端3和8接高电平(3.3v),其余引脚给一个低电平(GND)则点亮高电平则熄灭;

5011AS数码管是一位共阴八段数码管,所以公共端接地,其他引脚接单片机即可。

3 设计思路

以数码管显示0-9为例:

第一,数码管如果要显示0-9,就要先知道显示(0-9)中每个数字时,哪些段需要点亮哪些段需要熄灭?实现:将八个段按A、B、C、D、E、F、G、DP排序,每个段对应一个位,当位为1时对应的段点亮为0时对应的段熄灭。所以当数码管不显示时,八个段应对应“00000000”,显示0时八个段对应“11111100”,以此类推......

第二,创建一个数组用于将0-9十位数每个段所对应的值存入,数组第1位索引0为对应0,第2位索引1对应1,......,第10位索引9对应9;

第三,创建函数,当需要数码管显示0时就传入0,需要数码管显示1时就传入1。

4 示例源码

smg10.h

#ifndef __SMG10_H #define __SMG10_H #include "stm32f10x.h" /*定义GPIO端口、时钟和引脚宏(可根据需求更改)*/ #define SMG10_GPIO_PORT GPIOA #define SMG10_GPIO_CLOCK RCC_APB2Periph_GPIOA #define SMG10_GPIO_PIN GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 /*定义数码管各段对应的GPIO引脚宏(可根据需求更改)*/ #define SMG10_GPIO_PIN_A GPIO_Pin_5 //数码管段A接PA5 #define SMG10_GPIO_PIN_B GPIO_Pin_4 //数码管段B接PA4 #define SMG10_GPIO_PIN_C GPIO_Pin_2 //数码管段C接PA2 #define SMG10_GPIO_PIN_D GPIO_Pin_1 //数码管段D接PA1 #define SMG10_GPIO_PIN_E GPIO_Pin_0 //数码管段E接PA0 #define SMG10_GPIO_PIN_F GPIO_Pin_6 //数码管段F接PA6 #define SMG10_GPIO_PIN_G GPIO_Pin_7 //数码管段G接PA7 #define SMG10_GPIO_PIN_DP GPIO_Pin_3 //数码管段DP(小数点)接PA3 /*函数定义*/ void SMG10_Init(void); void SMG10_ShowNuber(uint8_t number); #endif

smg10.c

/************************************************************** * 文件名: smg10.c * * 作者: CSDN:拾知_H * * 版本: V1.0 * * 说明: smg10源文件 **************************************************************/ #include "stm32f10x.h" // Device header #include "smg10.h" /*定义数组储存0-9各段取值 0 1 2 3 4 5 6 7 8 9*/ char SMG0_9Num[10][8] = {"11111100", "00001100", "11011010", "11110010", "01100110", "10110110", "10111110", "11100000", "11111110", "11110110"}; /** 函数名字 :SMG10_Init() 函数功能 :数码管初始化 **/ void SMG10_Init(void) { RCC_APB2PeriphClockCmd(SMG10_GPIO_CLOCK, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = SMG10_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(SMG10_GPIO_PORT, &GPIO_InitStructure); /*默认低电平*/ GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_A, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_B, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_C, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_D, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_E, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_F, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_G, Bit_RESET); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_DP,Bit_RESET); } /** 函数名字 :SMG10_ShowNuber() 函数功能 :数码管显示0-9 **/ void SMG10_ShowNuber(uint8_t number) { GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_A, (BitAction)((uint8_t)SMG0_9Num[number][0] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_B, (BitAction)((uint8_t)SMG0_9Num[number][1] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_C, (BitAction)((uint8_t)SMG0_9Num[number][2] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_D, (BitAction)((uint8_t)SMG0_9Num[number][3] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_E, (BitAction)((uint8_t)SMG0_9Num[number][4] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_F, (BitAction)((uint8_t)SMG0_9Num[number][5] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_G, (BitAction)((uint8_t)SMG0_9Num[number][6] - '0')); GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_DP, (BitAction)((uint8_t)SMG0_9Num[number][7] - '0')); // GPIO_WriteBit(SMG10_GPIO_PORT, SMG10_GPIO_PIN_DP, Bit_SET); //点亮DP(小数点) }

示例代码文件下载链接:https://download.csdn.net/download/2502_91794894/92530956

注:以上内容仅个人理解,不具备唯一性和绝对正确性,仅供参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 9:16:29

CANN/Ascend C bfloat16x2比较函数

__hequx2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…

作者头像 李华
网站建设 2026/5/21 9:15:27

告别/dev/ttyUSB0权限困扰:用udev规则和C++封装类优雅管理你的CH341设备

告别/dev/ttyUSB0权限困扰:用udev规则和C封装类优雅管理你的CH341设备 在嵌入式开发和工业控制领域,CH340/CH341系列USB转串口芯片因其稳定性和低成本而广受欢迎。然而,当开发者在Linux环境下同时连接多个设备时,常常会遇到设备节…

作者头像 李华
网站建设 2026/5/21 9:13:56

cann/asc-devkit hypotf函数文档

hypotf 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/can…

作者头像 李华
网站建设 2026/5/21 9:10:35

如何用qmc-decoder在5分钟内解锁QQ音乐加密音频文件?

如何用qmc-decoder在5分钟内解锁QQ音乐加密音频文件? 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音频文件无法在其他播放器上播放而…

作者头像 李华
网站建设 2026/5/21 9:10:32

语雀文档离线转换终极指南:3步轻松实现知识库备份

语雀文档离线转换终极指南:3步轻松实现知识库备份 【免费下载链接】yuque2book export yuque repo to a book 将你的语雀文档导出的工具 项目地址: https://gitcode.com/gh_mirrors/yu/yuque2book 想要将语雀文档库完整转换为可离线阅读的HTML格式吗&#xf…

作者头像 李华