¿Cómo controla un microcontrolador una pantalla LCD? El plan específico es bueno, las recompensas son grandes y es rápido y urgente.
Operación necesaria: conectar 1602 correctamente
*/
#include
#define uint unsigned int // Definir códigos de reemplazo de tipos de datos comunes
#define uchar unsigned char
#define dat P0 // Definir el puerto de datos de LCD1602 como P0
sbit rs = P1^0; //Definir el puerto RS como P10
sbit rw=P1^1; //Definir el puerto RW como P11
sbit e=P1^2; /Definir E El puerto es P12
uchar ocupado; //1602 indicador de ocupado
void delay_1ms(void); //Programa de retraso
void display(void); / /Programa de visualización
void together_1602(void); //Programa de verificación de pantalla LCD
void shj_1602(uchar a); p>void int_1602(void); //Inicialización de LCD
void zhl_1602(uchar a); //Programa de instrucciones de escritura de LCD
void main( void) //Se inicia el programa principal
{
for(;;)
{
display(); // Llama a la función de visualización en el bucle grande y continúa. para mostrar
}
}
void delay_1ms(void) // Retraso del programa
{
uchar i,j;
for(i=0;i<10;i++)
for(j=0;j<20;j++
}
void display(void) //programa de visualización LCD
{
uchar i; //definir el valor de recuento
uchar table0[16] ={"¡Hola bin MCU! "}; //definimos el LCD1602 para mostrar 2 líneas de caracteres
uchar table1[16]={"--chen qi bin"}
int_1602() ; //Inicializar 1602
zhl_1602(0x80); //escribir instrucción
for(i=0;i<16;i++) //Enviar la primera línea de datos
{
shj_1602(table0[i]);
}
zhl_1602( 0xc0);
for(i =0;i<16;i++) //Enviar la segunda fila de datos
{
shj_1602(table1[i]);
}
}
void ocupado_1602(void) //Consulta el programa de señal de bandera de ocupado
{
hacer
{
p>e=0;
rw=1;//Operación de lectura avanzada
rs=0;//Comando p>
e=1;
ocupado=dat;
e=0
retraso_
1ms() )
} while(busy&&0x10==1); // El ocupado siempre se lee. Esta vez, el ocupado se lee desde DB7 do while. El método de uso es seguir leyendo cuando se establece do. en while. Leer
}
void zhl_1602(uchar a) //escribir instrucción en el programa LCM Write Data Busy debe verificarse antes de escribir la instrucción
{
ocupado_1602();
e=0;
rw=0;
rs=0;
e=1;
dat=a; //e=1 cambia a e=0 y se escribe en el flanco descendente
e=0;
}< / p>
void shj_1602(uchar a) //escribir datos en el programa LCM LCM es el módulo LCD
{
ocupado_1602() ;
e=0;
rw=0;//operación de escritura de bajo nivel
rs=1;//datos
e= 1; p>
dat=a;
e=0;
}
void int_1602(void) //iniciar LCM programa Inicializar LCD
{
zhl_1602(0x38); //configuración del modo de visualización
zhl_1602( 0x0c); //configuración del cursor del interruptor de visualización
zhl_1602(0x06
}