Red de conocimientos turísticos - Información de alquiler - ¿Cómo controla un microcontrolador una pantalla LCD? El plan específico es bueno, las recompensas son grandes y es rápido y urgente.

¿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

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;

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

}