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

No hay comentarios:
Publicar un comentario