51单片机之动态数码管显示

一、硬件介绍

LED数码管是一种由多个发光二极管(LED)封装在一起,形成"8"字型的显示器件。它广泛用于仪表、时钟、车站、家电等场合,用于显示数字、字母或符号。

通过控制点亮a b c d e f g dp来显示数字,本实验开发板的数码管是两个四位一体的。

二、原理图

2.1 动态数码管

从电路图中看出,动态数码管的上端分别为LED1-8,通过控制LED1-8的电平来控制某一位的数码管显示,称之为:位选;

在数码管的下方是每个LED的8个位a,b,c,d,e,f,g,dp。通过电路与 74HC245相连,通过控制74HC245的输出来控制某一数码管显示的数字,即a-dp的哪些段,称之为:段选;

位选:控制LED1-8,用于确定8个数码管的某一位;(如第一个数码管亮)。

段选:控制a,b,c,d,e,f,g,dp,用于确定某一个数码管显示的数字;(如显示的数字为6)。

其中 74HC245芯片用来增加单片机引脚的驱动能力。

2.2 74HC138译码器

其输入端为P22-P24,输出端为LED1-LED8,为一种三通道输入、八通道输出译码器,通过P22-P24控制LED1-LED8,是一种低电平有效器件。即将3位二进制(P22-P24),译码成8种输出状态,并且一共有8个输出I/O,这8位输出的特点是:同时只有一位有效、低电平表示有效,表示选中,74HC138实现了用3根线选择8根线(8选1)的功能。

2.3 消影问题

动态数码管显示存在消影问题

导致消影问题的原因如下:

  1. 视觉暂留效应:人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间后,光的感觉才会消失,这个短暂的时间称为视觉暂留时间。在数码管动态显示中,如果刷新速度不够快,前一个显示内容的残像会在视觉上残留一段时间,导致重影现象。

  2. 刷新速度限制:数码管的刷新速度受到硬件和软件控制的影响。硬件上,如驱动电路的速度、锁存器的响应时间等;软件上,如控制程序的执行效率、延时函数的设置等,都会影响数码管的刷新速度。

  3. 数据残留:在动态显示过程中,如果前一个显示内容的数据在P0口或其他控制端口上残留,而没有及时清除,那么在下一个显示周期中,这些残留数据可能会与新数据发生冲突,导致显示异常。

解决办法:在位选和段选之间进行清零处理,即P0=0x00。

三、实验

3.1 代码示例

objectivec 复制代码
#include <REGX52.H>
unsigned char NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//Êý×Ö0-9

void Delay(unsigned int xms)	//@12.000MHz
{
	unsigned char data i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}


void Nixie(unsigned char Location, unsigned char 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;
	}
	P0=NixieTable[Number];
	Delay(1);
	P0=0x00; //清零
}
void main()
{
	
	while(1)
	{
		Nixie(1,1);
		Delay(20);
		Nixie(2,2); 
		Delay(20);
		Nixie(3,3);
		Delay(20);
	}
}

3.2 实验现象

动态数码管

相关推荐
星期天229 分钟前
1.2STM32江科大GPIO的输入(电路硬件连接)
单片机·嵌入式硬件·stm32江科大·gpio的输入·硬件电路的链接
Darken032 小时前
标准外设库与HAL库有什么区别?都怎样去使用?如何区分?
单片机·嵌入式硬件·hal库与基本外设库
czhaii3 小时前
8051U深度入门到32位51大型实战
单片机
Hans_Rudle3 小时前
在香橙派(昇腾NPU)(kunpengpro/aipro)上部署自己的模型 -以Unet为例
嵌入式硬件·香橙派
boneStudent3 小时前
Day28:I2C 配置与使用
stm32·单片机·嵌入式硬件
法号:行颠4 小时前
Chaos-nano协作式异步操作系统(六):`Chaos-nano` 在手持式 `VOC` 检测设备上的应用
c语言·单片机·嵌入式硬件·mcu·系统架构
XINVRY-FPGA5 小时前
XC7Z030-2SBG485I Xilinx Zynq-7000 系列 SoC FPGA
嵌入式硬件·fpga开发·硬件工程·fpga
xiaohai@Linux6 小时前
LVGL显示gif动图导致MCU进入HardFault_Handler问题(已解决!)
单片机·lvgl
czhaii6 小时前
并口LCD1602用DMA刷屏
单片机·嵌入式硬件·硬件工程
离凌寒6 小时前
二、在freertos中对应esp01s模块的ap模式下的通信测试。
单片机·freertos·esp01s