MANEJO DE LCD Y PUERTO SERIAL CON EL MICROCONTROLADOR MSP430G2553 DE TEXAS INSTRUMENTS
En
el siguiente articulo realizaremos una descripción detallada de lo que se hizo
en el laboratorio de la asignatura llamada sistemas microprocesados, destinado a entender y analizar
el funcionamiento e importancia de la comunicación por puerto serial, entre
nuestro microcontrolador de referencia MSP430G2553, y el PC. Utilizando como
sistema de conversión un MAX 232, que convierte las señales de un puerto serie RS-232 a señales compatibles con los circuitos integrados
lógicos TTL, para posteriormente visualizar en una LCD 2*16, los
caracteres asignados por el docente. Usando como interfaz de comunicación para
el display un programa para poder escribir y leer los datos del puerto serial
como Hércules o Hyperterminal.
INTRODUCCIÓN
El
puerto serial es claramente la mejor
herramienta cuando se trata de interconectar el PC con algún otro periférico
externo. Típicamente,
la comunicación serial se utiliza para transmitir datos en formato ASCII. Para
realizar la comunicación se utilizan 3 líneas de transmisión: referencia,
Transmisión y Recepción. Debido a que la transmisión es asincrónica, es posible
enviar datos por una línea mientras se reciben datos por otra. También es
propicio entender la importancia de EL PUERTO UART de nuestro micro controlador,
ya que este controla los puertos y dispositivos, encargándose de manejar las interrupciones de los
dispositivos conectados al puerto
serie y de convertir los datos en formato paralelo. La
importancia que representa en nuestro proyecto la adecuación del MAX 232 como
acoplador entre estos dos diferentes puertos mediante la decodificación de
señales, es muy grande.
DESCRIPCIÓN DEL PROYECTO
En esta práctica de laboratorio hicimos
un proyecto con el fin de identificar el manejo del puerto de comunicación
serial RS232, el manejo del el visualizador LCD 16x2, y del puerto UART del
microcontrolador MSP430G2553.
Básicamente en lo que consistía nuestro
proyecto era en comunicarnos a través del puerto de comunicaciones del
computador con el microcontrolador. Ya que dicha comunicación no se puede hacer
directamente porque los niveles de voltaje que manejan son diferentes, entonces
se procedió a usar un adaptador o “conversor” de voltajes llamado MAX 232.
Haciendo una configuración correcta del MAX 232 (poniendo un par de
condensadores para que actuara como un multiplicador de voltaje) se puede
obtener un adaptador que comunica correctamente un puerto serie RS 232 (que
maneja unos niveles de voltaje de ± 12 V) a niveles compatibles con la
tecnología TTL (que maneja niveles de voltaje de ± 5V).
Con el adaptador listo procedemos a
conectar cable serial al computador, en el otro extremo sacamos tres cables: RX
(pin 3 del conector DB 9), TX (pin 2 del conector DB 9) y la conexión a tierra
(pin 5 del conector DB 9). Los pines RX y TX van a los pines 8 y 7
respectivamente del conversor MAX 232, y el pin de tierra va conectado a la
tierra general del circuito. Una vez hecho esto procedemos a conectar el
conversor con los puertos UART del microcontrolador. Conectamos los pines UART
del MAX 232, RX y TX (pines 9 y 10 respectivamente) a los pines UART RX y TX (3 y 4
respectivamente) del microcontrolador. Ya con estas conexiones podemos
comunicarnos desde el PC al microcontrolador y viceversa.
Con esto hecho lo siguiente que hicimos
fue configurar el visualizador LCD 16x2 con el microcontrolador, para ello
asignamos 2 pines del microcontrolador para hacer una configuración correcta de
la LCD, los ponemos a los pines de ENABLE y RS del visualizador LCD (5 y 3 respectivamente).
Lo siguiente que hay que conectar es el bus de datos del microcontrolador a la
LCD. El bus de datos del microcontrolador va desde el pin 8 al 11, el cual
tiene que ir conectado del pin 10 al 13 respectivamente de la LCD.
Hechas estas conexiones, ya podemos
comunicarnos desde el PC a la LCD mediante la correcta conversión de RS232 a
TTL (UART del microcontrolador), y la correcta decodificación de las
instrucciones enviadas por el PC al microcontrolador, y del microcontrolador al
visualizador LCD.
Las
instrucciones que dadas por el PC son enviadas por el puerto de comunicaciones
del mismo (casi siempre es el puerto COM 1). Estas instrucciones puede ser
colocadas allí a través de un software como el Hercules o Hyperterminal.
ARQUITECTURA:
El
microcontrolador (MSP 430G2553), lo constituye en su CPU una arquitectura
von Neumann, con direccionamiento simple para las instrucciones y los datos. La
memoria se direcciona por bloque de 1byte, y los pares de byte se combinan para hacer palabras de 16 bits.
El
procesador contiene 16 registros de 16 bits. R0 es el contador de programa, R1 es el puntero de pila, R2 es el registro de estado, y R3 es un
registro especial denominado generador
constante, que provee acceso a 6 valores constantes utilizados comúnmente,
sin requerir el uso de un operando adicional. Los registros desde el R4 hasta
el R15 son para uso general.
INSTRUCCIONES:
El
conjunto de instrucciones consta de 27 instrucciones básicas y 24 instrucciones
emuladas. Las instrucciones básicas son instrucciones en las que hay códigos de
operación únicas decodificados por la CPU. Las instrucciones emuladas son
instrucciones que hacen el código más fácil de escribir y leer, pero no tienen
códigos de operación, sino que se sustituyen automáticamente por el ensamblador
con una instrucción básica equivalente.
Hay
tres tipos de instrucciones básicas:
•
Doble operando
• Un
solo operando
•
Jump
Todas
las instrucciones de un solo operando y de doble operando puede ser
instrucciones de byte o word utilizando las extensiones .B o .W. Instrucciones
de bytes se utilizan para acceder a los datos de byte o periféricos byte. Se
utilizan instrucciones de Word acceder a datos de palabras o periféricos de
palabras. Si no se utiliza la extensión, la instrucción es una instrucción de
palabra.
DESCRIPCIÓN MODULO SERIAL:
El
puerto serial es un dispositivo muy extendido y ya sean uno o dos puertos, con
conector grande o pequeño, todos los equipos PC lo Incorporan actualmente. Debido
a que el estándar del puerto serial se mantiene desde hace muchos años, la
institución de normalización RS-232-C que regula el protocolo de la transmisión
de datos, el cableado, las señales eléctricas y los conectores en los que debe
basarse una conexión RS-232.
La
comunicación realizada con el puerto serial es una comunicación asíncrona. Para
la sincronización de una comunicación se precisa siempre de un bit adicional a
través del cual el emisor y el receptor intercambian la señal del pulso. Pero en
la transmisión serial a través de un cable de dos líneas esto no es posible ya
que ambas están ocupadas por los daros y la tierra. Por este motivo se
intercalan antes y después de los daros
de información de estado según el protocolo RS-232. Esta información es determinada
por el emisor y el receptor al estructurar la conexión mediante la
correspondiente programación de sus puertos seriales. Esta información puede
ser de la siguiente manera:
Bit de inicio: Cuando el receptor detecta el bit de inicio sabe que la transmisión ha comenzado u es a partir de entonces que debe leer la transmisión y entonces debe leer las señales de la línea a distancias concretas de tiempo, en función de la velocidad determinada.
Bit de parada: Indica la finalización de la transmisión de una palabra de datos. El protocolo de transmisión de datos permite 1, 1.5 y 2 bits de parada.
Bit de paridad: Con este bit se pueden descubrir errores en la transmisión. Se puede dar paridad par o impar. En la paridad par, por ejemplo, la palabra de datos a transmitir se completa con el bit de paridad que el número de bits 1 enviados es par.
Bit de inicio: Cuando el receptor detecta el bit de inicio sabe que la transmisión ha comenzado u es a partir de entonces que debe leer la transmisión y entonces debe leer las señales de la línea a distancias concretas de tiempo, en función de la velocidad determinada.
Bit de parada: Indica la finalización de la transmisión de una palabra de datos. El protocolo de transmisión de datos permite 1, 1.5 y 2 bits de parada.
Bit de paridad: Con este bit se pueden descubrir errores en la transmisión. Se puede dar paridad par o impar. En la paridad par, por ejemplo, la palabra de datos a transmitir se completa con el bit de paridad que el número de bits 1 enviados es par.
El
protocolo RS-232 consiste en un conector tipo DB-25 de 25 pines, aunque es
normal encontrar la versión de 9 pines DB-9, más barato e incluso más extendido
para cierto tipo de periféricos. En cualquier caso, los PCs no suelen emplear
más de 9 pines en el conector DB-25. Las señales con las que trabaja este
puerto serial son digitales, de +12V (0 lógico) y -12V (1 lógico), para la
entrada y salida de datos, y a la inversa en las señales de control. El estado
de reposo en la entrada y salida de datos es -12V. Dependiendo de la velocidad
de transmisión empleada, es posible tener cables de hasta 15 metros. Cada pin
puede ser de entrada o de salida, teniendo una función específica cada uno de
ellos. Las más importantes se observan a continuación:
La
velocidad de trasmisión de datos es expresada en bits por segundo o baudios, el
baudio se llama así para expresarlo mejor que bit por segundo, el primero queda
definido como el número de estados de la señal por segundo, si solo existen dos
estados que pueden ser representados por un bit, que identifica dos unidades de
información, entonces baudio es equivalente a bit por segundo se diferencia
cuando es necesario más de un bit para representar más de dos estados de la
señal.
La
velocidad de trasmisión queda limitada por el ancho de banda, potencia de señal
y ruido con el conductor de señal, la velocidad de trasmisión queda básicamente
establecida por el reloj. Su misión es examinar o muestrear continuamente la
línea para detectar la presencia o ausencia de los niveles de señal ya
predefinidos, el reloj sincroniza además todos los componentes internos.
A
continuación se muestra una imagen de cómo interconectamos el conector DB-9 con
el MAX232 que su vez va conectado con el
microcontrolador:
DESCRIPCION MODULO LCD:
En la actualidad existe una gran
variedad de versiones, clasificadas en dos grupos. El primer grupo está
referido a los módulos LCD de caracteres (solamente se podrán presentar
caracteres y símbolos especiales en las líneas predefinidas en el módulo LCD) y
el segundo grupo está referido a los módulos LCD matriciales (Se podrán
presentar caracteres, símbolos especiales y gráficos). Los módulos LCD varían
su tamaño físico dependiendo de la marca; por lo tanto en la actualidad no
existe un tamaño estándar para los módulos LCD.
Tipos
de memorias del LCD
Un dispositivo LCD dispone de dos
tipos de memorias ambas independientes. Estas memorias se denominan DD RAM y CG RAM.
DD RAM (Display Data Ram)
Es la memoria encargada de
almacenar los caracteres de la pantalla que se estén visualizando en ese
momento, o bien, que estén en una posición no visible. El display tiene una
capacidad de 2 lineas horizontales por 40 caracteres cada una, de los cuales
solo serán visibles 2 líneas de 16 caracteres cada una. La DDRAM tiene un
tamaño de 2x40=80 bytes.
Una vez conocida la disposición de almacenamiento del
display, es facil pensar en un display de 2 líneas de 40 caracteres sobre el
que se desplaza una ventana de 2 líneas por 16 caracteres.
MAX232:
Dispone
internamente de 4 conversores de niveles TTL al estándar RS232 y viceversa,
para comunicación serie como los usados en los ordenadores, El COM1 y el COM2.
FUCIONAMIENTO:
El circuito integrado lleva internamente 2 conversores de nivel de
TTL a RS232 y otros 2 de RS232 a TTL con lo que en total podremos manejar 4
señales del puerto serie del PC, por lo general las más usadas son; TXD, RXD,
RTS, CTS, estas dos últimas son las usadas para el protocolo handshaking pero
no es imprescindible su uso. Para que el MAX232 funcione correctamente debemos
poner unos condensadores externos, todo esto lo podemos ver en la siguiente
figura en la que solo se han cableado las líneas TXD y RXD que son las más
usualmente usadas para casi cualquier aplicación.
ESQUEMÁTICO
DIAGRAMA DE FLUJO DEL ALGORITMO:
DESCRIPCIÓN DE PRUEBAS Y RESULTADOS
Una vez montado el circuito tal y cual como se
muestra en el esquematico lo rpimero que nos resultó fue que no se visualizaba
ningún carácter en la LCD, ni siquiera el letrero, como se muestra en la
siguiente figura.
Para resolver este problema lo
que hicimos fue variar el potenciómetro el cual se encarga de ajustar el
contraste en la LCD. Una vez ajustado correctamente el potenciómetro,
procedimos a configurar el Hyperterminal, pero no nos lograba visualizar nada
en la segunda línea de la LCD. Detectamos que el microcontrolador estaba dañado
y por lo tanto no se podía visualizar nada en la LCD. Procedimos a cambiar el
microcontrolador y a revisar de nuevo las conexiones donde nos dimos cuenta que
había un cable mal conectado.
Hecho el cambio de
microcontrolador, ajustando el potenciómetro y corrigiendo las malas conexiones
el proyecto estaba funcionando perfectamente como se aprecia en la siguiente
figura:
CONCLUSIONES
El
objetivo principal, de realizar una comunicación entre el PC y una lcd de 16x2
fue exitosa mediante el acople de un decodificador MAX-232 y el UART del
microcontroladorusando como interfaz de comunicación para el display un
programa para poder escribir y leer los datos del puerto serial como Hércules o
Hyperterminal.
Se hizo
uso del manejo del puerto de comunicación serial RS232, el manejo del el
visualizador LCD 16x2, y del puerto UART del microcontrolador MSP430G2553.
Es
necesaria para la comunicación 3 líneas
de transmisión: referencia, Transmisión yRecepción, identificadas como TX, RX y
ground.
El puerto
UART de nuestro micro controlador controla los puertos y dispositivos,
encargándose de manejar las
interrupciones de los dispositivos conectados al puerto serie y de convertir
los datos en formato paralelo.
BIBLIOGRAFIA
http://www.ti.com/product/MSP430G2553 [microcontrolador]
http://www.instructables.com/id/Interfacing-16x2-LCD-with-msp430-launchpad-in-8-bi/?lang=es [modulo LCD]
GRACIAS POR TU VISITA.
Comentarios
Publicar un comentario