Beruflich Dokumente
Kultur Dokumente
Dispositivos de Control
Fecha de Entrega:14/02/2017
Dispositivos de Control. Gua de Practicas.
Usar una pantalla LCD para visualizar informacin y como medio de depuracin de aplicaciones, tanto en C como
en Ensamblador.
Introduccin.
El LCD es una herramienta muy til y econmica, no solo para el despliegue de informacin, sino tambin para el
proceso de depuracin durante el desarrollo, ya que nos permite desplegar resultados parciales o usarlo para
monitorear los procesos y variables dentro de nuestra aplicacin.
Actualmente los displays de LCD ms usados se basan en el protocolo estndar del manejador de LCD Hitachi
HD44780. Este driver puede manejar displays de hasta 8 lneas y 40 caracteres. Este manejador puede ser usado con
dos interfaces diferentes de 4 y 8 bits, siendo la ultima ms rpida a costa de usar ms terminales de E/S. El PSoC
Designer nos proporciona una API estndar para el manejo de LCDs basados en este chip, de 2 lneas y 16 caracteres;
Sin embargo, es posible usarla con otros displays ms grandes, con la nica restriccin de que no podremos usar
directamente las barras graficas. Para Conectar el LCD, el PSoC utiliza 7 bits de un puerto, ya que utiliza la interfaz de 4
bits del controlador para ahorrar pines. El octavo bit del puerto podemos usarlo para controlar el LED del panel trasero de
nuestra pantalla en caso de tenerlo, usando mscaras en el bit 7 del puerto, o usando un mdulo de LED dentro del
PSoC Designer.
Conexiones.
Para nuestra primera prctica conectaremos la pantalla al puerto 2 del PSoC de acuerdo al siguiente diagrama:
El Potencimetro o Preset puede tener cualquier valor en el rango de 10KOhms a 100KOhms. Este valor no es crtico ya
que su nica funcin es establecer el nivel de contraste deseado para la pantalla. La tarjeta de evaluacin cuenta con un
LCD conectado al Puerto 2.
EL PSoC se conecta al programador por medio de 5 terminales: Alimentacin (Vdd), Tierra (GND), Reset (XRES), SCLK
(P1.0) y SDATA (P1.1). De estas 5 terminales el reset es opcional, y se suele utilizar cuando queremos programar un
micro que tiene alimentacin aplicada. El Programador del PSoC puede proporcionarnos alimentacin de 5 volts para
nuestro circuito, sin embargo se debe tener cuidado de que la corriente del circuito no exceda los 120mA, y desconectar
las terminales de programacin SCLK y SDATA durante la operacin del circuito si las usamos dentro de nuestra
aplicacin para alguna funcin, ya que de lo contrario podramos daar el programador.
Desarrollo.
Este programa imprime en una pantalla LCD dos cadenas de textos, una guardada en la memoria RAM y la otra en la memoria ROM
del microcontrolador.
2.- Que diferencia hay entre las lneas 16 y 18, y como se relacionan estas con las lneas 8 y 9? Funcionaran si se
cambia la forma de declarar las cadenas? Explica tus Respuestas.
Las instrucciones en las lneas 8 y 9 se utilizan para generar cadenas de textos. Las instrucciones en las lneas 16 y 18 se emplean
para imprimir el texto en una pantalla LCD.
La diferencia entre las lneas de impresin de texto (16 y 18), es que la primera se utiliza para imprimir datos provenientes de la
memoria RAM (lnea 9), y la segunda imprime datos que se encuentran guardados en la memoria ROM (lnea 8). Si se llegara a
cambiar el orden marcara un error de compilacin.
3.- En el Caso de que la Pantalla lleve un LED, Que tendra que poner para que se encendiera?
Si en los parmetros el Drive del LED est en modo High, es necesario escribir LED_On.
Si en los parmetros el Drive del LED est en modo Low, no es necesario escribir algn otro comando.
El programa visualiza por medio de una LCD valores en hexadecimal de tres tipos diversos de datos: una cadena de byte, una cadena
de byte sin signo y un nmero entero. Tal y como se aprecia en la siguiente tabla:
Entradas Salidas
-64 FFFFFFC0
65 41
1625 0659
5.- Explica con tus palabras para que sirven las funciones LCD_PRHexByte, LCD_PrHexInt y LCD_WriteData.
Hay que tomar en cuenta que LCD_PrHexByte, imprime nicamente dos caracteres, lo cual se puede corroborar observando que el
valor de -64 imprimi nicamente los 2 digitos menos significativos. De la misma forma para la instruccin LCD_PrHexInt, esta
imprime cuatro caracteres, por lo cual en nuestra pantalla se llena el cuarto carcter con un cero.
6.- Escribe y Explica la salida del Programa, y para que sirven las funciones itoa, ltoa, utoa y ultoa.
Este cdigo nos muestra el procedimiento para convertir cierto de tipo de valores numricos a cadenas de datos,
visualizndolos en LCD.
7.- Investiga en la documentacion en el archive C Language Compiler User Guide ms acerca de estas funciones,
investiga cual es la funcin que me permite imprimir nmeros con punto decimal, y haz un programa ejemplo que me
imprima una variable flotante llamada MyPI con valor 3.141592. Escribe el cdigo del Programa.
export _main
area bss(RAM)
VarStr: blk 17 ; Separo 17 bytes para una cadena en RAM (16 Caracteres + Null)
area text(ROM, REL)
_main:
call LCD_Start
call LED_Start
call LED_On
mov [VarStr],'H' ; Inicializo la cadena
mov [VarStr+1],'o'
mov [VarStr+2],'l'
mov [VarStr+3],'a'
mov [VarStr+4],' '
mov [VarStr+5],'M'
mov [VarStr+6],'u'
mov [VarStr+7],'n'
8.- Que Hace este Cdigo? Cul es la diferencia entre LCD_PrString y LCD_PrCString?
Imprime en la parte superior una cadena de caracteres guardados en la memoria RAM, mientras que en la parte inferior imprime
texto ubicado en la memoria ROM del microcontrolador.
La diferencia entre ambas instrucciones es la misma que en el lenguaje C, la primera se utiliza para datos en la memoria RAM,
mientras que la segundo para los datos en la ROM.
9.- Porque es necesaria la lnea mov A,>VarStr y Como Afecta la funcin LCD_PrString a mi programa, en cuanto
a posibles conflictos que puede generar?
Es el mtodo que utiliza el compilador en lenguaje ensamblador para imprimir cadenas de caracteres, ya que es
necesario dividir la parte alta y parte baja de lo contrario existira un error en lacompilacin.
El registro X y el acumulador pueden ser modificados debido a implementaciones actuales o implementaciones futuras
de la funcin LCD_PrString. Lo mismo pasa para todas las variables o punteros en RAM registrados en el modelo de
memoria larga. Cuando sea necesario, la funcin puede preservar los valores de los registros o variables en RAM a travs
de llamadas a funciones fastcall16.
10.- Es posible imprimir nmeros en formato decimal haciendo uso de LCD_PrHexByte? Explica tu respuesta.
No, ya que este nicamente imprime los dos nmeros menos significativos en lenguaje hexadecimal.
11.- Que ventajas nos proporciona imprimir usando LCD_WriteData a usar LCD_PrString?
La ventaja del LCD_WriteData es que nos permite imprimir un solo carcter proveniente de Ascii y asi poder ocupar
menos espacio en la memoria.
Ahora vamos a crear un pequeo programa que haga uso de los comandos internos del LCD. Consulta la Hoja de Datos
del LCD para poder seguir el programa.
;-----------------------------------------------------------------------------
; Assembly main line
;-----------------------------------------------------------------------------
.endliteral
12.- A que cdigo en nuestros programas anteriores sustituyen las lneas: mov A, SetDDRAM_Addr | 0x40 y call ?
LCD_Control
Sustituye a:
Mov A,xxh
Mov X,yyh
Call LCD_Position
13.- A que estructura de alto nivel equivale el siguiente cdigo, y para que se utiliza en el programa?
mov [MyVar],100
Ciclo:
mov A,200
call LCD_Delay50uTimes
dec [MyVar]
jnz Ciclo
Se encarga de posicionar el cursor, encender el parpadeo y encender la LCD. (DISPLAY ON/OFF Control).
15.- Que desventajas y ventajas encuentras en el uso de ensamblador para el Manejo del LCD, con respecto a C?
En C es mucho mas fcil y rpido realizar la programacin de la LCD, ya que no es necesario escribir tantos cdigos. Aun
as en ensamblador se puede configurar ciertas cosas que estn predefinidas en C ,adems de ocupar menos espacio de
memoria.
16.- Crea un Nuevo Proyecto en Ensamblador, y llmalo Practica1c. Haz un programa que genere y despliegue 8
caracteres propios en el LCD (como por ejemplo: , , , , , , , etc.) Cada uno debe de ir apareciendo uno a uno
con intervalos de un segundo entre cada despliegue. Para generar este tiempo de espera entre el despliegue de cada
smbolo, crea una subrutina llamada Pausa1s haciendo uso de la funcin LCD_Delay50uTimes del LCD. De Tal manera
que cada vez que desees hacer una espera de 1 seg uses la instruccin call Pausa1s.
17.- Haz un Programa en C que despliegue el dibujo que se muestra en las figuras, y lo vaya desplazando de izquierda a
derecha, y de derecha a izquierda, continuamente, un pixel a la vez.
Conclusiones:
La implementacion de esta practica, nos sirvio para conocer el entorno de PsoC y la implementacion de los
lenguages de programacion c y esamblador, al igual de los comandos internos para controlar una pantallla LCD 16x2 , al
momento de realizar la practica tuvimos dificiltuad en la realizacion de la practica 1a, al momento de mostrar al carcter
del invader se desplazaba de casilla a casilla y en realidad era poner el desplazamiento y borrar la memoria antes de
mostrar el siguiente avance.