Presione el teclado matricial de 4*4 (16 teclas) y el cuadrado del 1 al 16 se mostrará en el tubo digital una vez que se presione la tecla.

Si presiona el primero, mostrará 1 y el segundo mostrará 4.

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^ 6;

sbit wela=P2^7;

sbit key1=P3^4;

tabla de códigos uchar[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e, 0x79,0x71};

uchar temp;

uint num,num1;

retraso nulo(uint z){

uint x ,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

uint keycan();

void display(uchar,uchar,uchar);

void main(){

dula=1;

P0=0;

dula=0;

wela=1;

P0=0xc0;

wela=0;

while(1)

{

num1=keyscan();

display(num1/100,num1%100/10,num1%10);

}

}

void display(uchar uno,uchar dos,uchar tres,uchar cuatro,uchar cinco,uchar seis){

dula=1;

P0=table[one]; //Enviar datos del segmento

dula =0;

P0=0xff; //Cerrar todas las pantallas antes de enviar datos de bits para evitar que los datos de selección de segmento pasen a través del pestillo de selección de bits después de abrir el pestillo de selección de bits

wela= 1 ;

P0=0xfe;

wela=0;

retraso(1);

dula=1;

P0=tabla[dos];

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

retraso(1);

dula=1;

P0=tabla[ tres ];

dula=0;

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

demora(1);

}

uint keycan()

{

P3=0xfe;

temp=P3;

temp=temp&0xf0;

mientras(temp!=0xf0)

{

demora(5);

temp=P3;

temp=temp&0xf0;

mientras(

temp!=0xf0)

{

temp=P3;

cambiar(temp)

{

caso 0xee:num=1;

ruptura;

caso 0xde:num=4;

ruptura;

caso 0xbe:num =9;

ruptura;

caso 0x7e:num=16;

ruptura;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

mientras(temp!=0xf0){

demora(5);

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

switch(temp){

case 0xed:num= 25;romper;

caso 0xdd:num=36;romper;

caso 0xbd:num=49;romper;

caso 0x7d:num=64; romper;

}

mientras(temp!=0xf0){

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

retraso(5);

temp=P3;

temp=temp&0xf0;

mientras(temp!=0xf0)

{

temp=P3;

cambiar(temp)

{

caso 0xeb:num=81;

romper;

caso 0xdb:num=100;

ruptura;

caso 0xbb:num=121;

ruptura;

caso 0x7b:num=144;

romper;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xf7;

temp= P3;

temp=temp&0xf0;

mientras(temp!=0xf0)

{

demora(5);

<

p> temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

{

temp=P3;

cambiar(temp)

{

caso 0xe7:num=169;

romper;

caso 0xd7:num=196;

ruptura;

caso 0xb7:num=225;

ruptura;

caso 0x77:num= 256;

descanso;

}

mientras(temp!=0xf0)

{

temp= P3;

temp=temp&0xf0;

}

}

}

devuelve num;

}

ight">

copyright 2024 Red idiomática china All rights reserved