静态数码显示管显示

发布时间 2023-04-30 15:54:39作者: rickly233

先看原理图

上面的led灯(也就是P2)来控制灯的选择(因为只能选择一个)

控制灯的选择并不需要8个输入口来控制

用个三八译码器即可代替

上图极为138译码器

用P2的2,3,4来输入,输入的数字对应的10进制数代表选择的led灯编号 - 1

注意这里的顺序是4,3,2,也就是倒着来组成的

然后选择完灯了还要在相应的灯上面显示数字

左边的一列P0_0到P0_7就代表相应的格子

注意格子组成二进制数的顺序是从下到上的

下面是完整程序:

#include <at89c51RC2.h>

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

unsigned char fun(unsigned char loc,num)
{
	switch(loc)
	{
		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 = arr[num];
}

int main()
{
	fun(6,3);
	while(1);
	// P2_4 = 0;P2_3 = 1;P2_2 = 0;
	// P0 = 0xFF;
}