数码管显示

发布时间 2024-01-07 17:04:00作者: lololopopo

数码管显示

原理图

静态数码管显示

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码管显示0-9对应的P0口代码

//某一位显示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;
	}
	P0=NixieTable[Number];
	
}
void main()
{
	
	Nixie(2,8);//例子
	while(1)
	{
		
	}
}

动态数码管显示

#include <REGX52.H>
#include <INTRINS.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数码管显示0-9对应的P0口代码

void Delayms(unsigned int xms)		//@11.0592MHz  延时函数
{
	unsigned char i, j;
	while(xms)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
	
}
//某一位显示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;
	}
	P0=NixieTable[Number];
	Delayms(1);//消影
	P0=0x00;//消影
	
}

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