0% encontró este documento útil (0 votos)
109 vistas25 páginas

Control de Módulo LCD

Este documento describe el funcionamiento y control de un módulo LCD (pantalla de cristal líquido) conectado a un microcontrolador PIC16F628. Explica las rutinas necesarias para inicializar el LCD, borrar la pantalla, seleccionar posiciones, enviar caracteres y comandos. También incluye códigos y ejemplos de programas para visualizar texto simple, caracteres fijos y variables, y crear mensajes y caracteres personalizados en el LCD.

Cargado por

Dayana Vargas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
109 vistas25 páginas

Control de Módulo LCD

Este documento describe el funcionamiento y control de un módulo LCD (pantalla de cristal líquido) conectado a un microcontrolador PIC16F628. Explica las rutinas necesarias para inicializar el LCD, borrar la pantalla, seleccionar posiciones, enviar caracteres y comandos. También incluye códigos y ejemplos de programas para visualizar texto simple, caracteres fijos y variables, y crear mensajes y caracteres personalizados en el LCD.

Cargado por

Dayana Vargas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CONTROL MÓDULO LCD

CONTROL MÓDULO LCD ............................................................................ 1


FUNCIONAMIENTO:........................................................................................... 3
RUTINAS:................................................................................................................. 4
1.- Definición de variables. ...................................................................................... 5
2.- Función de comprobación de ocupado. .............................................................. 5
3.- Función de borrado de pantalla. ........................................................................ 6
4.- Función de posición inicial. ................................................................................ 6
5.- Función de selección de modo (sentido desplazamiento cursor). ....................... 6
6.- Función de control del display ( ON/OFF de display, cursor y parpadeo
cursor). ..................................................................................................................... 7
7.-Función para seleccionar la dirección CGRAM. ................................................ 7
8.- Función para seleccionar la dirección DDRAM. ............................................... 7
9.- Función para leer la dirección de la CGRAM o DDRAM última empleada. ..... 8
10.- Función para enviar un carácter al LCD. ........................................................ 8
11.- Función para enviar comandos al LCD( borrado display, modo, control,
posición inicial,...) .................................................................................................... 9
CÓDIGOS. .............................................................................................................. 10
Código direcciones pantalla módulo LCD2x16. .................................................... 10
Código direcciones pantalla módulo LCD4x16. .................................................... 10
Código para visualización de caracteres. .............................................................. 10
PROGRAMAS. ...................................................................................................... 12
Primer programa TEXTO SENCILLO: .................................................................. 12
Segundo programa CARACTERES FIJOS Y VARIABLES: ................................... 14
Tercer programa CONFIGURACIÓN DE MENSAJE POR EL USUARIO: ......... 16
Cuarto programa DESPLAZAMIENTO DE CARACTERES POR EL MODULO: 18
Quinto programa CREACIÓN DE CARACTERES DISEÑADOS POR
PROGRAMADOR: ................................................................................................. 20

MODULO PRACTICAS

-1-
Los módulos LCD (Liquid Crystal Display), son compactos y necesitan muy
pocos componentes externos para un funcionamiento correcto. La función principal de
estos módulos es la de visualizar los caracteres deseados por el usuario.

Existen módulos de distintas dimensiones que


van desde 1 a 4 líneas y de 6 a 80 caracteres por línea.

En la figura presentada a la derecha se muestra


el aspecto y posición de los pines de un módulo LCD
estándard. Existen también módulos LCD que disponen
de 16 pines, son los llamados LCD con
retroiluminación, donde el pin 15 (+5v.)corresponde al
ánodo y el pin 16 (Masa) al cátodo de la
retroiluminación.

La forma más sencilla de controlar los módulos


LCD es a través de un microcontrolador. Para ello se
utilizará el PIC16F628 conectado al módulo LCD, de
forma que la interconexión entre ambos se describe en
la siguiente tabla. Figura 1.- Pines LCD

Pin Conexión Descripción


1 – Vss Vss Masa
2 – Vdd Vdd Alimentación 5v.
3 – Vo Vo Control de contraste de la pantalla.
4 – RS RA2 Selección del registro de control/registro de datos:
RS =0 Selección del registro de control.
RS=1 Selección del registro de datos.
5 – RW RA1 Señal de lectura/escritura:
R/W=0 El Módulo LCD en modo escritura.
R/W=1 El Módulo LCD en modo lectura.
6–E RA0 Señal de activación del módulo LCD:
E=0 Módulo desactivado.
E=1 Modulo activado.
7-14 – D0-D7 RB0- Bus de datos bidireccional. A través de estas líneas se
RB7 realiza la transferencia de información entre el módulo
LCD y PIC.

A continuación se presenta el esquema eléctrica del circuito a montar para el


funcionamiento del LCD.

-2-
Figura 2.- Conexión LCD-PIC16F628

Una vez realizada la conexión eléctrica entre ambos dispositivos se procede a la


programación del PIC16F628 con los rutinas de control del LCD. Seguidamente se
presenta una introducción del funcionamiento del LCD y todas las rutinas necesarias.

FUNCIONAMIENTO:
El control del LCD se realiza mediante el envío de diversos códigos desde el
microcontrolador. En la tabla mostrada a continuación, se presentan todos los códigos y
acciones posibles a realizar. De esta manera, si se quiere borrar el display, la forma de
ejecutarlo es la siguiente:

- Poner E a 0, para desactivar el LCD mientras se coloca el código


- Poner RS a 0
- Poner R/W a 0
- Poner DB7-DB0 a 0
- Una vez colocado el código correspondiente, poner E a 1 para activar el
LCD y así ejecutará inmediatamente el borrado de la pantalla.

-3-
Figura 3.- Tabla instrucciones.

RUTINAS:
-las rutinas presentadas a continuación son para el módulo estándar HD44780.
Las rutinas presentadas posteriormente son las siguientes:
- definición de variables.
- función de comprobación de ocupado.
- función de borrado de pantalla.
- función de posición inicial.
- función de selección de modo (sentido desplazamiento cursor).
- función de control del display ( ON/OFF de display, cursor y parpadeo
cursor).
- función para seleccionar la dirección CGRAM.
- función para seleccionar la dirección DDRAM.
- función para leer la dirección de la CGRAM o DDRAM última
empleada.
- función para enviar un carácter al LCD.

-4-
- función para enviar comandos al LCD ( borrado display, modo, control,
posición inicial,...)

1.- Definición de variables.

LCD_DATOS EQU PORTB ;ASIGNA EL NOMBRE LCD_DATOS AL


;PUERTO B

LCD_DATOS_TRIS EQU TRISB ;ASIGNACIÓN DE NOMBRE A LA


;TRISB

LCD_CTRL EQU PORTA ;ASIGNACIÓN DE NOMBRE A


;LCD_CTRL

LCD_TEMP EQU 0x20 ;VARIABLE PARA DATOS


;TEMPORALES

RETRASO EQU 0x23 ;VARIABLE PARA RETRASO


X_RETRASO EQU 0x24 ;VARIABLE PARA RETRASO

LCD_RS EQU 2 ;ASIGNA EL VALOR 0 PARA


;CONTROL DEL BIT RS

LCD_RW EQU 1 ;ASIGNA EL VALOR 1 PARA


;CONTROL DEL BIT RW

LCD_E EQU 0 ;ASIGNA EL VALOR 2 PARA


;CONTROL DEL BIT E

2.- Función de comprobación de ocupado.

LCD_OCUPADO BSF STATUS,RP0 ;Selección del banco 1.


MOVLW 0x0FF ;Carga el valor FFh en W.
MOVWF LCD_DATOS_TRIS ;Puerto B como entradas.
BCF STATUS,RP0 ;Selección del banco 0.
BCF LCD_CTRL, LCD_RS ;LCD en modo control.
BSF LCD_CTRL, LCD_RW ;Configurado para leer el
;flag Ocupado.
BSF LCD_CTRL, LCD_E ;LCD activado.
MOVF LCD_DATOS,W ;En W se encuentra el estado
;del flag Ocupado y la
;dirección DDram.
BCF LCD_CTRL, LCD_E ;LCD desactivado.
ANDLW 0x80 ;En W se encuentra el estado
;leído del LCD, y se extrae el
;bit correspondiente al flag
;de ocupado.
BTFSS STATUS,Z ;Si no está activado el flag de

-5-
;ocupado salta .
GOTO LCD_OCUPADO ;Sigue comprobando hasta
;que deje de estar ocupado.

LCD_NOOCUPADO BCF LCD_CTRL, LCD_RW ;Cambia el bit de control


;finalizada la comprobación.
BSF STATUS,RP0 ;Selección del Banco 1.
MOVLW 0x000 ;Carga en W el valor 00.
MOVWF LCD_DATOS_TRIS ;Selecciona el puerto B como
;salida.
BCF STATUS, RP0 ;Selección del Banco 0.
RETURN ;Retorna de la función.

3.- Función de borrado de pantalla.

LCD_BORRA MOVLW 0x001 ;Carga en W el valor


;correspondiente a la instrucción de
;borrado de pantalla.
CALL LCDPUTCMD ;Llama a la función para el envío de
;la instrucción al LCD.
RETURN ;Retorna de la función.

4.- Función de posición inicial.

En esta función se pone el cursor en la posición inicial y que el display


comience a desplazarse desde la posición inicial.

LCD_POSINI MOVLW 0x002 ;Carga en W el valor para realizar


;la instrucción correspondiente.
CALL LCDPUTCMD ;Llama a la función para el envío de
;la instrucción al LCD
RETURN ;Retorna de la función.

5.- Función de selección de modo (sentido desplazamiento cursor).

En esta función se necesita que cuando se llame a esta función, en el registro


W se encuentren los siguientes datos:
en el bit0 un '0' si se desea que no se desplace el display cada vez que
se escriba un dato y un '1' si se desea que se desplace.
- en el bit1un '0' si se desea que no se desplace el display a la derecha y
un '1' si se desea que se desplace a la izquierda.

LCD_MODO ANDLW 0x003 ;Para seleccionar solo la información de los


;bits 0 y 1.
IORLW 0x004 ;Pone a 1 el bit2 para indicar al display que
;se la instrucción que se envía es referente
;al modo.

-6-
CALL LCDPUTCMD ;Llama a la función para el envío de la
;instrucción al LCD.
RETURN ;Retorna de la función.

6.- Función de control del display ( ON/OFF de display, cursor y parpadeo cursor).

En esta función se necesita que cuando se llame a esta función, en el registro


W se encuentren los siguientes datos:
- en el bit0 si está a '0' el cursor no parpadea y si está a '1' parpadea.
- en el bit1 si está a '0' el cursor está desactivado y si está a '1' está
activado.
- en el bit2 si está a '0' el display está apagado y si está a '1' está
encendido.

LCD_CONTDISP ANDLW 0x007 ;Para seleccionar solo la información de los


;bits 0, 1 y 2.
IORLW 0x008 ;Pone a 1 el bit3para indicar al display que
;se la instrucción que se envía es referente
;al control.
CALL LCDPUTCMD ;Llama a la función para el envío de la
;instrucción al LCD.
RETURN ;Retorna de la función.

7.-Función para seleccionar la dirección CGRAM.

En la CGRAMSE se almacenan los caracteres de usuario. Para ello se


necesita que antes de llamar a la función en W se encuentre el siguiente dato:
- bits 0 a 5 se envíe la dirección CGRAM deseada.

LCDSCGA ANDLW 0x03F ;Selecciona solo los bits 0-5.


IORLW 0x040 ;Pone a 1 el bit6 para indicar al display que
;la instrucción que se envía es referente
;a la dirección CGRAM.
CALL LCDPUTCMD ;Llama a la función para el envío de la
;instrucción al LCD.
RETURN ;Retorna de la función.

8.- Función para seleccionar la dirección DDRAM.

En la DDRAM se almacenan los datos a visualizar. Para ello se necesita que


antes de llamar a la función en W se encuentre el siguiente dato:
- bits 0 a 6 se envíe la dirección DDRAM deseada.

LCDSDDA IORLW 0x080 ;Pone a 1 el bit7 para indicar al display que


;la instrucción que se envía es referente a la
;dirección DDRAM
CALL LCDPUTCMD ;Llama a la función para el envío de la

-7-
;instrucción al LCD.
RETURN ;Retorna de la función.

9.- Función para leer la dirección de la CGRAM o DDRAM última empleada.

La dirección es almacenada en el registro W.

LCDGDIR BSF STATUS ;Selecciona Banco1.


MOVLW 0x0FF ;Carga el valor FFh en el registro W.
MOVWF LCD_DATOS_TRIS ;Pone el PuertoB como entradas.
BCF STATUS, RP0 ;Selección Banco0.
BCF LCD_CTRL, LCD_RS ;LCD en modo control.
BSF LCD_CTRL, LCD_RW ;Configurado para leer el flag de ocupado.
BSF LCD_CTRL, LCD_E ;LCD activado.
MOVF LCD_DATOS,W ;Coloca en W los datos leídos del LCD
;(flag de ocupado + dirección RAM).
BCF LCD_CTRL, LCD_E ;LCD desactivado.
ANDLW 0x07F ;Selecciona sólo los 6 primeros bits donde
;se encuentra la dirección RAM,
;desechando la información del flag de
;ocupado.
BCF LCD_CTRL, LCD_RW ;Cambia el bit de control una vez
;finalizada la lectura.
BSF STATUS,RP0 ;Selecciona Banco1.
MOVLW 0x000 ;Carga en W el valor 00h.
MOVWF LCD_DATOS_TRIS ;Pone el PuertoB como salida.
BCF STATUS, RP0 ;Selecciona Banco0.
RETURN ;Retorna de la función.

10.- Función para enviar un carácter al LCD.

Es necesario que el carácter se encuentre almacenado en W.

LCD_PONCAR MOVWF LCD_TEMP ;Almacena temporalmente el dato de


;W en la variable LCD_TEMP.
CALL LCD_OCUPADO ;Espera a que esté libre.
BCF LCD_CTRL, LCD_RW ;LCD en modo escritura.
BSF LCD_CTRL, LCD_RS ;LCD en modo dato.
BSF LCD_CTRL, LCD_E ;LCD activado.
MOVF LCD_TEMP, W ;Carga en W el valor de
;LCD_TEMP.
MOVWF LCD_DATOS ;Envía el dato al LCD.
BCF LCD_CTRL, LCD_E ;LCD desactivado.
RETURN ;Retorna de la función.

-8-
11.- Función para enviar comandos al LCD( borrado display, modo, control, posición
inicial,...)

Es necesario que el comando se encuentre almacenado en W.

LCD_PUTCMD MOVWF LCD_TEMP ;Almacena temporalmente el dato de


;W en la variable LCD_TEMP.
CALL LCD_OCUPADO ;Espera a que esté libre.
BCF LCD_CTRL, LCD_RW ;LCD en modo escritura.
BCF LCD_CTRL, LCD_RS ;LCD en modo control.
MOVF LCD_TEMP,W ;Carga en W el valor de
;LCD_TEMP.
MOVWF LCD_DATOS ;Envía el dato al LCD.
BCF LCD_CTRL, LCD_E ;LCD desactivado.
RETURN ;Retorna de la función.

Funciones de retardo. El tiempo de retardo es ((Valor_Retardo * 3) + 4 ) *


Tiempo de ciclo.
El Valor_Retardo es (Tiempo_Retardo - ( 4 * Tiempo de ciclo)) / ( 3 *
Tiempo de ciclo).

Por ejemplo, para un cristal de 4 MHz.

Tiempo de retardo es ((32 * 3) + 4 ) * 1 uSeg. = 100 uSeg.


Valor_Retardo es ( 500 uSec - 4) /3 = 165

RETARDO500 MOVLW D'165' ;Carga en W el valor de


;retardo.
MOVWF RETARDO ;Carga el valor en la variable
;retardo.
RETARDO500_BUCLE DECFSZ RETARDO,F ;Decrementa el valor de
;retardo, y si es 0 salta.
GOTO RETARDO500_BUCLE ;Si no es 0 vuelve al bucle.
RETARDO500_FIN RETURN ;Retorna de la función.

La función X_RETARDO500 ejecuta la función RETARDO500 tantas veces


como valor se encuentre en X_RETARDO. La función RETARDO proporciona un
tiempo de 500 us. por lo tanto si se desea un retardo de 2 ms. hay que poner en
X_RETARDO el valor 4 ( 4 * 500 us. = 2 ms.).

X_RETARDO500 MOVWF X_RETARDO


;Carga en X_RETARDO el
;valor de W.
X_RETARDO500_BUCLE CALL RETARDO500 ;Ejecuta la función
;RETARDO500.
DECFSZ X_RETARDO,F ;Decrementa el valor
;X_RETARDO, y si es 0
;salta

-9-
GOTO X_RETARDO500_BUCLE ;Si no es 0 repite el bucle.
X_RETARDO500 RETURN ;Retorna de la función.

CÓDIGOS.

Código direcciones pantalla módulo LCD2x16.

Para el caso del display LCD 2x16, las direcciones de memoria DDRAM para
posicionar los caracteres en la pantalla son las siguientes:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F

Así, si se desea escribir un carácter en la primera línea y primera posición, se


debe escribir en la DDRAM el valor 00h.

Código direcciones pantalla módulo LCD4x16.

Para el caso del display LCD 4x16, las direcciones de memoria DDRAM para
las cuatro líneas son las siguientes:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
10 11 12 13 14 15 16 17 18 19 2A 2B 2C 2D 2E 2F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

Código para visualización de caracteres.

Por otra parte, el código de todos los caracteres que están almacenados en el
display son los siguientes:

-10-
Figura 4.- Tabla caracteres.

Aparte de estos caracteres, se pueden definir por el usuario hasta 8 caracteres


más (guardados en la CGRAM en las direcciones 0 a 7). Los caracteres tiene una
resolución de 5 columnas x 8 filas, definidas mediante ‘1’ cuando se desea que el pixel
correspondiente esté en negro, y un ‘0’ cuando se desee que el píxel correspondiente
este en blanco. La forma de realizarlo es exactamente la siguiente:

-11-
Fila BITS Valor del
76543210 Byte
000 xxx 0x0E ( 00001110)
001 x x 0x11 (00010001)
010 x xx 0x13 (00010011)
011 x x x 0x15 (00010101)
100 xx x 0x19 (00011001)
101 x x 0x11 (00010001)
110 xxx 0x0E (00001110)
111 xxxxx 0x1F (00011111)

De esta manera, el valor del byte debe ser cargado en la dirección CGRAM
00cccrrr (binario) , donde:

-ccc = el número del carácter definido ( del 0 al 7 ).


-rrr = número de la fila del carácter definido.

Por lo tanto, para definir el valor de la fila 2 carácter 1, se debería de poner el


valor en la CGRAM de 00001010b.

Posteriormente, para visualizar por ejemplo, el carácter creado en la posición 0


basta con poner la siguiente rutina:

MOVLW D’0’
CALL LCD_PONCAR

PROGRAMAS.
A continuación se procede a comenzar la parte práctica, donde se desarrollarán
diversos programas, empezando por el más sencillo y realizando progresivamente
programas más complejos.

Primer programa TEXTO SENCILLO:

En este primer programa se pretende simplemente visualizar una pantalla de


bienvenida tal y como se muestra a continuación:

L C D 2 x 1 6
B I E N V E N I D O

Para entender bien la rutina del programa realizado se presenta el siguiente


diagrama de flujo:

-12-
Figura 5.- Diagrama de flujo LCD.ASM

-13-
La rutina del programa se encuentra en el archivo lcd.asm (que se puede abrir
con el mismo bloc de notas), y el archivo a cargar en el micro es el lcd.hex.

Básicamente, este programa comienza con la inicialización y configuración del


LCD y del microcontrolador. Posteriormente, el microcontrolador lee de la tabla
‘LINEA1’, donde se encuentran los caracteres a visualizar en la primera linea del LCD
que será ‘LCD 2x16’. La rutina lee inicialmente el primer carácter (‘L’), lo posiciona en
la dirección adecuada del LCD ( 1ª línea 5º carácter) y lo visualiza en pantalla. A
continuación, incrementa la dirección del carácter a leer de la tabla ‘LINEA1’, y la
posición donde visualizarlo. De esta manera, se van visualizando uno a uno todos los
caracteres de la tabla, y finaliza cuando se lee el caracter 0x00 que es el último de la
tabla.

Para realizar la visualización de la segunda fila del LCD se sigue el mismo


procedimiento anterior, pero cambia la dirección donde visualizar los datos y la tabla de
donde se leen los caracteres que en este caso será ‘LINEA2’.

Segundo programa CARACTERES FIJOS Y VARIABLES:

El siguiente programa consiste en un contador de pulsos. Para ello se visualizan


en pantalla una serie de caracteres fijos y otro variable que aumenta cada vez que el
usuario realiza una pulsación. La pantalla de inicio del display es la siguiente:

C O N T A D O R P U L S A C .
P U L S O S : 0

-14-
Posteriormente, en función de número de pulsaciones que el usuario realice en
cualquiera de los 5 botones existentes en la placa, el número de pulsos visualizados se
va incrementando.

Figura 6.- Diagrama de flujo LCD_PULS.ASM

La rutina del programa se encuentra en el archivo lcd_puls.asm (que se puede


abrir con el mismo bloc de notas), y el archivo a cargar en el micro es el lcd_puls.hex.

-15-
Tercer programa CONFIGURACIÓN DE MENSAJE POR EL USUARIO:

El siguiente programa posibilita que el usuario pueda escribir el carácter


deseado en la posición deseado tan sólo utilizando los cinco botones.

Para ello, las funciones que desempeñan los botones son las siguientes:

Figura 7.- Botones.

1.- Botón incrementar: visualiza el siguiente carácter situado en la


CGRAM.
2.- Botón izquierda: se desplaza hacia la izquierda.
3.- Botón fijo: hace que la pantalla deje de parpadear en caso que lo
estuviera, o que comience a parpadear en caso de que no lo estuviera (para este último
caso es necesaria una pulsación prolongada).
4.- Botón derecha: se desplaza hacia la derecha.
5.- Botón decrementar: visualiza el anterior carácter situado en la
CGRAM.

-16-
Figura 8.- Diagrama de flujo LCD_BOT.ASM

La rutina del programa se encuentra en el archivo lcd_bot.asm (que se puede


abrir con el mismo bloc de notas), y el archivo a cargar en el micro es el lcd_bot.hex.

-17-
Cuarto programa DESPLAZAMIENTO DE CARACTERES POR EL MODULO:

El siguiente programa visualiza en pantalla el siguiente texto:

= C O N T R O L M O D U L O =
= L C D 2 x 1 6 =

La diferencia de este programa es que los caracteres irán apareciendo por la


derecha de la pantalla y se irán desplazando hacia su izquierda hasta alcanzar su
posición definitiva. La forma de realizar este desplazamiento es el siguiente (el caso que
se explica es para el primer carácter de la primera línea, pero resulta igual para todos los
caracteres):

- se visualiza el carácter ‘=’ en la posición más a la derecha posible (0FH).


Tras un pequeño retardo se borra el carácter de esa posición y se visualiza en
la posición contigua izquierda (0EH). Repite el bucle de retraso, y visualiza
en la siguiente posición contigua izquierda, y este bucle se repite hasta que la
posición coincide con la posición definitiva del carácter.

Finalmente, este programa simula dos hombres corriendo, uno en la posición


41H y otro en la posición 4FH. Para ello es necesario crear dos caracteres, que se
describen a continuación.

CARACTER 1.

CARACTER 2.

Para simular los hombres corriendo, la rutina es la siguiente:

BUCLE VISUALIZA CARACTER1


RETRASO

-18-
VISUALIZA CARACTER2
RETRASO
SALTA A BUCLE

Figura 9.- Diagrama de flujo LCD_CAR2.ASM

-19-
La rutina del programa se encuentra en el archivo lcd_carac.asm (que se puede
abrir con el mismo bloc de notas), y el archivo a cargar en el micro es el lcd_carac.hex.

Quinto programa CREACIÓN DE CARACTERES DISEÑADOS POR


PROGRAMADOR:

El siguiente programa visualiza por pantalla el valor de 8 caracteres que


puede configurar el usuario manualmente. De esta manera, en pantalla aparece el
siguiente texto, donde el carácter ‘X’ significa que depende en cada caso del valor que
el usuario asigne a cada carácter. La rutina del programa se encuentra en el archivo
lcd_carac2.asm (que se puede abrir con el mismo bloc de notas), y el archivo a cargar
en el micro es el lcd_carac2.hex.

1 : X 2 : X 3 : X 4 : X
5 : X 6 : X 7 : X 8 : X

La configuración que cada carácter se realiza durante la programación del


microcontrolador, de forma que cuando utilizamos el ICPROG nos aparece esta
pantalla:

Figura 10.- ICPROG

-20-
En la ventana de ‘Código Programa’, se observa a la izquierda como está escrito
CHAR1, CHAR2,..., CHAR8(aunque no aparece en está pantalla ya que habría que
desplazar la pantalla hacia abajo). Debajo de cada una de estás líneas aparece una línea
con el código ‘........’, y en esa linea es donde el usuario debe de configurar el carácter.
Pongamos el ejemplo que queremos configurar el carácter 1 con el dibujo del hombre:

Entonces nos colocamos en la línea de configuración del carácter 1 (ver imagen)


y observamos como toda la línea 0018 tiene el código 3420 debido a que simboliza que
el carácter configurado es el ‘carácter en blanco’. Entonces, la línea se compone de 8
códigos 3420 correspondiente a las ocho líneas configurables de cada carácter, siendo la
línea 1 la del código 3420 colocado a la izquierda, y la línea 8 el código 3420 de la
derecha.

Figura 11.- Línea carácter 1.

Nota importante: cuando se desea configurar el carácter solo se cambiará del


código 3420 los dos últimos bytes, es decir el 20, de forma que el código
correspondiente debe quedar de la siguiente manera 34xx.

Haciendo doble click sobre el primer 3420 situado a la izquierda accedemos a la


configuración de la primera fila (figura 12), y a continuación se asignamos el código
correspondiente (figura 13):

-21-
Figura 12.- Configuración primera fila.

Figura 13.- Código primera fila.

Una vez configurado procedemos a pulsar OK y quedará de la siguiente manera:

Figura 14.- Primera fila configurada.

-22-
LINEA2:

Figura 15.- Código segunda fila.

LINEA3:

Figura 16.- Código tercera fila.

LINEA4:

Figura 17.- Código cuarta fila.

-23-
LINEA 5:

Figura 18.- Código quinta fila.

LINEA 6:

Figura 19.- Código sexta fila.

LINEA7:

Figura 20.- Código séptima fila.

-24-
LINEA8:

Figura 21.- Código octava fila.

Donde finalmente la línea de configuración del carácter 1 queda de la siguiente


manera:

Figura 22.- Código novena fila.

Finalmente sólo habría que programar el PIC16F628 con está configuración


pulsando F5 o el icono siguiente:

Figura 23.- Icono programación.

-25-

También podría gustarte