lunes, 30 de noviembre de 2009

Control de LCD con PIC16F84A

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