Está en la página 1de 36

LCD controlado con STM32F

LCD controlado con STM32F


LCD: Liquid Cristal Display. Permite mostrar cualquier carácter
alfanumérico que represente lecturas de sensores, mensajes a usuario,
etc. Los tipos más comunes son:
• El de dos líneas de 16 caracteres (2X16).
LCD controlado con STM32F
• El de cuatro líneas de 40 caracteres (4X40).
LCD controlado con STM32F
El más comercial es el Hitachi 4470 (2X16).
• Posee consumo reducido, del orden de 7.5mw.
• Pantalla de caracteres ASCII, caracteres japoneses, griegos y símbolos
matemáticos.
• Desplazamiento de caracteres hacia la derecha o izquierda.
• Visualización de 16 caracteres por línea.
• Permite que el usuario programe 8 caracteres.
• Permite configurar la comunicación ya sea por bus de 4 bits u 8 bits.
LCD controlado con STM32F
El más comercial es el Hitachi 4470 (2X16).
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Pines.
Número Símbolo Descripción
de Pin
1 VSS Tierra
2 VDD 5V
3 VO Normalmente se conecta a un potenciómetro alimentado con 5V que permite variar el nivel de
contraste del cristal líquido.
4 RS Selección de registro de control o registro de datos:
RS=0, selección del registro de control.
RS=1, selección del registro de datos.
5 R/W Señal de lectura/escritura:
R/W=0, se escribe en módulo LCD.
R/W=1, se lee del módulo LCD.
6 E Señal de activación del módulo LCD:
E=0, desconectado.
E=1, conectado.
7-14 D0-D7 Bus de datos bi-direccional. A través de éste conjunto de líneas se puede interactuar con el LCD.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-DDRAM (Data Display RAM).
• Tiene una capacidad de 80 bytes, 40 por cada línea, de los cuales solo
se pueden visualizar 32 a la vez (16 por línea).

00 01 02 03 04 05 06 07 08 09 A B C D E F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4E
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-CGROM
(Character Generator RAM).

Es una memoria interna no volátil en


donde se almacenan 192 caracteres
que pueden ser visualizados.

Ejemplo: A = 0100 0001 = 0X41


X = 0101 1000 = 0X58
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-CGRAM (Character Generator RAM).

Permite almacenar 8 nuevos caracteres de usuario.


LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modos de funcionamiento.

• Modo de comando: códigos introducidos por bus de datos.


• Modo de dato: datos escritos en LCD a través de bus de datos.
• Modo de lectura del busy flag (LCD ocupada).
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Clear display: Borra el módulo LCD y pone el cursor en la primera


posición (dirección 0 de la DDRAM).

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 0 0 0 0 0 0 0 0 1
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Clear display: Instrucción en C.


char clr_disp=0x01;

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 0 0 0 0 0 0 0 0 1
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Return home: Pone el cursor en la posición de inicio (dirección 0)


desde la cual comienza a desplazarse. La dirección de la memoria
DDRAM es puesta a cero pero el contenido de ésta no es cambiado.
Requiere 1.52ms.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 0 1 X
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Return home: instrucción en C.

char ret_home=0x02;//equivalent to set 0000000010

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 0 0 0 0 0 0 0 1 X
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Entry mode set: Incrementa o decrementa en 1 la dirección de la
DDRAM/CGRAM cuando se lee o escribe. El parpadeo del cursor se
desplaza a la izquierda cada vez que se decrementa y a la derecha
cuando se incrementa. Requiere 37µs.
I/D = 1: Incremento del cursor.
I/D = 0: Decremento del cursor.
S = 1: Mueve el display a la derecha si I/D=1 o a la izquierda si I/D=0.
Cuando S=1 el cursor aparentemente no se mueve pero el display si.
S = 0: Modo normal.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 1 I/D S
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.

Entry mode set: Instrucción en C.


• Modo normal e incremento del cursor:
char e_mode_set_wosht=0x06;//equivalent to set 0000000110
• Desplazamiento de la visual cada que se escribe e incremento del
cursor:
char e_mode_set_wsht =0x07;//equivalent to set 0000000111
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 1 I/D S
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.

Display on/off control: Activa y desactiva tanto al display (D) como al


cursor (C), y establece si éste último debe parpadear (B). Requiere
37µs.
D = 1: Display on.
C = 1: Cursor on.
B = 1: Parpadeo de cursor on.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 1 D C B
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.

Display on/off control: Instrucción en C.


• Enciende parpadeo, cursor y display:
char disp_on=0x0F;//equivalent to set 0000001111
• Apaga parpadeo, cursor y display:
char disp_off=0x08;//equivalent to set 0000001000

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 0 0 0 0 0 1 D C B
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Cursor or display shift: Mueve el cursor y desplaza el display sin
cambiar el contenido de la memoria de datos DDRAM (Sin tener que
escribir o leer). Requiere 37µs.
S/C = 0: Mueve el cursor.
S/C = 1: Desplaza el display (Movimiento de mensaje mostrado).
R/L = 0: Desplazamiento a la izquierda.
R/L = 1: Desplazamiento a la derecha.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 1 S/C R/L X X
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Cursor or display shift: Instrucción en C.
• Desplaza display a la derecha:
char right_sht_disp=0x1C;//equivalent to set 00011100
• Desplaza display a la izquierda:
char left_sht_disp =0x18;//equivalent to set 00011000
• Desplaza cursor a la derecha:
char right_sht_cur=0x14;//equivalent to set 00010100
• Desplaza cursor a la izquierda:
char left_sht_cur =0x10;//equivalent to set 00010000
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 1 S/C R/L X X
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Function set: Fija la longitud de la interface de datos (DL), el número de
líneas del display (N) y la fuente de los caracteres (F). Requiere 37µs.
DL = 1: 8 bits, DB7-DB0.
DL = 0: 4 bits, DB7-DB4.
N = 0: LCD de una línea.
N = 1: LCD de dos líneas.
F = 0: Caracteres de 5x7 puntos.
F = 1: Caracteres de 5x10 puntos.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 DL N F X X
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Function set: Instrucción en C.
• Bus de 8 bits, ambas líneas de LCD y caracteres de 5x10 puntos:
char fun_set=0x3C;//equivalent to set 00111100

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 0 0 0 1 DL N F X X
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Set CGRAM address: Establece la dirección de la CGRAM. Los datos


puestos en la CGRAM son enviados y recibidos después de ser
almacenados. Requiere 37µs.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 CG address
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de comando.

Set DDRAM address: Establece la dirección de la DDRAM. Los datos


puestos en la DDRAM son enviados y recibidos después de ser
almacenados. Requiere 37µs.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 DD address
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.

Set DDRAM address: Instrucción en C.


• Bus de 8 bits, ambas líneas de LCD y caracteres de 5x10 puntos:
Dirección 0: 1000 0000= 0x80
char first_line=(0x80+posLCD);//equivalent to set 10000000
Dirección 40: 1100 0000= 0xC0
char scnd_line=(0xC0+posLCD);//equivalent to set 11000000
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 DD address
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Modo de comando.
Read busy flag & address: Lee el busy flag (BF) que indica si una
operación de las descritas anteriormente está siendo ejecutada.
Además proporciona el valor de contador de direcciones de la CGRAM
y la DDRAM.

BF = 1: Módulo ocupado.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


0 1 BF CG or DD address
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de dato.

Write data to CGRAM o DDRAM: Con éste comando se escribe en la


memoria CGRAM/DDRAM los datos ASCII que se mostrarán en la
pantalla. Si es CG o DD depende de lo que se haya fijado en el
direccionamiento.
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 Código ASCII o byte del carácter gráfico.
LCD controlado con STM32F

LCD Hitachi 4470 (2X16)-Modo de dato.

Read data to CGRAM o DDRAM: Con éste comando se lee desde la


memoria CGRAM/DDRAM los datos ASCII presentes en la pantalla. Si es
CG o DD depende de lo que se haya fijado en el direccionamiento.

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0


1 1 Código ASCII o byte del carácter gráfico.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)-Abreviaturas.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)

Ejemplo: Mostrar en LCD una secuencia ascendente de 0 a 9 que se


incrementa con la pulsación de PC13. Se deben graficar los números en
la primera fila hasta completar la secuencia y luego hacerlo en la
segunda fila. Cuando la segunda fila esté completa, se debe repetir el
proceso.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)
Ejemplo: Creamos variables y comandos para configurar el LCD.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)
Ejemplo: Funciones para comandos y datos.
LCD controlado con STM32F
LCD Hitachi 4470 (2X16)

Ejemplo: Inicio de método main.


LCD controlado con STM32F
LCD Hitachi 4470 (2X16)

Ejemplo: Implementación del switch.


LCD controlado con STM32F
LCD Hitachi 4470 (2X16)

Ejemplo: Caso especial switch.


LCD controlado con STM32F

Ejercicio: Implementar ejemplo anterior con una interrupción temporal


de 1 segundo.

También podría gustarte