Red de conocimiento informático - Conocimiento del nombre de dominio - ¡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:

¡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>

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]);

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)

{

retraso(5) ;

if(key1==0)

{

while(! key1);

retraso(5);

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>

}

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)

{

//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>

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)

{

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);

write_com(0x81);

}

}

if(key3==0)

{

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);

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;

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);

{

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);

}

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)

{

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)

{

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>

}

}