Programación de simulación de reloj
Parte del mapa (1):
Parte del dibujo (2):
Parte del dibujo (3 ):
Código de la siguiente manera:
# include ltreg 51. h gt
# include ltintrins.h gt
#Define; uchar carácter sin signo
#Definir uint entero sin signo
sbit st=p2^0; //Iniciar bit de conversión
sbit oe=p2^2; Bit de habilitación de salida
sbit ale=p2^3;? //Bit de bloqueo de habilitación de dirección
sbit eoc=p2^1; //Bit de fin de conversión
sbit clk=p2^4 //Reloj
Long int datas, white, she, Ge;
Uchar·Duan;
número de código uchar []={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07 , 0x7f, 0x6f}; //Números sin puntos
uchar code num_dot[]={0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0x ed} //Números con puntos
uchar code Wei[]={0x0d, 0x0b, 0x 07}; //código de bits
Retraso no válido (unidad z)
{
Uchar I ;
while(z -)
for(I = 0; I lt120; i
}
Pantalla vacía( )
{
uchar I = 0;
White=(datas * 500/255)/100 //Cálculo y obtenemos el bit más alto; p>
Ella = (datos * 500/255)/10 10; // Calcula el bit medio
ge = (datos * 500/255) 10 // Calcula el bit más bajo
p>
for(I = 0;ilt3;i)
{
=Wei[i];
si(I = = 0) { Duan = num _ punto[Bai];}
si no(I = = 1){ Duan = num[ella];}
si no(I = = 2) { Duan = num[ge];}
P0 = segmento;
Retraso(2);
}?
p>}
void main()
{
TMOD = 0x 02; //Definir T0 y modo de trabajo 2
TH0 = 0x 216; //valor inicial TH0
TL0 = 0x 216;? //valor inicial de TH1
EA = 1;? //Activar la interrupción del host
ET0 = 1; //Activar el bit de habilitación de interrupción
TR0 = 1;? //Abrir T0
while(1)
{
ST = OE = 0 //Primero establezca START y EO en 0.
ALE = 1; //Establece ALE y ST en 1 y tira hacia arriba.
ST = 1;
ALE = 0; //Establezca ALE y START en 0 para iniciar la conversión de datos.
ST = 0;
Y (!EOC);? // Espere a EOC, ECO es 1, lo que indica que la conversión se completó.
OE = 1; //Abrir OE y leer datos.
datos=p 1;? //Guarda los datos en los datos.
Display();
}
}
void inter_1() interrupción 1
{ p>
CLK = ~ CLK;
}
Los resultados de la ejecución son los siguientes