AT89C51 controla pantalla LCD pantalla dinámica lenguaje C programa completo + diagrama de circuito
//****************************************** ******
//Función del programa: pantalla de desplazamiento simple de LCD1602
//Descripción del método: mira los datos del chip y escribe el programa
// Programador: Liang Gongming
//Hora de programación: 8 de abril de 2013 23:16:42
//Hora de modificación: 9 de abril de 2013 23:25:33
//****************************************** * ****
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs = P2^4; //Estos puertos deben seleccionarse de acuerdo con la interfaz de la placa de desarrollo
sbit lcdrw = P2^5;
sbit lcden = P2^6;
sbit ocupado = P0^7;
uchar num;
void init();
void wait();
void write_cmd(uchar cmd);
void write_data(uchar dat);
void display(uchar add,uchar *a);
void delay( uint z);
void main()
{
uchar buf1[]=" 0123456789 " //Los caracteres mostrados pueden modificarse;
uchar buf2[]=" 9876543210 "
init();
display(0x90,buf1);
display( 0xd0,buf2) ;
for(num=0;num<32;num++)
{
write_cmd(0x18);
delay(200 );
}
}
//Inicialización del cristal líquido
void init()
{
escribir_cmd(0x38);
escribir_cmd(0x0c);
escribir_cmd(0x06);
escribir_cmd(0x01 );
}
//Detección de estado de lectura LCD
espera nula()
{
P0 = 0xff;
hacer
{
lcdrs = 0;
lcdrw = 1;
lcden = 0; p>
lcden = 1;
}mientras(ocupado==1);
lcden = 0;
} p>
//Inicialización del comando de escritura LCD
void write_cmd(uchar cmd)
{
wait();
lcdrs =
0;
lcdrw = 0;
lcden = 0;
P0 = cmd;
lcden = 1;
lcden = 0;
}
//Inicialización de datos de escritura de cristal líquido
void write_data(uchar dat)
{
esperar();
lcdrs = 1;
lcdrw = 0;
lcden = 0;
P0 = dat;
lcden = 1;
lcden = 0;
}
//Función de la pantalla de cristal líquido p>
void display(uchar add,uchar *a)
{
write_cmd(add);
while(*a!= '\ 0')
write_data(*a++);
}
//Función de retardo simple
void delay(uint z )
{
uchar i,j;
for(i=0;i for(j =0;j<110;j++); }