INTRODUCCION
Sin duda alguna la aplicación de los microcontroladores es un tema bastante amplio, que a su cez se divide en una gama de subtemas uno por cada apicacion, en este caso nos introduciremos a uno de estos subtemas: control de LCD’s (displays) mediante un microcomtrolador.
PIC BASIC dispone de un conjunto de instrucciones especiales para manejar diplays en modo 8 bits y en modo 4 bits que hacen posible una complejidad reducida en la programación para dicho proceso.
En este Blog se describirá como utilizar un modulo LCD con un microcontrolador de la empresa Microchip modelo PIC16F4A.
DESARROLLO
El manejo de LCD se hace mediante el uso de sentencias “DEFINE” las cuales indican al controlador a que pines del micro hemos conectado cada uno de los ínes del LCD. La forma de la instrucción define es la siguiente:
DEFINE Parametro= valor
Parametro es el nombre del parámetro al que le asignaremos el “valor”, existen varios parámetros disponibles para el manejo de LCD enseguida se mencionan algunos de ellos:
- · LCD_BITS: Define el número de bits de la interfaz de datos. Se pueden asignar valores de 4 u 8, siendo 4 el valor por defecto.
- · LCD_DREG: Define a que puerto del PIC tenemos conectado el port de datos del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
- · LCD_DBIT: Define cual es el primer pin del puerto que usamos para enviar los datos al LCD cuando seleccionamos un bus de 4 bits. Solo puede ser el 0 (para los pines el 0, 1, 2 y 3) o 4 (para usar los pines 4, 5, 6 y 7). Por defecto se asume “4”, y esta instrucción se ignora para LCD_BITS = 8.
- · LCD_RSREG: Define a que puerto del PIC tenemos conectado el pin RS del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
- · LCD_RSBIT: Define a que pin del puerto tenemos conectado el pin RS del LCD. Por defecto se asume “3”.
- · LCD_EREG: Define a que puerto del PIC tenemos conectado el pin E del LCD. Los valores permitidos son PORTA, PORTB, PORTC, etc. Por defecto se asume PORTB.
- · LCD_EBIT: Define a que pin del puerto tenemos conectado el pin E del LCD. Por defecto se asume “2”.
- · LCD_RWREG: Define a que puerto del PIC tenemos conectado el pin RW del LCD. Los valores permitidos son 0, PORTA, PORTB, PORTC, etc. Por defecto se asume “0”, que significa “no usamos el pin RW”.
- · LCD_RWBIT: Define a que pin del puerto tenemos conectado el pin RW del LCD. Por defecto se asume “0”, que significa “no usamos el pin RW”.
- · LCD_COMMANDUS: Define cuantos microsegundos demora la escritura de un comando en el display. Por defecto, este valor es de 5000. La mayoría de los LCD funcionan bien con un valor de 2000, lo que hace más rápidos nuestros programas.
- · LCD_DATAUS: Define cuantos microsegundos demora la escritura de un dato en el LCD. Por defecto, este valor es de 100.
- · LCD_INITMS: Define cuantos microsegundos demora la inicialización e la electrónica del LCD. Por defecto, este valor es de 100.
TTambien es importante mencionar las instrucciones que nos permiten enviar comandos e instrucciones al display. Para esto debemos utilizar la instrucción LCDINIT antes de enviar cualquier comando al LCD, de la siguiente manera:
LCDINIT n
Donde n es el tipo de cursor que maneje el display, por ejemplo “0” significa que el cursosr esta oculto, “1” cursor parpadeando, etc. La instrucción que nos permite enviar comandos es LCDCMDOUT su sintaxis es:
LCDCMDOUT comando
Donde comando es alguno d los siguientes:
- LcdClear: Borra el contenido del LCD.
- LcdHome: Lleva el cursor a la primera posición del primer renglón del LCD.
- LcdLine2Home: Lleva el cursor a la primera posición del segundo renglón del LCD.
- LcdLeft: Mueve el cursor una posición a la izquierda.
- LcdRight: Mueve el cursor una posición a la derecha.
- LcdShiftLeft: Desplaza el contenido del LCD una posición a la izquierda.
- LcdShiftRight: Desplaza el contenido del LCD una posición a la derecha.
- LcdLine1Clear: Borra la primera línea del LCD.
- LcdLine2Clear: Borra la segunda línea del LCD.
- LcdLine1Pos(x): Coloca el cursor en la posición “x” del primer renglón del LCD. “X” puede tener cualquier valor entre 1 y 40
- LcdLine2Pos(x): Coloca el cursor en la posición “x” del segundo renglón del LCD. “X” puede tener cualquier valor entre 1 y 40
HERRAMIENTAS
Para el manejo de LCD’s con un microcontrolador necesitamos las siguientes herramientas:
- Conocimiento acerca de mocrocontroladores
- Programa Pic Basic
- Un programador
- Hoja de datos del PIC1684A
- Hoja de datos del LCD
- Manual de Pic Basic
NOTA: algunas de estas herramientas son opcionales pero de gran ayuda si se emplean
MATERIAL
Pic16f84
Modulo LCD
Fuente de voltaje a 5 V
2 Capacitores de 20 pF
1 Cristal de 4 MHz
3 resistencias de 10kΩ, 5 kΩ y 100Ω
1 boton para reset
DIAGRAMA DE CONEXIÓN
EJEMPLO DE CODIGO COMENTADO
Este es un ejemplo donde se muestra como imprimir el contenido de una variable (“A”) la cual va adquiriendo diferentes valores en un tiempo dado, mas especiicamente se mostrara en un primer renglón un texto y en un segundo renglón se contaran los números del 65535 al 0
DEFINE LCD_BITS = 8; Define # de bits 8 como interfaz de datos
DEFINE LCD_DREG = PORTB; Puerto de datos de LCD conectado a PORTB
DEFINE LCD_DBIT = 0; Define “0” como primer pin para enviar datos
DEFINE LCD_RSREG = PORTD; Pin rs conectado a PORTD
DEFINE LCD_RSBIT = 1; RS conectado a pin 1 del puerto
DEFINE LCD_EREG = PORTD; Pin E conectado a PORTD DEL PIC
DEFINE LCD_EBIT = 3; E conectado a pin 3 del puerto
DEFINE LCD_RWREG = PORT; Pin rw conectado a PORT DEL PIC
DEFINE LCD_RWBIT = 2 Pin rw conectado a pin 2 dl puerto
'
DIM A AS WORD
A = 65535
'
LCDINIT 3 ‘Cursor parpadeando
WAITMS 1000
'
loop:
LCDOUT "¡Estoy contando!” ‘Texto del primer renglón
LCDCMDOUT LcdLine2Home ‘Paso al Segundo renglón
LCDOUT #A ‘Muestro el valor de A
A = A - 1
WAITMS 250
LCDCMDOUT LcdClear ‘Limpio del display
GOTO loop; para repetir indefinidamente.
DIAGRAMA DE FLUJO:
CONCLUCIONES
Una aplicación mas del uso de los microcontroladores es el control de pantallas LCD utilizando comandos especiales en el lenguaje de programacion Pic Basic.
En este blog se presento una introduccion hacerca de lo que es este proceso, asi como la forma de llebarlo a cabo, los materiales necesarios, etc, esperando que sea de gran utilidad para las persnas que lo consulten.
BIBLIOGRAFIA
ARIEL Palazzesi
http://www.ucontrol.com.ar/wiki/index.php/PIC_BASIC_(PSI)#Displays_LCD 30/11/09
OROZCO Salguero Mauricio Alberto
http://www.monografias.com/trabajos11/infcinc/infcinc.shtml#CONEX 30/11/09