Static digital tube display + dynamic digital tube display - "51 single chip microcomputer"

Hello fellow CSDN users, today the content of Xiaoyalan is still about the knowledge of 51 microcontroller, which is for static digital tube display and dynamic digital tube display. Now, let us enter the world of 51 microcontroller! ! !


Static digital tube display

Dynamic digital tube display

source code


Static digital tube display

First of all, we have to know what a digital tube is:

It is the thing on the top of the 51 microcontroller that looks like a display screen. When the power is turned off, it looks like eight eights! ! !

 

 

 

 

Then here are some little knowledge points about C language:

 

  

 After understanding the above knowledge, we can start writing our code!

#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)
	{}
}

By modifying Nixie's parameters, you can change the numbers and positions displayed by the digital tube.

#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(2,5);
    while(1)
    {}
}

 


Dynamic digital tube display

#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);
	}
}

 


source code

Static digital tube display

#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)
    {}
}

 

Dynamic digital tube display

#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);
    }
}


Okay, that’s it for the static digital tube display and dynamic digital tube display, let’s keep going! ! !

 

Guess you like

Origin blog.csdn.net/weixin_74957752/article/details/133485670