MENSAJE EN UN LCD MEDIANTE UN CPLD

ESCRIBIR UN MENSAJE EN UN LCD MEDIANTE EL CPLD:
En este trabajo vamos a escribir en un LCD un mensaje mediante el CPLD XC9572, todo ello mediante el interface JTAG de XILINX y en la tarjeta ‘TAD XC9572’ creada y distribuida por Abra Telecom S.L. En esta prctica el mensaje a mostrar en el display ser Daniel Villegas (c) 2011.
Para realizar el estudio del sistema comenzaremos por el LCD que vamos a utilizar:
El lcd contiene una Pantalla de cristal lquido con una matriz de 2 x 16 caracteres de 5 x 7 pxeles,  Microcontrolador propio de gobierno. (Hitachi ?C44780), capacidad de desplazamiento de los caracteres hacia la izquierda o hacia la derecha memoria de 40 caracteres por la lnea de pantalla, movimiento del cursor, 8 caracteres programables por el usuario, conexin a un procesador usando interfaz de 4/8 bits.

   1.
 
En la imagen superior vemos un esquemtico del interconexionado del lcd:
” VSS.- Patilla de GND de alimentacin.
” VCC.- Patilla de alimentacin de +5V.
” VEE.- Patilla de contraste del cristal lquido, se aplica una tensin variable entre 0 y +5V que permite regular el contraste del cristal lquido.
” RS.- Seleccin del registro de control/datos:
 RS=0 Registro de control.
 RS=1 Registro de datos.
 R/!W.- Seal de lectura/escritura:
” E.- Seal de activacin del mdulo LCD:  Las lneas D0-D7 quedan en estado de alta impedancia.
” D0-D7.- Bus de datos bidireccional. A travs de estas lneas se realiza la transferencia de informacin entre el mdulo LCD y el sistema de control.

1. Creacin del  esquemtico:
Antes de nada crearemos el esquema del circuito que iremos a implementar. Para ello crearemos un nuevo proyecto que llamaremos LCD_GRAFICO de la misma forma que hemos hecho hasta ahora.
13

 
 

En l crearemos el diseo del circuito. Para nuestro circuito necesitamos un circuito lgico en el que podamos comunicarnos, leer y escribir sobre el LCD. Para ello, dentro del archivo .sch que hemos creado crearemos un nuevo archivo (botón  derecho sobre el mismo y new source). En el que nos aparecer un cuadro como el de la siguiente imagen:
12

En l seleccionaremos la opcin State Diagram y le daremos nombre al achivo, LCD_GRAFICO. Entrando en l se abrir el entorno StateCad. En cul crearemos nuestra mquina de estados. En la barra superior, iremos a la options>>variable y se nos abrir un cuadro donde introduciremos entradas, salidas y estados:
19

 
Dentro de este cuadro crearemos nuestras entradas de datos desde el lcd al CPLD (d0_i, d1_i), salidas desde el CPLD al LCD (d0_o,d1_i ), estados que irn transcurriendo que sern nodos internos de la mquina de estados  y no pines(no se comunican con el exterior de nuestra maquina de estados de forma directa sino mediante pines),  entradas de control de datos y de registros (Q0_D,Q0_R…) y entradas que crearemos externas desde el esquemtico (Three state, RS, R\!W).
Pulsamos OK y comenzaremos con nuestra mquina de estados.
Crearemos nuestros estados en funcin de la nomenclatura de los estados que se han introducido en las variables.
Comenzemos:
 3

 

Estado de inicio, en l primero observemos cmo se ha creado una entrada externa de reset que se activar cuando enviemos un 0 lgico sobre dicho pin. Pulsando doble click  sobre el globo podemos configurar  nuestro estado, aqu damos la orden de inicio del estado, esto quiere decir que ponemos todas las salidas de datos a 0(si no ponemos nada se sobreentiende un 0) as como todos los pines externos.
 4


Nos ponemos en modo registro para introducir un registro de control.
 5


Habilitamos el estado y nos ponemos en modo lectura.

 6
Este estado es igual que el anterior con la diferencia de que ponemos una entrada externa, cuando dicha entrada este a 1 se quedar en modo ocupado y, cuando esta se ponga a 0 saldr del estado.
 7
En el siguiente estado 4  nos quedaremos mientras y controlaremos con el contador de registros. Saldremos de dicho estado cuando l cuando se cumpla la secuencia en binario de 1 2  3, osea que pasar tres veces por aqu y mandaremos la secuencia de inicio: 8 9
Aqu mandamos la secuencia a estado0 siempre que no se halla  acabado la cuenta de paso anterior(1,2 y 3).
 10

20
 
Necesitamos recurrir al siguiente estado del contador de registros (100). Aqu lo que haremos ser irnos al estado 6, ste estado tendr sacar al LCD un cdigo para encender la pantalla (on/off).
21.
 
Este estado nos hace que mandemos el cursor a casa. Para llegar mandamos desde el estado 4  una  condicin Q0_R=’1′ & Q1_R=’0′ & Q2_R=’1′ (5 en el contador).
Sin condiciones nos iremos al estado 9 en el que mandaremos enviaremos  a est0 siempre que el contador de registros pase por las secuencias de los estados anteriores que no sean el estado 7 (0, 1, 2, 3, 4, 5 y 6 en decimal) y que si se cumple uno superior se quede esperando a que se cumpla uno de los posibles (de 0 a 7).
Como ya hemos dicho y graficaremos en la siguiente imagen, si se cumple la condicin del estado 7 (5 en decimal, 101 en binario) nos podremos trasladar al estado 10.
Este estado nos har que activemos el reloj externo del contador de datos.
 
Sin condiciones iremos al estado 11, en el cual, habilitaremos el LCD y pondremos en modo lectura. Para que? Para que en el estado 12 pongamos la condicin infinita de busy y as, de forma infinita nos quedemos siempre que D7_I est en 1 indicndonos que el LCD est ocupado.
 
La entrada ‘RS’ est para pasar a modo registro ‘0’  modo dato ‘1’.  El estado 13 es el encargado de pasar de todo el control a la introduccin de los caracteres:
25
Ahora utilizaremos el contador de datos, D0_I a D7_I para mandar las condiciones de dato en forma de conteo incrementativo mediante un contador de datos externos de 8 bits y entrada de reloj (reloj_dato).
Por cada carcter introduciremos un globo lleno de instruccin de datos, activacin de three state y codificacin del dato correspondiente a partir de su cdigo de posicin establecida en la DDRAM.

Daniel Villegas 2011(c)

 

Desde el estado 14 al estado 29 escribiremos Daniel Villegas que estar contenido en la 1 lnea del LCD.  Ahora veremos las condiciones desde el estado 13 a los estados 14 a 29:
Al STATE14 si [Q0_D=’1′ & Q1_D=’0′ & Q2_D=’0′ & Q3_D=’0′ & Q4_D=’0′]
al STATE15 si [Q0_D=’0′ & Q1_D=’1′ & Q2_D=’0′ & Q3_D=’0′ & Q4_D=’0′]
al STATE16 si [Q0_D=’1′ & Q1_D=’1′ & Q2_D=’0′ & Q3_D=’0′ & Q4_D=’0′]
al STATE17 si [Q0_D=’0′ & Q1_D=’0′ & Q2_D=’1′ & Q3_D=’0′ & Q4_D=’0′]
al STATE18 si [Q0_D=’1′ & Q1_D=’0′ & Q2_D=’1′ & Q3_D=’0′ & Q4_D=’0′]
al STATE19 si [Q0_D=’0′ & Q1_D=’1′ & Q2_D=’1′ & Q3_D=’0′ & Q4_D=’0′]
al STATE20 si [Q0_D=’1′ & Q1_D=’1′ & Q2_D=’1′ & Q3_D=’0′ & Q4_D=’0′]
al STATE21 si [Q0_D=’0′ & Q1_D=’0′ & Q2_D=’0′ & Q3_D=’1′ & Q4_D=’0′]
al STATE22 si [Q0_D=’1′ & Q1_D=’0′ & Q2_D=’0′ & Q3_D=’1′ & Q4_D=’0′]
al STATE23 si [Q0_D=’0′ & Q1_D=’1′ & Q2_D=’0′ & Q3_D=’1′ & Q4_D=’0′]
al STATE24 si [Q0_D=’1′ & Q1_D=’1′ & Q2_D=’0′ & Q3_D=’1′ & Q4_D=’0′]
al STATE25 si [Q0_D=’0′ & Q1_D=’0′ & Q2_D=’1′ & Q3_D=’1′ & Q4_D=’0′]
al STATE26 si [Q0_D=’1′ & Q1_D=’0′ & Q2_D=’1′ & Q3_D=’1′ & Q4_D=’0′]
al STATE27 si [Q0_D=’0′ & Q1_D=’1′ & Q2_D=’1′ & Q3_D=’1′ & Q4_D=’0′]
al STATE28 si [Q0_D=’1′ & Q1_D=’1′ & Q2_D=’1′ & Q3_D=’1′ & Q4_D=’0′]
al STATE29 si [Q0_D=’0′ & Q1_D=’0′ & Q2_D=’0′ & Q3_D=’0′ & Q4_D=’1′]

 
Daniel + [ESPACIO]
27
28
                   
Crearemos el estado 39, iremos desde el 38 sin condiciones y en l  deshabilitaremos el LCD, y nos iremos al estado 10 siempre que el contador de datos haga est dentro de la secuencia de los estados de la primera lnea (estados de 14 a 29).
Si nos percatamos, no se ha creado un estado 8. Ahora es el momento de su creacin:
Como sabemos, el state 4 es el encargado de la configuracin del LCD. Este est controlado por el contador de registros. Por tanto necesitamos un estado de dicho contador que no hallamos usado (1010). Esta condicin ir al estado 8 que contendr la instruccin a la DDRAM de orden de salto de lnea del salto de lnea.

29
Ahora hemos creado una condicin que har una escritura en la segunda lnea por lo que debemos mandar esta condicin a la activacin de modo dato para poder escribir la segunda lnea:
30
 
                                      
Y finalmente el estado 40 nos dar la puesta a 0:
31
 
18.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s