Programa de programación matricial de puntos MCU 88
# include ltreg 51.h gt;
# include ltintrins.h gt
#Definir carácter uchar sin firmar
#Definición uint entero sin signo
código uchar table_of_Digits[]=
{
0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, //0
0x00, 0x00, 0x00, 0x21, 0x7f, 0x01, 0x00, 0x00, //1
0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x00, // 2
0x00, 0x22, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, //3
0x00, 0x0c, 0x14, 0x24, 0x7f, 0x04, 0x00, 0x00, //4
0x00, 0x72, 0x51, 0x51, 0x51, 0x4e, 0x00, 0x00, //5
0x00, 0x3e, 0x49, 0x49, 0x49, 0x26, 0x00, 0x00, //6
0x00, 0x40, 0x40, 0x40, 0x4f, 0x70, 0x00, 0x00, //7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, //8
0x00, 0x32, 0x49, 0x49, 0x49, 0x3e, 0x00, 0x00, //9
0xff, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xff
};
código uchar xdat[8]={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x 01} ;
uchar código ydat[8]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x 80};
uchar i=0, j=0, t=0, Num_Index, key,, yi;
//Programa principal
void main()
{
p 1 = 0x 80;
num _ Index = 0; //Comenzar a mostrar desde 0
TMOD = 0x 01; //T0 modo 0
TH0 =( 65536-2000) /256; //temporización de 2 milisegundos
TL0 = (65536-2000) 256;
IE = 0x82
clave = 0;
Xi = 0;
yi = 0;
EX0 = 1;
IT0 = 1; //Iniciar T0
while(1);
}
//Función de interrupción T0
void text_int0( ) interrupción 0
{
tecla;
tecla y clave.
= 0x03
}
void LED_Screen_Display() interrupción 1
{
TH0 =(65536-2000)/256; Temporización de 2 milisegundos
TL0 =(65536-2000) 256;
Interruptor (tecla)
{
Caso 0: p> p>
P0 = 0xff//Código de bits de salida y código de segmento
P0 = ~Tabla de números [Índice de números * 8 I];
P1=_crol_(P1 , 1 );
if( I = = 8)I = 0; // Cada número en la pantalla consta de 8 bytes.
If( t==250) //Cada dígito se actualiza y se muestra durante un período de tiempo.
{
t = 0;
if(Num _ Index = = 10)Num _ Index = 0 //Mostrar el siguiente número
}
Rotura;
Caso 1:
P0 = ~ xdat[Xi];
p 1 = 0x ff;
p 1 = ydat[yi];
If( t==250) //Cada dígito se actualiza y se muestra durante un período de tiempo.
{
t = 0;
yi;
si (yi gt7) { yi = 0;} p>
Si (Xi gt; 7)Xi = 0;
}
Romper;
Caso 2:
P0 = 0xff//Código de bits de salida y código de segmento
P0 = ~ Tabla _ de _ dígitos[80 j];
if(j = = 0)p 1 = 0x 80 ;
P1=_crol_(P1, 1);
if( j = = 8)j = 0; //Un número en cada pantalla consta de 8 bytes.
Romper;
Valor predeterminado:
clave = 0;
I = 0
j =; 0;# include ltreg 51.h gt;
# include ltintrins.h gt
#Definir carácter uchar sin signo
#Definir uint entero sin signo
uchar código table_of_Digits[]=
{
0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x00, //0 p>
0x00, 0x00, 0x00, 0x21, 0x7f, 0x01, 0x00, 0x00, //1
0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x00, //2
0x00, 0x22, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, //3
0x00, 0x0c, 0x14, 0x24, 0x7f, 0x04, 0x00, 0x00,/ /4 p>
0x00, 0x72, 0x51, 0x51, 0x51, 0x4e, 0x00, 0x00, //5
0x00, 0x3e, 0x49, 0x49, 0x49, 0x26, 0x00, 0x00, //6
0x00, 0x40, 0x40, 0x40, 0x4f, 0x70, 0x00, 0x00, //7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, / /8
0x00, 0x32, 0x49, 0x49, 0x49, 0x3e, 0x00, 0x00, //9
0xff, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xff
};
uchar código xdat[8]={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x 01};
uchar código ydat[8]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x 80};
uchar i=0, j=0, t=0, Num_Index ,key,, yi;
//Programa principal
void main()
{
p 1 = 0x 80;
num _ Index = 0; //Comenzar a mostrar desde 0
TMOD = 0x 01; //T0 modo 0
TH0 =(65536-2000)/ 256; Temporización de 2 milisegundos
TL0 = (65536-2000) 256;
IE = 0x82
key = 0;
Xi = 0 ;
yi = 0;
EX0 = 1;
IT0 = 1;
TR0 = 1;/ /Iniciar T0
while(1);
}
//Función de interrupción T0
void text_int0() interrupción 0 p>
{
clave;
Claves y claves.
= 0x03
}
void LED_Screen_Display() interrupción 1
{
TH0 =(65536-2000)/256; Temporización de 2 milisegundos
TL0 =(65536-2000) 256;
Interruptor (tecla)
{
Caso 0: p> p>
P0 = 0xff//Código de bits de salida y código de segmento
P0 = ~Tabla de números [Índice de números * 8 I];
P1=_crol_(P1 , 1 );
if( I = = 8)I = 0; // Cada número en la pantalla consta de 8 bytes.
If( t==250) //Cada dígito se actualiza y se muestra durante un período de tiempo.
{
t = 0;
if(Num _ Index = = 10)Num _ Index = 0 //Mostrar el siguiente número
}
Rotura;
Caso 1:
P0 = ~ xdat[Xi];
p 1 = 0x ff;
p 1 = ydat[yi];
If( t==250) //Cada dígito se actualiza y se muestra durante un período de tiempo.
{
t = 0;
yi;
si (yi gt7) { yi = 0;} p>
Si (Xi gt; 7)Xi = 0;
}
Romper;
Caso 2:
P0 = 0xff//Código de bits de salida y código de segmento
P0 = ~ Tabla _ de _ dígitos[80 j];
if(j = = 0)p 1 = 0x 80 ;
P1=_crol_(P1, 1);
if( j = = 8)j = 0; //Un número en cada pantalla consta de 8 bytes.
Romper;
Valor predeterminado:
clave = 0;
I = 0
j =; 0;
t = 0;
Xi = 0;
yi = 0;
num _ Índice = 0; p>
p>
P0 = 0xff
p 1 = 0x 80
Romper
}
}
t = 0;
Xi = 0;
yi = 0
núm _ Índice = 0; >
P0 = 0xff
p 1 = 0x 80;
Rotura;
}
}