¿Cómo inicializar 12864?
#include lt;intrins.hgt;
#define uchar unsigned char //Simplifica la escritura de variables enteras y de caracteres
#define uint unsigned int
#define LCD_data P0 // Definición de pin
sbit LCD_RS = P2^2;
sbit LCD_RW = P2^3;
sbit LCD_EN = P2^4;
sbit LCD_PSB = P2^5
void delay_ms(unsigned int ms) // Retraso función 1ms
{
unsigned int i, j
for(j=0; jlt; =ms; j )
{
for(i=0;i lt;=120;i)
{}
}
}
void delay4us() //Función de retardo 4Us
{
_nop_();
_nop_();
_ nop_();
}
void lcd_checkBusy(void) //detectar indicador de ocupado
{
carácter sin firmar ocupado <; /p>
hacer{
LCD_EN = 0;
LCD_RS = 0;
LCD_RW = 1
delay4us(
LCD_EN = 1; // Lee los datos de la pantalla LCD en el flanco ascendente del terminal habilitado
ocupado = P0
delay4us(); p>
LCD_EN = 0;
}
while(busyamp; 0x80); // Determina si el bit más alto es 0, si es 0, está inactivo state
}
void lcd_wcmd(uchar cmd) //Escribir función de comando
{
lcd_checkBusy() //Detectar ocupado Estado
p> LCD_RS = 0;
LCD_RS = 0; //RS es de nivel bajo, ejecuta la operación de comando
LCD_RW = 0; nivel bajo, realizar operación de escritura
LCD_EN = 0
delay4us();
P0 = cmd; //Datos de comando
delay4us();
LCD _EN = 1; //Dale al terminal habilitado un flanco ascendente para guardar datos
delay4us();
LCD_EN = 0;
}
void lcd_wdat(uchar dat) //Función de escritura de datos
{
lcd_checkBusy().
LCD_RS = 1; //RS es de alto nivel, realiza operaciones de datos
LCD_RW = 0;
LCD_EN = 0; P0 = dat; //Mostrar datos en LCD
delay4us();
LCD_EN = 1; //Dar al terminal habilitado un flanco ascendente para guardar datos
delay4us();
LCD_EN = 0;
}
void lcd_init() //Inicializar LCD
{ p >
LCD_PSB = 1; //Selecciona el modo paralelo
lcd_ wcmd(0x30); //Conjunto de instrucciones básicas
delay_ms(5);
lcd_wcmd(0x0C); //encender la pantalla
delay_ms(5);
lcd_wcmd(0x01); //borrar pantalla
delay_ms(5);
}
Simplemente llámalo en la función principal. (Esta función de inicialización configura la pantalla en formato de texto)