51数码管

目录

数码管介绍:

原理图分析:

原理及代码:

静态显示

动态显示

数码管介绍:

数码管是一种显示设备,用于在电子设备中显示数字和一些字母。它由七个发光二极管(LED)组成,分别用于显示数字0到9。每个数字在数码管中的显示方式都不同,因此数码管可以显示各种数字和一些字母。数码管通常有两种类型:共阳极和共阴极。共阳极的数码管的阳极是共用的,而共阴极的数码管的阴极是共用的。数码管常用于计算器、时钟、计时器、电子游戏等电子设备中的显示部分。

 而要讲的数码管内部是由8个发光二极管(包含一个点)组成,通过对所选二极管的点亮来实现数码管显示想要的数字。com端共阴极,则高电平点亮,即给所选的发光二极管置1,相反com端共阳极,则低电平点亮,即给所选的发光二极管置0.

原理图分析:

DIR接高电平就往右发数据/接低电平往左发数据。

低电平驱动能力强,所以74HC245(缓冲器)的作用是提高LCD驱动能力更好的传数据。

数据变为控制信号经过74HC245自带的VCC汲取能量,在输出数据。

CC2:(电容)(稳定电源,电源滤波):10 0000=100 000PF           PF  nF   uF   mF    F    (10^3)

RP4:排阻4个为一体(限流电阻,防止数码管电流过大) 

138译码器:控制P22,P23,P24使LED1~8中一位选中。

再控制P00~P07选中段码端,显示数据。

原理及代码:

静态显示

1位数码管显示某个字符时,相应的发光二极管恒定的导通或截止。

优点:占用CPU时间少,显示便于检测和控制。缺点:占用IO口多,硬件电路比较复杂,成本较高。

代码:

#include <REGX52.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//定义一个数组存储共阴极0~9显示的代码

void Nixie(unsigned char Location,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;//com端选择8个位置
	}
	P0=NixieTable[Number];
}

void main()
{
	Nixie(2,3);
	while(1)
	{
		
	}
}

动态显示

轮流向各位数码管送出字形码(段码)和相应的位码,快速变化,利用发光二极管的余辉和视觉暂留作用,使人感觉各位数码管同时在显示。优点:节约IO口资源。缺点:控制复杂。

代码:

#include <REGX52.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//段选
void Delay(unsigned int xms )//ms延时函数		
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
	
}

void Nixie(unsigned char Location,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);
	}
}

消影:动态数码管消影是一种常见的视觉效果,可以通过快速交替显示数码管的每个数字来实现。这种效果可以通过控制电流的开关和数码管显示的刷新频率来实现。具体来说,当数码管显示一个数字时,电流通过该数字的显示段,使其发光。下一个数字的段将在很短的时间内被打开,然后前一个数字的段将被关闭。这样快速交替的操作会使得每个数字只在屏幕上停留很短的时间,给人一种看起来数字正在动的感觉。要实现动态数码管消影效果,需要精确控制电流的开关和数码管刷新的频率。这可以通过微控制器或其他电子设备来实现。在控制电路中使用适当的定时器和计时器,可以确保数码管的每个数字仅显示一段时间,然后迅速切换到下一个数字。需要注意的是,动态数码管消影效果对于肉眼来说是可见的,但对于摄像机的录像可能会造成抖动或闪烁。因此,在拍摄视频或进行其他需要高质量图像的场合时,可能需要采取其他的措施来消除这些问题

位选  段选  清零  位选  段选  清零 位选  段选 (单片机太快会篡位,加个清零解决(上面代码:P0=0x00))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值