STM32 1位共阳极数码管

数码管分为共阳极和共阴极,即多个二极管的同一端接到GND/Vss(若一起接到GND,则称为共阴极。若一起接到Vss,则称为共阳极)

把数码管上的每个二极管一次标号对应a,b,c,d,e,f,g,dp。我们知道发光二极管一端正一端负,才能发光,共阳极,当我们把另一端设置成0,发光二极管就会点亮,反之共阴极设置成1,发光二极管点亮。当我们想设置成0,就可以设置成下表:

共阳极

|----|---|---|---|---|---|---|---|
| Dp | G | F | E | D | C | B | A |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |

即1100 0000,对应段码为:0x60

共阴极

|----|---|---|---|---|---|---|---|
| Dp | G | F | E | D | C | B | A |
| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |

即0011 1111,对应段码为: 0x3F

cpp 复制代码
#include "bsp_digital_tube.h"

unsigned int num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff, 0x00};

void Digital_Tube_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitStructure.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_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}
cpp 复制代码
int main(void)
{
	int i;
	
	SysTick_Configuration();
	
	Digital_Tube_Configuration();
	
	while(1)
	{
		for(i = 0; i < 12; i++)
		{
			GPIOA->ODR = num[i];
			Delay_us(500000);
		}
	}
}

GPIOA->ODR是32位的输出数据寄存器(高16位保留,低16为依次对应某个GPIO口的16个引脚)。所以这里依次对应GPIO_Pin_0==a,GPIO_Pin_1==b...GPIO_Pin_7==Dp

相关推荐
Json____7 分钟前
Java练习题集-温度转换、成绩等级、九九乘法表等实战小项目15个
java·学习·编程学习·java学习·练习题集
一只数据集9 分钟前
Unitree G1苹果拾取放置深度数据集:963条高质量RGB-D操作轨迹助力3D感知与机器人学习
人工智能·学习·3d·机器人·制造
上海合宙LuatOS9 分钟前
合宙Air1601 MCU模组-硬件开发手册
单片机·嵌入式硬件·物联网·luatos
云深麋鹿13 分钟前
C++ | AVLTree
开发语言·c++
Qt程序员17 分钟前
从协议到实战:HTTP 反向代理
linux·c++·websocket·nginx·http·反向代理·正向代理
笨笨饿18 分钟前
#85_库函数开发
linux·c语言·网络·stm32·单片机·算法·个人开发
远离UE419 分钟前
Forward+ & Deferred+学习笔记
笔记·数码相机·学习
Hua-Jay25 分钟前
OpenCV联合C++/Qt 学习笔记(十六)----图像细化、轮廓检测、轮廓信息统计及轮廓外接多边形
c++·笔记·qt·opencv·学习·计算机视觉
谙弆悕博士26 分钟前
Fortran学习笔记
经验分享·笔记·学习·职场和发展·跳槽·学习方法·fortran
50万马克的面包31 分钟前
C语言:三大基础排序算法模板 冒泡 / 选择 / 插入)
c语言·笔记·算法·排序算法