Microcontrolador C51: utiliza un tubo digital para mostrar valores de 0 a 999.
Ver programas y esquemas en lenguaje C
#include
#define uchar unsigned char
uchar temp;
int key1,key,disbuf; // Esta tabla es el modo de palabra del LED 0 1 1 2 3 4 5 6 7 8 9 a b c d e f
código de caracteres sin firmar LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D , 0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
char ledx sin firmar[8];
bit?s0,s1;
retraso nulo(uchar z) { uchar i,j; for(i=0;i<120;i++) for(j=0;j void); scan () //Si se presiona una tecla, escanea el teclado en busca del valor codificado { P1=0xF0; temp=P1; switch(temp) { caso 0xe0:key1=0; romper; for(j=0;i<120;i++) for(j=0;j caso 0xd0: clave1=1; ruptura; caso 0xb0: clave1=2; ruptura; caso 0x70: clave1=3; descanso; } P1= 0x0f; temp=P1; > { caso 0x0E: clave=clave1+0; descanso; caso 0x0D: clave=clave1+4; romper ; caso 0x0B: clave=clave1+8; romper; caso 0x07: clave=clave1+12; break ; predeterminado: clave=-1;? } if((clave1+1)&&(clave+1)) disbuf=clave } > void ejjc()?// Determinar si el botón está presionado { P1=0xF0; if(P1! =0xF0) { scan();s0=1;} else { s0=0; s1=1;} } } void main() { uchar i; /p> ejjc(); if(s0==1? && s1==1) ?{ ? ;s1=0; ? para(i=0;i<8;i++) { ledx[i]=ledx[i+1]; disbuf; } ? P0=0xff; P2=LED7Code[ledx[0]]; P0=0xfe; retardo(5); P0=0xff; P2=LED7Co de[ledx[1]]; P0= 0xfd; retraso(5); P0=0xff; P2 =CódigoLED7[ ledx[2]]; P0=0xfb; retraso(5); P0=0xff; P2=Código LED7[ ledx[3]]; P0=0xf7; retraso(5); P0=0xff; P2=LED7Code[ ledx[4]]; P0=0xef; retraso(5); P0=0xff;< P2=LED7Code[ ledx[5]]; P0=0xdf; retraso(5); P0=0xff; P2=LED7Code[ledx[6]]; P0=0xbf; retardo(5 ); P0=0xff; p> P2=LED7Code[ledx[7]]; P0=0x7f; retraso(5); } }?