Red de conocimiento informático - Computadora portátil - Programa LCD 1062 simple para microcontroladores 51 para obtener ayuda

Programa LCD 1062 simple para microcontroladores 51 para obtener ayuda

#includelt;reg52.hgt;

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^ 6;

sbit wela=P2^7;

sbit lcden=P3^4;

sbit lcdrs=P3^5;

clave de bits1=P3^0;

clave de bits2=P3^1;

clave de bits3=P3^2;

//clave de bits4=P3^ 3;

sbit key=P3^7;

void display();

void delayms(uint z);

void keyscan();

void init();

void write_com(uchar com);

void write_data(uchar fecha);

uchar num, num1, num2; num3, num4;

uchar sshi, sge, fshi, fge, mshi, mge

uint temp=0; >void init() //Inicialización

{

dula=0;

wela=0;

TMOD=0x01;

TH0=(65536-45872)/256;

TH1=(65536-45872)256;

EA=1;

ET0=1;

TR0=1;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

void write_com(uchar com) //Escribir comando

{

lcdrs=0;

P0=com;

retrasos(5); 1;

retrasos(5);

lcden=0;

}

void write_data(uchar date)//escribir datos

{

lcdrs=1;

P0=fecha

retrasos(5); =1;

retrasos(5);

lcden=0;

}

retrasos nulos(uint z)//retraso cuando

{

uint i,j;

for(i=z;igt;0;i--)

para (j=110;jgt;0;j--);

}

void display()//Pantalla LCD

{

write_com(0x80);

write_data(sshi 48);

retrasos(1);

write_com(0

x80 0x01);

write_data(sge 48);

retrasos(1);

write_com(0x80 0x02);

write_data (':');

retrasos(1);

write_com(0x80 0x03);

write_data(fshi 48);

retrasos(1);

write_com(0x80 0x04);

write_data(fge 48);

retrasos(1);

write_com(0x80 0x05);

write_data(':');

retrasos(1);

write_com(0x80 0x06);

write_data(mshi 48);

retrasos(1);

write_com(0x80 0x07);

write_data(mge 48);

retrasos(1);

}

anular keysscan()

{

key=0;

if(key1==0)

{

retrasos(5);

if(key1==0);

{

mientras(!key1);

temp;

TR0=0;

write_com(0x0f); /p>

}

}

interruptor(temp)

{

caso 1:

if(clave2==0)

{

retrasos(5);

if(clave2==0

); {

mientras(!key2)

num1;

if(num1==60)num1=0;

}

}

if(key3==0)

{

retrasos(5);

if(key3 ==0)

{

mientras(!key3)

num1--;

if(num1==-1) num1=0;

}

}

descanso;

caso 2:

{

if(key2==0)

{

retrasos(5);

if(key2==0)

{

mientras(!key2);

num2;

if(num2==60)num2=0;

}

}

if(key3==0)

{

retrasos(5);

if(key3==0)

{

mientras(!key3);

num2--;

if(num2= =-1)num2=0;

}

}

}

descanso;

caso 3 :

{ si(k

ey2==0)

{

retrasos(5);

if(key2==0)

{

mientras(!key2);

num3;

if(num3==60)num3=0;

}

}

if(key3==0)

{

retrasos(5);

if(key3==0 )

{

mientras(!key3);

num3--;

if(num3==-1)num3= 0;

}

}

}

rotura;

caso 4:

{

temp=0;

TR0=1;

write_com(0x08);

}

}

}

void T0_time()interrupción 1 //Reloj 0 interrupción

{

num;

TH0=(65536-45872)/256;

TH1=(65536-45872)256;

si(num==20)

{

núm=0;

núm1

if(núm1==60)

{

num1=0;

num2

}

mshi=num1/10;

mge=num110; p>if(num2==60)

{

num2=0

num3; p>fshi=num2/10;

fge=num210;

if(num3==24)

{

num3= 0;

// num4;

}

sshi=num3/10;

sge=num310;

//if(num4)

display();

}

}

void main()

{

init();

mientras(1)

{

keysscan();

}

}