4.12 Ejemplo 10
Utilizar el visualizador LCD
Este ejemplo muestra cómo utilizar un visualizador LCD alfanumérico. Las librerías de funciones simplifican este programa.
Dos mensajes escritos en dos líneas aparece en el visualizador:
mikroElektronika
LCD example
Dos segundos más tarde, el segundo mensaje se susituye por el voltaje presente en la entrada del convertidor A/D (el pin RA2). Por ejemplo:
mikroElektronika
voltage:3.141V
En un dispositivo real se puede visualizar temperatura actual o algún otro valor medido en vez de voltaje.
Para que este ejemplo funcione apropiadamente, es necesario marcar las siguientes librerías en la ventana Library Manager antes de compilar el programa:
'Cabecera******************************************************
program example_10 ' Nombre de programa
dim LCD_RS as sbit at RB4_bit ' Conexiones del módulo Lcd
LCD_EN as sbit at RB5_bit
LCD_D4 as sbit at RB0_bit
LCD_D5 as sbit at RB1_bit
LCD_D6 as sbit at RB2_bit
LCD_D7 as sbit at RB3_bit
LCD_RS_Direction as sbit at TRISB4_bit
LCD_EN_Direction as sbit at TRISB5_bit
LCD_D4_Direction as sbit at TRISB0_bit
LCD_D5_Direction as sbit at TRISB1_bit
LCD_D6_Direction as sbit at TRISB2_bit
LCD_D7_Direction as sbit at TRISB3_bit ' Final de las conexiones del módulo Lcd
dim text as string [16] ' Variable text es de tipo string
dim ch, adc_rd as word ' Variables ch y adc_rd son de tipo word
dim tlong as longword ' Variable tlong es de tipo longword
main: ' Inicio del programa
TRISB = 0 ' Todos los pines del puerto PORTB se configuran como salidas
PORTB = 0xFF
INTCON = 0 ' Todas las interrupciones deshabilitadas
ANSEL = 0x04 ' Pin RA2 se configura como una entrada analógica
TRISA = 0x04
ANSELH = 0 ' Los demás pines se configuran como digitales
Lcd_Init() ' Inicialización del visualizador LCD
Lcd_Cmd(_LCD_CURSOR_OFF) ' Comando LCD (apagar el cursor)
Lcd_Cmd(_LCD_CLEAR) ' Comando LCD (borrar el LCD)
text = "mikroElektronika" ' Definir el primer mensaje
Lcd_Out(1,1,text) ' Escribir el primer mensaje en la primera línea
text = "LCD example" ' Definir el segundo mensaje
Lcd_Out(2,1,text) ' Definir el segundo mensaje en la segunda línea
ADCON1 = 0x80 ' Voltaje de referencia para la conversión A/D es VCC
TRISA = 0xFF ' Todos los pines del puerto PORTA se configuran como entradas
Delay_ms(2000)
text = "Voltage=" ' Definir el tercer mensaje
while 1 ' Bucle infinito
adc_rd = ADC_Read(2) ' Conversión A/D. Pin RA2 es una entrada.
Lcd_Out(2,1,text) ' Escribir el resultado en la segunda línea
tlong = adc_rd * 5000 ' Convertir el resultado en milivoltios
tlong = tlong / 1023 ' 0..1023 -> 0-5000mV
ch = (tlong / 1000) mod 10 ' Extraer voltios (miles de milivoltios)
' del resultado
Lcd_Chr(2,9,48+ch) ' Escribir resultado en formato ASCII
Lcd_Chr_CP(".") ' Escribir el punto decimal
ch = (tlong / 100) mod 10 ' Extraer centenas de milivoltios
Lcd_Chr_CP(48+ch) ' Escribir resultado en formato ASCII
ch = (tlong / 10) mod 10 ' Extraer decenas de milivoltios
Lcd_Chr_CP(48+ch) ' Escribir resultado en formato ASCII
ch = tlong mod 10 ' Extraer unidades de milivoltios
Lcd_Chr_CP(48+ch) ' Escribir resultado en formato ASCII
Lcd_Chr_CP("V") ' Escribir etiqueta para el voltaje "V"
Delay_ms(1) ' Retardo de 1mS
wend
end. ' Final de programa