Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Esquema de diseño de teclado electrónico MCU AT89C51 y programa en lenguaje C?

¿Esquema de diseño de teclado electrónico MCU AT89C51 y programa en lenguaje C?

#include?

¿sin firmar?char?temp;

¿sin firmar?char?key;

¿sin firmar? char?i,j;

unsigned?char?STH0;

unsigned?char?STL0;

unsigned?int?code?tab[]={ 64021,64103,64260,64400,

64524,64580,64684,64777,

64820,64898,64968,65030,

65058,65110,65157 ,65178};

void?main(void)

{

TMOD=0x01;

ET0=1;

EA=1;

while(1)

{

P3=0xff;?//Eliminar puerto P3

P3_4=0;//Haga que P3_4 sea de nivel bajo para determinar si hay un botón presionado en la primera fila vertical

temp=P3;

temp=temp?&?0x0f ; ?

if?(temp!=0x0f)//Se presiona una tecla

{

for(i=50;i>0;i- - )

for(j=200;j>0;j--);//Retraso

temp=P3;

temp=temp?& ? amp;?0x0f;

if?(temp!=0x0f)//Compruebe nuevamente si se presiona una tecla

{

temp=P3; p>

temp=temp?&?0x0f;

switch(temp)//Determinar qué botón se presiona

{

case ?x0e:

clave=0;

romper;

caso?0x0d:

clave=1;

romper ;

caso?0x0b:

key=2;

romper

caso?0x07:

clave=3;

romper;

}

temp=P3;

P1_0=~P1_0;

P0=tabla[clave];

STH0=tab[clave]/256; ??

STL0=tab[clave]%256;

TR0 =1;

temp=temp?&?0x0f;

mientras(temp!=0x0f)

{

temp=P3 ;

temp=temp?0x0f;

}

TR0=0;

}

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp ?&?0x0f;

if?=0x0f)

{

para(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp?&?0x0f;

si?(temp!=0x0f)

{

t

emp=P3;

temp=temp?&?0x0f;

cambiar(temp)

{

caso?x0e:

clave=8;

romper;

caso?0x0d:

clave=9;

romper;

caso?0x0b:

clave=10;

romper;

caso?0x07:

clave =11;

descanso;

}

temp=P3;

P1_0=~P1_0;

P0=tabla[clave];

STH0=tab[clave]/256;

STL0=tab[clave]%256;

TR0=1;

temp=temp?0x0f;

mientras(temp!=0x0f)

{

temp=P3;

temp=temp?0x0f;

}

TR0=0;

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp?= 0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp =P3;

temp=temp?&?0x0f;

si?(temp!= 0x0f)

{

temp= P3;

temp=temp?&?0x0f;

interruptor(temp)

{

caso?x0e:

clave=12;

romper;

caso?0x0d:

clave=13;

romper;

caso?0x0d:

rotura;

p>

caso?0x0b:

clave=14;

romper;

caso?0x07:

key=15 ;

romper;

}

temp=P3;

P1_0=~P1_0;

P0=tabla[clave];

STH0=tab[clave]/256;

STL0=tab[key]%256;

TR0= 1;

¿Temp=temp?

temp=temp?& ?0x0f;

mientras(temp!=0x0f)

{

temp=P3;

temp=temp?&?0x0f ;

}

TR0=0;

}

}

}

}

¿vacío?t0(vacío)??usando?0

{

TH0=STH0;

TL0=STL0;

P1_0=~P1_0;

} Échale un vistazo al programa tú mismo, tampoco quiero comentarlo.

Este programa puede producir sonidos de 16 notas