Pantalla de tubo digital estática + pantalla de tubo digital dinámica - "51 microcomputadora de un solo chip"

Hola compañeros usuarios de CSDN, hoy el contenido de Xiaoyalan todavía trata sobre el conocimiento del microcontrolador 51, que es para pantallas de tubos digitales estáticos y pantallas de tubos digitales dinámicos. ¡Ahora, entremos en el mundo de los microcontroladores 51! ! !


Pantalla de tubo digital estática

Pantalla de tubo digital dinámica

código fuente


Pantalla de tubo digital estática

En primer lugar tenemos que saber qué es un tubo digital:

Es lo que está en la parte superior del microcontrolador 51 que parece una pantalla. Cuando se apaga, ¡parece ocho ochos! ! !

 

 

 

 

Entonces aquí hay algunos pequeños puntos de conocimiento sobre el lenguaje C:

 

  

 Después de comprender el conocimiento anterior, ¡podemos comenzar a escribir nuestro código!

#include <REGX52.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
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];
}
void main()
{
	Nixie(7,8);
	while(1)
	{}
}

Al modificar los parámetros de Nixie, puede cambiar los números y posiciones que muestra el tubo digital.

#incluir <REGX52.H>

carácter sin firmar NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Nixie (Ubicación de caracteres sin firmar, Número de caracteres sin firmar)
{     cambiar (Ubicación)     {     caso 1:         P2_4 = 1;         P2_3=1;         P2_2=1;         romper;     caso 2:         P2_4=1;         P2_3=1;         P2_2=0;         romper;     caso 3:         P2_4=1;         P2_3=0;         P2_2=1;         romper;     caso 4:         P2_4=1;         P2_3=0;         P2_2=0;         romper;     caso 5:         P2_4=0;
























        P2_3=1;
        P2_2=1;
        romper;
    caso 6:
        P2_4=0;
        P2_3=1;
        P2_2=0;
        romper;
    caso 7:
        P2_4=0;
        P2_3=0;
        P2_2=1;
        romper;
    caso 8:
        P2_4=0;
        P2_3=0;
        P2_2=0;
        romper;
    }
    P0=NixieTable[Número];
}
void principal()
{     Nixie(2,5);     mientras(1)     {} }



 


Pantalla de tubo digital dinámica

#include <REGX52.H>

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

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

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);
		Nixie(2,2);
		Nixie(3,3);
	}
}

 


código fuente

Pantalla de tubo digital estática

#incluir <REGX52.H>

carácter sin firmar NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Nixie (Ubicación de caracteres sin firmar, Número de caracteres sin firmar)
{     cambiar (Ubicación)     {     caso 1:         P2_4 = 1;         P2_3=1;         P2_2=1;         romper;     caso 2:         P2_4=1;         P2_3=1;         P2_2=0;         romper;     caso 3:         P2_4=1;         P2_3=0;         P2_2=1;         romper;     caso 4:         P2_4=1;         P2_3=0;         P2_2=0;         romper;     caso 5:         P2_4=0;
























        P2_3=1;
        P2_2=1;
        romper;
    caso 6:
        P2_4=0;
        P2_3=1;
        P2_2=0;
        romper;
    caso 7:
        P2_4=0;
        P2_3=0;
        P2_2=1;
        romper;
    caso 8:
        P2_4=0;
        P2_3=0;
        P2_2=0;
        romper;
    }
    P0=NixieTable[Número];
}
void principal()
{     Nixie(7,8);     mientras(1)     {} }




 

Pantalla de tubo digital dinámica

#incluir <REGX52.H>

carácter sin firmar NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Delay(xms de caracteres sin firmar) //@12.000MHz
{     datos de caracteres sin firmar i, j;     mientras(xms)     {         yo = 2;         j = 239;         hacer         {             mientras (--j);         } mientras yo);         xms--;     } }











void Nixie (Ubicación de caracteres sin firmar, Número de caracteres sin firmar)
{     cambiar (Ubicación)     {     caso 1:         P2_4 = 1;         P2_3=1;         P2_2=1;         romper;     caso 2:         P2_4=1;         P2_3=1;         P2_2=0;         romper;     caso 3:         P2_4=1;         P2_3=0;         P2_2=1;         romper;     caso 4:         P2_4=1;         P2_3=0;         P2_2=0;         romper;     caso 5:         P2_4=0;         P2_3=1;         P2_2=1;         romper;



























    caso 6:
        P2_4=0;
        P2_3=1;
        P2_2=0;
        romper;
    caso 7:
        P2_4=0;
        P2_3=0;
        P2_2=1;
        romper;
    caso 8:
        P2_4=0;
        P2_3=0;
        P2_2=0;
        romper;
    }
    P0=NixieTable[Número];
    Retraso(1);
    P0=0x00;
}
void principal()
{     mientras(1)     {         Nixie(1,1);         Nixie(2,2);         Nixie(3,3);     } }







Bien, eso es todo para la pantalla de tubo digital estática y la pantalla de tubo digital dinámica, ¡sigamos adelante! ! !

 

Supongo que te gusta

Origin blog.csdn.net/weixin_74957752/article/details/133485670
Recomendado
Clasificación