La Red de Conocimientos Pedagógicos - Currículum vitae - programa de pantalla de cristal líquido lcd1602

programa de pantalla de cristal líquido lcd1602

① Question, RS, RW y E están configurados para el proceso de sincronización del estado de lectura. El bit más alto de los datos leídos (puerto de datos P1) resulta ser el indicador de ocupado del cristal líquido.

②Q. La función de control de escritura (condatos sin firmar) es una función de comando de escritura;

③Q. p >

④Pregunta: Existe un requisito de intervalo de tiempo para escribir instrucciones. Leer y escribir con demasiada frecuencia provocará la pérdida de código, por lo que se requiere un retraso de las tres 38 instrucciones cuando se inicializa inmediatamente después del encendido. la fuente de alimentación de la pantalla LCD será inestable y provocará la pérdida del código;

⑤Pregunta, la pantalla LCD solo se actualiza una vez al actualizar los datos. La pantalla LCD mantendrá el contenido y no es necesario actualizarla repetidamente.

Las preguntas incluidas en ⑥, ③ y ④ se deben a que el conductor es demasiado desagradable. Un buen conductor no necesita hacer esto. Los requisitos de sincronización de los cristales líquidos son de nivel ns, y los ciclos de instrucción de los microcontroladores generalmente son de nivel nosotros, por lo que no hay necesidad de ser demasiado engorroso.

#include "reg52.h" //Incluye archivo de encabezado 52

#include "SMC1602A.h" //Incluye archivo de definición de macro SMC1602A

#define BusyReadCount 10 //Leer los tiempos de espera del indicador de ocupado

#define SMC1602_Data P0 //Definir la interfaz de datos

//sbit SMC1602_VO=P2^4 //Definir la interfaz de contraste VO

sbit SMC1602_RW=P2^5; //Definir interfaz R/W 25

sbit SMC1602_RS=P2^6; //Definir interfaz RS 26

sbit SMC1602_E=P2 ^7; //Definir interfaz E 27

#define SMC1602_En SMC1602_E=1 //Habilitar

#define SMC1602_Dis SMC1602_E=0 //Deshabilitar

uchar SMC1602_Read (bit read_type) //1602 Función de lectura de pantalla LCD

{

uchar read_data;

SMC1602_Dis; //Desactivar habilitación

SMC1602_RW =ReadOperate; //Operación de lectura

SMC1602_RS=read_type; //Tipo de lectura: 0 estado, 1 datos

SMC1602_En //Activar habilitar

read_data; =SMC1602_Data; //Almacenar resultados

SMC1602_Dis; //Desactivar habilitación

return read_data; //Devolver resultados

}

void SMC1602_WriteByte(bit write_type,uchar write_data) //Función de lectura de pantalla LCD 1602

{

uchar i=BusyReadCount;

for(;i; i-- ); //Retrasa la operación, reserva el tiempo de respuesta para las operaciones de escritura

while((SMC1602_Read(CommOperate)&BusyState) &&(++i<=BusyReadCount) // La lectura está ocupada (tiempos de BusyReadCount) , si ambos están ocupados, el indicador de ocupado ya no se leerá y la operación de escritura se realizará directamente

// while(SMC1602_Read(CommOperate)&BusyState) if(++i>BusyReadCount) return / /Lea el indicador de ocupado, si los tiempos de BusyReadCount están ocupados, no se realizará ninguna operación de escritura

// while(SMC1602_Read(CommOperate)&BusyState //Espera inactiva (espera muerta)

SMC1602_Dis; //Desactivar habilitar

SMC1602_RW=WriteOperate; //Operación de escritura

SMC1602_RS=write_type; //Tipo de escritura: 0 comando, 1 datos

SMC1602_Data=write_data; //Operación de escritura, envía el operando al puerto de datos

SMC1602_En; //Habilitar habilitación

SMC1602_Dis //Deshabilitar habilitación

}

void SMC1602_WriteCGRAM(uchar *write_buf,uchar start_loca,uchar

word_num,uchar start_addr) //SMC1602 escribe la función CGRAM para caracteres personalizados

{

uchar i,j;

write_buf+=start_loca; posición inicial de la "matriz de datos a escribir"

SMC1602_WriteByte(CommOperate,CGRAMAddr|start_addr<<3); //Escribe la operación CGRAM y establece la dirección inicial de CGRAM en start_addr

for(j=0;j

for(i=0;i<8;i++) SMC1602_WriteByte(DataOperate,*write_buf++); datos de 8 bytes de caracteres personalizados

}

void SMC1602_Init() //Función de inicialización de pantalla LCD 1602

{

uint i;

SMC1602_WriteByte(CommOperate,DisplayMode); //Configuración del modo de visualización: pantalla de 16×2, matriz de puntos de 5×7, interfaz de datos de 8 bits

SMC1602_WriteByte(CommOperate ,ScreenMode|ScreenOn ); //Configuración del modo de cursor: enciende la visualización general, enciende la visualización del cursor, enciende el flash del cursor

SMC1602_WriteByte(CommOperate,InputMode); //Configuración del modo de entrada: apaga toda la pantalla; movimiento, enciende el cursor Movimiento positivo (+1)

SMC1602_WriteByte(CommOperate,CleanLCD); //Borrar pantalla, restablecer cursor

SMC1602_WriteByte(CommOperate,FirstCol); la primera línea

for(i=150;i;i--); // Espere a que la fuente de alimentación esté estable; de ​​lo contrario, es fácil perderse al escribir datos CGRAM (caracteres personalizados), uint El ciclo de ejecución es largo, el uso de uchar acortará el tiempo, lo cual no es suficiente LCD estable

}