Red de conocimiento informático - Computadora portátil - AT89C51 controla pantalla LCD pantalla dinámica lenguaje C programa completo + diagrama de circuito

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;

lcden = 1;

}mientras(ocupado==1);

lcden = 0;

}

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

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

}