¡Primeros auxilios! ! ! Hermanos y hermanas, ¿quién sabe programación de MCU? ¡Por favor ayúdenme! Para utilizar un microcontrolador para editar un programa de reloj digital, los requisitos son los siguientes:
Les daré un programa que escribí usando la pantalla LCD 12864. Una es una tecla de función. Presiónela una vez para saltar a la primera tecla, presiónela nuevamente para saltar a la segunda tecla y. pronto. El segundo botón es para controlar más y el tercer botón es para controlar menos. Su tubo digital es muy similar a este y más simple que este. No tiene que preguntar cómo está conectado el tubo digital aquí. Puedes consultarlo.
#includelt;reg52.hgt;
#includelt;chushihua.hgt; //Función de inicialización de 12864;
char gwnian, nian, yue, ri , xq, shi, fen, miao;
sbit DQ =P3^5; //Definir puerto de comunicación DS18B20
sbit led_en_port = P2^5; Pin LE Pin*/
sbit sled_en_port = P3^6; /*Registro de tubo digital LE pin*/
sbit key1=P1^0;
sbit key2 =P1^1;
sbit key3=P1^2;
uchar code mun_to_char[] = {"0123456789"} /*Convertir números a códigos de caracteres ASCII*/< / p>
uchar table[]={"Productor:"};
uchar table2[]={"La tarde del 28 de noviembre de 2009"};
uchar table1[]={"Jiang Xiangyang"};
uchar table31[]={"año"};
uchar table32[]={"mes"};
uchar table33[]={"日"};
uchar table4[]={"semana"};
uchar table51[]={"hora"} ;
uchar table52[]={"minutos"};
uchar table53[]={"segundos"};
uchar table6[]={ "Temperatura actual: 20,3"};
//uchar table61[]={"?℃"};
uchar xq1[]={"一"};
uchar xq2[]={"二"};
uchar xq3[]={"三"};
uchar xq4[]={"四"} ;
uchar xq5[]={"五"};
uchar xq6[]={"六"}
uchar xq7[]={ "Día"};
/******************Función de escritura del día de la semana************ ********** /
write_xq(uchar z)
{
uchar num;
write_com( 0x90 5);
switch(z)
{
caso 1: for(num=0;numlt;2;num)
{
write_date(xq1[num]);
retraso(1
}
descanso; >
caso 2: for(num =0;numlt;2;num )
{
write_date(xq2[num]);
retraso (1);
}
descanso;
caso 3: for(num=0; numlt; 2; num
)
{
write_date(xq3[num]);
retraso(1
}
romper;
caso 4: for(num=0; numlt; 2; num )
{
write_date(xq4[num]); p> p>
retraso(1);
}
descanso;
caso 5: for(num=0; numlt; 2; num )
{
write_date(xq5[num]);
retraso(1); > break ;
caso 6: for(num=0; numlt; 2; num )
{
write_date(xq6[num]); p>
retraso(1);
}
descanso;
caso 7: for(num=0; numlt; 2; num )
{
write_date(xq7[num]);
retraso(1); ;
}
}
/****************Escribe la función año, mes y día* *********** *****/
void write_nyr(uchar date, uchar add)
{
uchar shi , ge;
shi =fecha/10;
ge=fecha10;
write_com(0x80 agregar);
write_date(0x30 shi);
write_date (0x30 ge);
}
/****************** Función de escritura de hora, minutos y segundos*********** **/
void write_sfm(uchar date, uchar add)
{
uchar shi, ge;
shi=date/ 10
ge=date10
write_com(0x88 add); >
write_date(0x30 shi);
write_date(0x30 ge );
}
/*********** *************Escaneo de teclado****************** ****/
anulación de escaneo de teclas()
{
uchar keynum;
if(key1==0) p>
{
retraso(5) ;
if(key1==0)
{
while(! key1);
retraso(5); p>
mientras(!key1);
keynum;
> TR0=0;
if(keynum==1)
{
//TR0=0;
write_com(0x8D );
write_com(0x0f);
}
if(keynum==2)
{
//TR0=0;
write_com(0x8B);
write_com(0x0f);
}
if(keynum=); =3)
{
//TR0=0;
write_com(0x89);
write_com(0x0f); p> p>
}
if(keynum==4)
{
//TR0=1;
write_com( 0x95);
write_com(0x0f);
}
if(keynum==5)
{
//TR0=1;
write_com(0x85);
write_com(0x0f);
}
si (keynum ==6)
{
//TR0=1;
write_com(0x83);
write_com(0x0f); ;
}
if(keynum==7)
{
//TR0=1;
write_com (0x81);
write_com(0x0f);
}
if(keynum==8)
{ p>
//TR0=1;
escribir_com(0x80);
escribir_com(0x0f); if( keynum==9)
{
TR0=1
keynum=0
//write_com(0x95) ;
write_com(0x0c);
}
}
}
if(keynum==1 )
{
if(key2==0)
{
retraso(5); if( clave2==0)
{
mientras(!clave2);
demora(5);
mientras(! clave2) ;
miao ;
if(miao==60)
miao=0;
write_sfm(miao, 5) ;
escribir_com
(0x8D);
}
}
if(key3==0)
{
retraso (5);
if(key3==0)
{
while(!key3);
retraso(5) ;
while(!key3);
miao--;
if(miao==-1)
miao=59 ;
write_sfm(miao, 5);
write_com(0x8D
}
}
}
if(keynum==2)
{
if(key2==0)
{
retraso(5);
if(key2==0)
{
while(!key2);
retraso (5);
mientras(!key2);
fen
si(fen==60)
fen=0 ;
write_sfm(fen, 3)
write_com(0x8B
}
}
if(key3==0)
{
retraso(5);
if(key3==0)
{
while(!key3);
demora(5);
while(!key3);
fen--; p>
p>
if(fen==-1)
fen=59
write_sfm(fen, 3
); write_com(0x8B);
}
}
}
if(keynum==3)
{
if(key2==0)
{
retraso(5);
if(key2==0)
{
mientras(!key2);
retraso(5);
mientras(!key2);
shi;
if(shi==24)
shi=0;
write_sfm(shi, 1); write_com(0x89);
}
}
if(key3==0)
{
retraso(5);
if(key3==0)
{
while(!key3);
retraso(5); );
mientras(!k
ey3);
shi--;
if(shi==-1)
shi=23;
write_sfm(shi ,1);
write_com(0x89);
}
}
}
if(keynum ==4)
{
if(key2==0)
{
retraso(5);
if(key2==0)
{
while(!key2);
retraso(5);
while(!key2);
xq;
if(xq==8)
xq=1;
write_xq(xq );
write_com(0x95);
}
}
if(key3==0)
{
demora(5);
if(key3==0)
{
while(!key3);
retraso(5);
while(!key3);
xq--; /p>
xq=7
escribir_xq(xq);
escribir_com(0x95);
}
si(keynum==5)
{
si(key2==0)
{
demora(5);
if(key2==0)
{
while(!key2);
retraso(5);
while(!key2);
ri
if(ri==31)
ri=1;
write_nyr(ri, 5);
write_com(0x85);
}
}
if(key3==0)
{
retraso(5);
if(key3==0) p>
{
mientras(!key3);
retraso(5);
mientras(!key3); > ri--;
if(ri==0)
ri=30
write_nyr(ri, 5); > write_com(0x85);
}
}
}
if(keynum==6)
{
si(clave2==0)
<p> {
retraso(5);
if(key2==0)
{
while(!key2);
demora(5);
while(!key2);
yue
if(yue==13)
p> p>yue=1;
write_nyr(yue, 3
write_com(0x83
}
<); p> }if(key3==0)
{
retraso(5);
if(key3==0 )
{
mientras(!key3);
retraso(5
mientras(!key3); >
yue--;
if(yue==0)
yue=12;
write_nyr(yue, 3); >
write_com(0x83);
}
}
}
if(keynum==7)
{
if(key2==0)
{
retraso(5); =0 )
{
mientras(!key2);
retraso(5);
mientras(!key2);
nian;
if(nian==100)
nian=0;;
write_nyr(nian, 1); p>
write_com(0x81);
}
}
if(key3==0)
{ p>
demora(5);
if(key3==0)
{
while(!key3);
demora(5);
while(!key3);
nian--;
if(nian==-1)
nian=99;
escribir_nyr(nian, 1);
escribir_com(0x81);
}
}
}
si(keynum==8)
{
si(key2==0)
{
demora(5);
if(key2==0)
{
while(!key2); p>
demora(5);
while(!key2);
gwnian;
if(gwnian==100)<
/p>
gwnian=0;
write_nyr(gwnian, 0
write_com(0x80);
}
}
if(key3==0)
{
retraso(5);
if(key3==0)
{
mientras(!key3);
retraso(5);
mientras(!key3);
gwnian--;
if(gwnian==-1)
gwnian=99;
write_nyr(gwnian, 0);
write_com(0x80);
}
}
}
}
/* ***********Función principal************************/
void main()
{
uint num;
led_en_port = 0; /*Apaga la pantalla LED*/
sled_en_port = 0; Apague la pantalla del tubo digital* /
gwnian=20
nian=9
yue=11; 28;
xq=6;
shi=23;
fen=58;
init(); //12864 Inicialización de LCD;
write_com(0x80); //Establece las coordenadas de visualización iniciales;
for(num=0;numlt;8; num) /**** **Mostrar el productor en la primera línea******/
{
write_date(table[num]);
delay(100 );
}
write_com(0x93); //Coordenadas iniciales de la segunda línea
for(num=0; numlt; 6; num ) /**********Mostrar Jiang Xiangyang************ en la segunda línea/
{
write_date(table1[num]);
delay(100);
}
write_com(0x88); //Coordenadas iniciales de la tercera línea.
for(num= 0; numlt; 16; num ) /******Muestra el tiempo de producción en la tercera línea******/
{
write_date(table2[num ]);
retraso(100
}
for(num=50;numgt;0); ;num--) ///Retraso, tiempo de visualización de la primera pantalla;
retardo(50000);
TMOD=0x01; //Temporizador 0 modo de trabajo 1; p>
TH0=(65536-50000)/256;
TL0=(65536-50000)256
;
EA=0X01;
ET0=0X01;
TR0=0X01;
write_com(0x01); ;
// delay(5);
// write_com(0x01);
write_com(0x80); //Escribe el año, mes y datos del día (2009-11-28);
write_date('2');
write_date('0'); ) ;
escribir_fecha('9');
escribir_com(0x83);
escribir_fecha('1');
escribir_fecha ( '1');
write_com(0x85);
write_date('2');
write_date('8');
write_com(0x95);
for(num=0;numlt;2;num) //Escribe la función del día de la semana (sábado);
{ p>
write_date(xq6[num]);
}
write_com(0x89); //Escribe la función inicial de hora, minutos y segundos (23:58:45). );
write_date('2');
write_date('3');
write_com(0x8B);
write_date ('5') ;
write_date('8');
write_com(0x8D);
write_date('4');
write_date( '5');
write_com(0x82);
for(num=0; numlt; 2; num ) // Visualización fija del 'año'
{
write_date(table31[num]);
retraso(1);
}
write_com; (0x84);
p>for(num=0;numlt;2;num) //Visualización fija del 'mes'
{
write_date( table32[num]);
delay(1);
}
write_com(0x86); //Visualización fija del 'Día'
for(num=0; numlt ; 2; num )
{
write_date(table33[num]);
retraso(1);
} p>
write_com(0x92); // Visualización fija de 'semana'
for(num=0; numlt; 4; num)
{
write_date(table4[num]);
retraso(1);
}
write_com(0);
x8A); //Se corrigió la visualización de la 'hora'
for(num=0;numlt;2;num)
{
write_date(table51[num) ] );
delay(1);
}
write_com(0x8C); // Visualización fija de 'minutos'
for( num=0; numlt; 2; num )
{
write_date(table52[num]);
retraso(1);
}
write_com(0x8E); // Visualización fija de 'segundos'
for(num=0; numlt; 2; num )
{
write_date(table53[num]);
retraso(1
}
write_com(0x98); /Visualización fija 'Temperatura actual: 20.3'
for(num=0;numlt;14;num)
{
write_date(table6[num]) ;
p>retraso(1);
}
/******************Pantalla comando de carácter de temperatura***** *************/
write_com(0x64); //Habilitar visualización de comando extendido;
write_com( 0x9f); //Establece la dirección de visualización;
write_date(0xA1); //Dirección de codificación de caracteres mostrada;
write_date(0xE6);
write_com( 0x66); //Cerrar funciones extendidas;
while(1)
{
teclascan
}
}
void timer0() interrupción 1
{
recuento de uchar;
TH0=(65536-50000)/256 ;
TL0= (65536-50000)256;
cuenta
if(cuenta==18)
{ p>
cuenta=0;
miao;
if(miao==60)
{
miao=0 ;
fen;
if(fen==60)
{
fen=0; shi;
if (shi==24)
{
shi=0
ri ; > xq ;
si(xq==8)
{
xq=1;
}
if(ri==31) p>
{
ri=1;
yue
if(yue==13)
<p> {
yue=1;
nian
if(nian==100)
{
nian=0;
gwnian ;
if(gwnian==100)
gwnian=0; , 0);
}
write_nyr(nian, 1);
}
write_nyr(yue, 3);
p> p>}
escribir_xq(xq);
escribir_nyr(ri, 5); (shi , 1);
}
write_sfm(fen, 3
}
write_sfm(miao, 5);
p>
}
}