Utilice luces LED para mostrar la cuenta regresiva durante 10 segundos. Programación en lenguaje C de 51 microcontroladores.
¡¡¡Es difícil conseguir tus puntos = =!!!!
#include
#define uchar unsigned char//Definición de macro
#define uint unsigned int
sbit dula=P2^6; //Bit de control de segmento
sbit wela=P2^7 //Bit de control de bit
uchar miao,fen,aa,n1,n2,n3,n4;
tabla de códigos uchar[]={ //Mostrar código
0x3f,0x06, 0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71} ;
void delay(uint z); //Declaración del programa de retraso
void init(void);//Declaración del programa de inicialización
void display(uchar n1, uchar n2,uchar n3,uchar n4); //Mostrar declaración del programa
void main() //Programa principal
{
init() / /Llame al programa de inicialización
while(1) // Ingrese al bucle grande
{
if(aa==20) // Juzgue si tiene alcanzó 1S
{
miao++; //Agrega 1 al segundo
if(miao==60) //Determina si han pasado 60 segundos p>
{
miao=0; //Borrar segundos a 0
fen++; //Agregar 1 a la puntuación
if(fen== 60) //Juzga si llega a 60 puntos
{
fen=0; //Borra 0 cuando la puntuación llega a 60
}
n1=fen/ 10; //El primer tubo digital muestra las decenas del minuto
n2=fen%10; //El segundo tubo digital muestra las unidades del minuto p>
n3=miao/ 10; //El tercer tubo digital muestra las decenas del segundo
n4=miao%10; //El cuarto tubo digital muestra las unidades del segundo.
}
display(n1,n2,n3,n4);
}
}
}
void delay(uint z) //Retraso del programa
{
uint x,y
for(x=z; x>0;x--)
p>for(y=110;y>0;y--);
}
visualización vacía( uchar n1,uchar n2,uchar n3,uchar n4)
{
dula=1; //Abrir selección de segmento
P0=table[n1]; //Diez dígitos para enviar puntos
dula=0; //Selección de segmento fuera
P0=0xff //Blanqueamiento
wela=1; Abrir selección de segmento
P0 =0xfe; //El dígito de las decenas de la puntuación estroboscópica
wela=0; //Selección de bits desactivados
P0=0xff; //Blanqueamiento
retraso (1); //Retraso
dula=1; //Abrir selección de sección
P0=table[n2]; El único dígito de los puntos de envío
dula
=0; //Selección de sección desactivada
P0=0xff; //Blanqueamiento
wela=1; //Selección de sección activada
P0=0xfd; /El dígito de las unidades del divisor estroboscópico
wela=0; //Selección de dígitos desactivados
P0=0xff; //Blanqueamiento
delay(1); //Retraso
dula=1; //Abrir selección de segmento
P0=table[n3] //Enviar el décimo dígito del segundo
dula =0; //Fuera de selección de sección
P0=0xff; //Blanqueo
wela=1; //En selección de sección
P0=0xfb; /Dígito de decenas del segundo estroboscópico
wela=0; //Selección de bit desactivado
P0=0xff; //Blanqueamiento
retraso(1) // Retraso
dula=1; //Abrir selección de segmento
P0=table[n4] //Enviar el dígito único del segundo
dula =0 ; //Selección de sección desactivada
P0=0xff; //Blanqueamiento
wela=1; //Selección de sección activada
P0=0xf7; dígito de unidades del segundo estroboscópico
wela=0; //Selección de bit apagado
P0=0xff; //Blanking
retraso(1) // Retraso
}
void init(void)
{
}
void timer0 (void) interrupción 1 usando 1
{
TH0=(65536-50000)/256; //Módulo
TL0=(65536-50000) %256; Encontrar el resto
aa++;
}