51单片机-第二节-数码管

一、数码管介绍:

1.什么是数码管?

多个LED组合成8字显示器。

2.一位数码管的引脚(只有一个8):

数码管的引脚为1-10,其中公共极为3,8,其余八位分别对应一个二极管,如下图:

若3,8为公共阴极,则各引脚接高电平1为亮;

若3,8为公共阳极,则各引脚接低电平0为亮;

3.多位数码管的引脚(四个8):

其中每个8的对应位置(如A),都链接在一个引脚上,故只需要12(4+8)个引脚。

4.多位数码管的缺点与解决:

缺点:因为4个8的同一位置链接在同一引脚,故只能显示同一数字(如同时显示四个1)。

解决:动态数码管,利用人眼分辨率低,快速切换四个数字,让每个数字高速频闪,欺骗眼睛。

(即第一个数字显示1,立刻关闭第一个,并让第二个显示2 。。。)

二、静态数码管实战:LED6显示6

1.51单片机数码管端口介绍:

由P2_2 - P2_4控制8个8的亮灭,三个端口,二进制转十进制,2^3=8,遵循CBA。

(例:101(CBA)=5,使Y5端口对应LED6亮)

由P0_0 - P0_7控制每个8的每个二极管亮灭。

2.实战代码:

cpp 复制代码
void main()
{
	P2_4 = 1;
	P2_3 = 0;
	P2_2 = 1;

	P0 = 0x7D;// 0111 1101 分别对应P0_7-P0_0,注意是倒着的
	while (1);
}

3.进阶代码:设计子函数,可直接指定对应位置显示对应数字:

cpp 复制代码
void Nixie(unsigned char Location, int Number)
{
	switch (Location)
	{
	case 1:P2_4 = 1; P2_3 = 1; P2_2 = 1; break;
	case 2:P2_4 = 1; P2_3 = 1; P2_2 = 0; break;
	case 3:P2_4 = 1; P2_3 = 0; P2_2 = 1; break;
	case 4:P2_4 = 1; P2_3 = 0; P2_2 = 0; break;
	case 5:P2_4 = 0; P2_3 = 1; P2_2 = 1; break;
	case 6:P2_4 = 0; P2_3 = 1; P2_2 = 0; break;
	case 7:P2_4 = 0; P2_3 = 0; P2_2 = 1; break;
	case 8:P2_4 = 0; P2_3 = 0; P2_2 = 0; break;
	}

	unsigned char NixieTable[10] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
	P0 = NixieTable[Number];  

	Delayms(1);
	P0 = 0x00;//显示一下后清零
}

三、动态数码管实战:显示123:

cpp 复制代码
void main()
{
	while (1)
	{
		Nixie(1, 1);
		Delayms(200);
		Nixie(2, 2);
		Delayms(200);
		Nixie(3, 3);
		Delayms(200);
	}
}
相关推荐
Shylock_Mister11 分钟前
STM32低功耗模式解析与应用指南
stm32·单片机·嵌入式硬件
KD-倘若没有倘若1 小时前
禁用笔记本默认键盘
计算机外设·电脑
ACP广源盛139246256738 小时前
GSV2006@ACP#2 进 4 出 HDMI2.0 中继器(带音频提取 / 嵌入功能)全解析
单片机·嵌入式硬件·音视频
王林(瑞昱Realtek,龙迅)8 小时前
视频拼接,分割,矩阵技术方案介绍
图像处理·嵌入式硬件·显示器·8k显示·画面拼接
小曹要微笑12 小时前
STM32各系列时钟树详解
c语言·stm32·单片机·嵌入式硬件·算法
炸膛坦客12 小时前
Cortex-M3-STM32F1 开发:(三十)HAL 库开发 ➤ 通用定时器 2/3/4/5 的时钟源寄存器设置,以及中断实验
stm32·单片机·嵌入式硬件
inputA12 小时前
【LwIP源码学习8】netbuf源码分析
android·c语言·笔记·嵌入式硬件·学习
d111111111d13 小时前
STM32外设学习-I2C(细节)--学习笔记
笔记·stm32·单片机·嵌入式硬件·学习
chuwengeileyan113 小时前
stm32 光敏电阻 光控灯
stm32·单片机·嵌入式硬件
ElfBoard14 小时前
ElfBoard技术贴|如何在【RK3588】ELF 2开发板上进行UART引脚复用配置
人工智能·单片机·嵌入式硬件·物联网