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;
} p>
}
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();
}
}