Practica 1 - Programación Básica Con El LCD
Practica 1 - Programación Básica Con El LCD
Practica 1 - Programación Básica Con El LCD
Usar una pantalla LCD para visualizar informacin y como medio de depuracin de
aplicaciones, tanto en C como en Ensamblador.
Introduccin.
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.
Iniciaremos creando un proyecto. Para eso abriremos el Programa PSoC Designer. Ah seleccionaremos File en
el men y despus New Project
A continuacin nos saldr un cuadro de dialogo, donde pondremos el nombre del proyecto
(Practica1a) y marcaremos la casilla que dice Create Directory for Workspace. Esto creara un
directorio diferente con el nombre del proyecto y nos ayudar a mantener organizados nuestros
diseos
Nos saldr un nuevo cuadro de dialogo donde elegiremos el modelo exacto del circuito y el
lenguaje principal en que programaremos.
Ahora expandimos el rbol del explorador de proyecto, y damos doble clic en el archivo
main.c. Esto nos abrir una nueva pestaa en el proyecto con un borrador para que
escribamos nuestro programa en C. Las 2 primeras lneas de cdigo son para incluir el espacio
de nombres, direcciones y API bsica de todos los PSoC (TODOS los Programas que
desarrollemos llevaran estas lneas), y despus sigue un cuerpo main vaco, que es donde
escribiremos nuestro programa principal.
Ahora pondremos los mdulos que necesitaremos para nuestro programa. Para esto daremos
click en la pestaa Practica1a (chip), para regresarnos a la vista anterior. Una vez ah,
expandiremos el arbol Misc Digital en la caja de mdulos de usuario. Ah veremos una lista de
varios mdulos digitales, de los cuales eligiremos LCD dando doble clic sobre de el. En caso de
que tu pantalla tenga luz, elige tambien un mdulo de LED.
Al ser un mdulo de software (no utiliza hardware ni mdulos internos), no aparecera nada en la
seccion central, pero en el explorador de proyecto veremos que se formo una nueva entrada con
el nombre LCD_1 en el arbol. (En caso de que lo hayas seleccionado, tambien aparecera otro
mdulo llamado LED_1)
Ahora que hemos colocado nuestros mdulos le damos doble click al mdulo LCD_1 en el
explorador de proyecto para que se actualice el panel de parmetros, que se encuentra a la
izquierda. Este panel lo editaremos con los valores:
Ahora hay que transferir nuestro cdigo al circuito, para esto nos vamos al men Program y ah
seleccionamos Program Part. Esto nos arrojara la ventana del programador. (Debes de haber
conectado ya el programador a tu PC).
__________________________________________________________________________________________________
__________________________________________________________________________________________________
_________________________________________________________________________________________________
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.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
3.- En el Caso de que la Pantalla lleve un LED, Que tendra que poner para que se encendiera?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
5.- Explica con tus palabras para que sirven las funciones LCD_PRHexByte, LCD_PrHexInt y
LCD_WriteData.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
6.- Escribe y Explica la salida del Programa, y para que sirven las funciones itoa, ltoa, utoa y
ultoa.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
En el Men File Selecciona la opcin Close Workspace. Crea ahora un nuevo Proyecto y
llmalo Practica1b.
En el Explorador del Proyecto dale doble click al archivo main.asm, para abrirlo en una pestaa
y
Las 3 primeras lneas del archivo sirven para cargar los archivos que contienen los espacios de
nombres, subrutinas y macros bsicas para el proyecto. La lnea 9, sirve para que al compilar se
exporte el espacio de nombres del programa principal a los dems archivos.
Pasa a la pestaa de interconexiones ([CHIP]), y agrega los mdulos de LCD y/o LED, cambiando
tambin sus parmetros tal y como lo hiciste en el programa en C.
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'
mov [VarStr+8],'d'
mov [VarStr+9],'o'
mov [VarStr+10], 0x00 ; Null o Fin de Cadena
mov A,00h ; Fila = 0
mov X,00h ; Columna = 0
call LCD_Position
mov A,>VarStr ; Parte alta de la direccin de la Variable en RAM
mov X,<VarStr ; Parte baja de la direccin de la Variable en RAM
call LCD_PrString ; Imprime la cadena en RAM
mov A,01h ; Fila = 1
mov X,00h ; Columna = 0
call LCD_Position
mov A,>TablaRom ; Parte alta de la direccin de la tabla en ROM
mov X,<TablaRom ; Parte baja de la direccin de la tabla en ROM
call LCD_PrCString ; Imprime la cadena constante en ROM
.terminate:
jmp .terminate
.literal
TablaRom:
asciz "Cadena ROM" ; Defino una cadena en ROM con terminacin nula
.endliteral
8.- Que Hace este Cdigo? Cul es la diferencia entre LCD_PrString y LCD_PrCString?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
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?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
10.- Es posible imprimir nmeros en formato decimal haciendo uso de LCD_PrHexByte? Explica
tu respuesta.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
_________________________________________________________________________________________________
11.- Que ventajas nos proporciona imprimir usando LCD_WriteData a usar LCD_PrString?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
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?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
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
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
15.- Que desventajas y ventajas encuentras en el uso de ensamblador para el Manejo del LCD,
con respecto a C?
__________________________________________________________________________________________________
__________________________________________________________________________________________________
MC. Edgar Mauricio Romero Lpez
Dispositivos de Control. Gua de Practicas.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
________________________________________________________________________________________________
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: