Red de conocimiento informático - Material del sitio web - Programa de termómetro digital de alta precisión basado en microcontrolador AT89C51 y sensor de temperatura DS18B20, pantalla de cristal líquido LCD1602, programado en lenguaje C

Programa de termómetro digital de alta precisión basado en microcontrolador AT89C51 y sensor de temperatura DS18B20, pantalla de cristal líquido LCD1602, programado en lenguaje C

Controlador LCD

/********************************* * ******************************/

/* */

/ * Verifique el estado de ocupación de la pantalla LCD */

/*Cuando lcd_busy es 1, ocupado, espere. Cuando lcd-busy es 0, está inactivo y puede escribir instrucciones y datos*/

/* */

/************** ***** ********************************************** ***/

bit estático lcd_busy()

{

resultado del bit

LCD_RS = 0

<; p> LCD_RW = 1;

LCD_EN = 1;

retardoNOP();

resultado = (bit)(LCD_DB_Portamp; 0x80);

LCD_EN = 0;

retorno(resultado);

}

/*************** ******* ******************************************* **/

/* */

/*Escribir datos de comando en la pantalla LCD */

/*RS=L, RW=L, E=alta pulso, D0-D7=código de comando.

*/

/* */

/****************************** ******* *******************************************/

void lcd_wcmd(uchar cmd)

{

while(lcd_busy();

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0

_nop_();

_nop_();

LCD_DB_Port = cmd;

#endif

delayNOP();

LCD_EN = 1 //Ingresar datos en flanco ascendente<; /p>

retrasoNOP();

LCD_EN = 0

}

/*********** *************** ************************************* **********/

/* */

/*Escribir datos de visualización en LCD */

/*RS=H , RW=L, E=pulso alto, D0-D7=datos.

*/

/* */

/****************************** ******* *******************************************/

void lcd_wdat(uchar dat)

{

while(lcd_busy();

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

#ifdef LCD_8DB

LCD_DB_Port = dat;

#endif

delayNOP();

p>

LCD_EN = 1;

delayNOP(); //Ingresa datos en el flanco ascendente

LCD_EN = 0 ;

}

/********************************* *************** ****************/

/* */

/* Configuración de inicialización de LCD*/

/* */

/************************ ******************* *************************/

void lcd_init()

{

delay(15); //Espera a que se estabilice la fuente de alimentación

lcd_wcmd(LCD_MODE); modo de visualización

retraso(5);

lcd_wcmd(LCD_MODE)

retraso(5);

lcd_wcmd(LCD_MODE);

retardo(5);

lcd_wcmd(0x0c); / /Mostrar cursor activado, desactivado

retardo(5);

lcd_wcmd(0x06); //Mover el cursor

delay(5);

lcd_wcmd(0x01); //Borrar el contenido de la pantalla LCD

delay( 5);

}