2023/11/15 静态数码管显示

上面的位选,也就是DIG1那玩意,由于二极管的作用,只要流向和电势差存在,能够单向导电,那么那一位就会亮起。比如最上面的如果接1101,那么由于1代表高电势,而二极管的电流方向是向上的,那么就使那一位不会亮起。同理,由于0代表低电势,那一位就可以亮起。

而下面的11 7 4 2 1 10 5 3则是位选端,能够决定每一位到底显示的是什么数字。而这两样就决定了,由于共用引脚的存在,不可能使其在同一时刻显示多个不同的数字,但是,通过视觉暂留可以得到这一效果!(动态数码管显示)


138译码器

可以使8个端口分别输出,且使用3个L口来控制-------十进制转二进制

e.g.LED8-Y7-ABC111;LED5-Y4-ABC010

2023/11/15 静态数码管显示_第1张图片

双向数据缓冲器

2023/11/15 静态数码管显示_第2张图片

高电频点亮不如低电频点亮亮

给我个人的感觉就是,它接受一个较为微弱的信号,然后他自己能够控制信号并在自己的电源上输出电流,增强驱动

#include 

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

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];
}
void main()
{

	Nixie(2,6);
	while(1)
	{
	
	}
}
	

这里使用了两个东西:

1.使用子函数来控制位选,这样我们只需要输入想要让其亮起的数字位置,就可以实现,简化代码结构。这里需要注意,case1也就是第一位其实是LED8(倒序)

2.使用数组来管理数码管段码表

主要就是这些。然后当我乱试的时候,确实发现了“不可能使其在同一时刻显示多个不同的数字”这一效果hh

2023/11/15 静态数码管显示_第3张图片2023/11/15 静态数码管显示_第4张图片2023/11/15 静态数码管显示_第5张图片期待明天能学到怎么解决

你可能感兴趣的:(51单片机,51单片机)