LCDs alfanuméricos

Anuncio
LCDs alfanuméricos
• La mayoría están basados en el controlador Hitachi HD44780
• Máximo 2 líneas de 40 caracteres
• Algunas pantallas están «plegadas» y tienen 4 líneas de 20
caracteres
• El controlador sólo tiene pines para 8 caracteres, pero permite la
expansión mediante drivers simples, cada uno de 8 caracteres.
• Caracteres de 5x8 pixels (fuente de 5x7 + línea para cursor). También
es posible usar una fuente de 5x10 pixels, aunque casi nadie lo hace
• 8 caracteres definibles por el usuario
• Juego de caracteres ASCII más Katakana y algún otro símbolo. Hay
versiones con caracteres ISO-Latin, aunque no son muy habituales
HD44780 diagrama de bloques
8
RS
cursor
IR
LCD interface
R/W
E
MPU interface
D0
D1
D2
D3
D4
D5
D6
D7
5
decoding
DDRAM
BF
80x8
CGROM
timing
1984x5
AC
CGRAM
7
64x5
IR: Instruction Register
AC: Address Counter
CGROM: Character Generator ROM
BF: Busy Flag
DDRAM: Data Display RAM
CGRAM: Character Generator RAM
EXT_DRV
SEG40
SEG1
RAM_data
columnas
COM16
COM1
filas
HD44780
Interfaz MPU
• Vdd (alimentación) 5V
• VE (ajuste de contraste)
0 a 5V
• RS (Register Select)
• L Comandos (escritura) o Estado (lectura)
• H Datos
• R/W (Read / Write)
• L Escritura
• H Lectura
• E (Enable)
• Pulso de lectura/escritura, activo en alto
• D[7:0] (bus de datos, bidireccional)
• Puede funcionar en un modo de 4 bits. En ese caso sólo se usan D[7:4]
HD44780 Temporización
READ cycle
WRITE cycle
RS
valid
R/W
R/W
t as
tw
>60ns
E
D[7:0]
valid
RS
>450ns
t ah
t as
>20ns
>60ns
tw
>450ns
E
valid
t dh
>195ns
>10ns
>20ns
valid
D[7:0]
t ds
t ah
t ddr
<360ns
t dhr
>5ns
HD44780 Lectura de estado
• RS=L, R/W=H devuelve por el bus un byte de estado
• D7: Busy Flag. Mientras este bit está en alto no se pueden enviar
comandos ni datos al controlador. Tan sólo se puede leer el byte de
estado
• D[6:0]: Address Counter. Valor actual del contador de direcciones.
• Algunos comandos tardan mucho tiempo en ejecutarse, así que si no
disponemos de la información del flag BF tendríamos que esperar un
tiempo suficientemente largo tras cada comando.
HD44780 Protocolo de comunicaciones
comando
dato
RS=0
RS=0
lectura
(estado)
lectura
(estado)
BF
0
1
BF
0
escritura
(comando)
RS=1
fin
escritura
(dato)
fin
1
HD44780 Comandos
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
D
1
I/D
C
x
S
B
Cycles
I/D
1: increment
0: decrement
No operation
0
S
1: Scroll ON
0: Scroll OFF
Clear Display
165
D
1: Display ON
0: Display OFF
C
1: Cursor ON
0: Cursor OFF
B
1: Blink ON
0: Blink OFF
Comand
Cursor Home
Entry Mode Set
Display Control
3
3
3
S/C
1: Shift Screen
0: Shift cursor
0
0
0
1
S/C
R/L
x
x
Shift
3
0
0
1
DL
N
F
x
x
Function Set
3
R/L
1: Shift Right
0: Shift Left
0
1
Set CGRAM address
3
DL
1: 8-bit data bus
0: 4-bit data bus
Set DDRAM address
3
N
1: 2-line display
0: 1-line display
F
1: 5x10 Font
0: 5x7 Font
1
CGRAM address
DDRAM address
Data write: 3 cycles
Clock cycle: 5.26 us max.
HD44780 Inicialización (bus de 8 bits)
Inicio
comando 001110xx
Function Set:
8-bit data bus
2-line display
5x7 Font
comando 00000110
Entry Mode Set:
Increment address
No scroll
comando 00001110
Display control:
Display On
Cursor On
Blink Off
comando 00000001
Clear Display
Espera 25 ms
RS=0
Escribe 0011xxxx
Function Set:
8-bit data bus
Espera 5 ms
Escribe 0011xxxx
Function Set:
8-bit data bus
fin
Espera 5 ms
Escribe 0011xxxx
Function Set:
8-bit data bus
BF fiable
BF aun no fiable
HD44780 Interfaz LCD (16x2 char)
COM1
HD44780
COM16
Seg[1:40]
SEG1
ext_drv
serial data
SEG40
Extension Driver
HD44100
• 16 salidas COM dan para 2 líneas de caracteres de 8 píxeles de alto
• Si los caracteres fuesen de 10 píxeles de alto sólo se podría tener una línea
• Las salidas COM son multinivel (hasta 5 tensiones posibles) mientras que las salidas
SEG sólo tienen dos niveles.
• El HD44780 sólo tiene salidas de segmento (columna) para 8 caracteres
• Hay drivers de extensión de 40 y 80 columnas que se conectan mediante una
interfaz serie.
• Máxima extensión: hasta 40 caracteres (200 columnas)
HD44780 Organización DDRAM
DDRAM. Pantalla de 16x2
0x00
0x0F 0x10
0x40
0x4F 0x50
Area visible
Area visible tras Shift screen
o scroll
• La segunda línea siempre comienza en la dirección 0x40 (64)
• El contador de direcciones, AC, se incrementa (o decrementa, depende de Entry
Mode Set) de forma automática tras cada escritura de datos
• Si AC=0x27 (39) una escritura de datos pasa AC al valor 0x40 (modo incremento)
• Si AC=0x67 una escritura de datos pasa AC al valor 0 (modo incremento)
• La parte visible de la DDRAM depende del tamaño físico de la pantalla, del modo
scroll y de los comandos Shift ejecutados.
(39)
0x27
0x67
HD44780 Pantallas «plegadas»
16x1:
0x00
0x07 0x40
primera linea
0x47
segunda linea
20x4:
0x00
0x13
0x40
0x53
0x14
0x27
0x54
0x67
primera
linea
segunda
linea
primera
linea
segunda
linea
• Estas pantallas son de dos líneas desde el punto de vista del controlador
• Los comandos «shift» y el scroll no funcionan bien en estas pantallas
HD44780 Generador de caracteres (5x8)
Bit
7
6
5
4
3
2
1
0
Addr.
+0
0x0E
+1
0x11
+2
0x11
+3
0x11
+4
0x1F
+5
0x11
+6
0x11
+7
0x00
Linea reservada
para el cursor
• La CGRAM y la CGROM están organizadas como matrices de puntos de 8 datos de 5 bits
por cada carácter (salvo los 32 últimos caracteres, de 10 datos de 5 bits)
• Al transferir datos a la CGRAM los 3 bits más significativos no se usan.
• Los primeros 16 códigos referencian la CGRAM (8 caracteres en total, repetidos 2
veces). El resto direcciona la CGROM
• Los 32 últimos códigos seleccionan caracteres de 5x10 pixeles, aunque sus 2 últimas
líneas sólo son visibles en pantallas de 10 líneas por carácter, que son muy poco
habituales (ver siguiente transparencia)
HD44780
Cjto. de Caracteres
Algunos caracteres de las dos
últimas columnas pueden ser
útiles (como ñ, por ejemplo)
Existe una versión del
HD44780 con el juego de
caracteres ISO-Latin, pero es
muy poco corriente.
Podemos definir hasta 8
caracteres
a
nuestra
conveniencia en la CGRAM
para paliar las deficiencias de
la CGROM o añadir símbolos
nuevos.
HD44780 acceso a la CGRAM
• Para introducir datos en la CGRAM debemos proceder como sigue:
1. Enviar Comando Set CGRAM address con la primera dirección del bloque
2. Enviar los datos. La dirección se incrementa con cada dato introducido en la CGRAM
3. Enviar Comando Set DDRAM address. A partir de este momento los datos escritos
irán a parar a la DDRAM en lugar de la CGRAM
• Nótese que la CGRAM es volátil y los caracteres definidos en ella se pierden al apagar el
LCD
• El contenido de la CGRAM se puede leer. No ocurre lo mismo con la CGROM
• En pantallas de 10 líneas por carácter la CGRAM sólo permite definir 4 caracteres. Cada
carácter ocupa 16 posiciones en este caso
HD44780 Bus de 4 bits
• En el modo de bus de 4 bits sólo se usan los 4 bits más significativos: D[7:4]
• Los comandos y datos, de 8 bits, se escriben mediante dos ciclos de escritura
consecutivos: los 4 bits MSB primero, y los 4 bits LSB después.
• El estado y los datos, de 8 bits, se leen mediante dos ciclos de lectura consecutivos: los
4 bits MSB primero, y los 4 bits LSB después. Esto afecta a la comprobación del flag
BUSY.
• La secuencia de inicialización es distinta. Ver siguientes transparencias.
El modo de 4 bits ahorra 4 pines en la interfaz a consta de duplicar el número de accesos al
LCD. Dado que el volumen de datos que habitualmente se transfiere al LCD es pequeño
este tipo de interfaz puede resultar interesante, especialmente en microcontroladores con
pocos pines.
HD44780 Protocolo (Bus de 4 bits)
comando
dato
RS=0
RS=0
lectura
(estado.MSB)
lectura
(estado.MSB)
lectura
(estado.LSB)
lectura
(estado.LSB)
BF
1
0
1
BF
0
escritura
(comando.MSB)
RS=1
escritura
(comando.LSB)
escritura
(dato.MSB)
fin
escritura
(dato.LSB)
fin
Inicio
HD44780 Inicialización (Bus de 4 bit)
Espera 25 ms
comando
0010
10xx
Function Set:
4-bit data bus
2-line display
5x7 Font
comando
0000
0110
Entry Mode Set:
Increment address
No scroll
comando
0000
1110
Display control:
Display On
Cursor On
Blink Off
comando
0000
0001
Clear Display
RS=0
Escribe 0011
Function Set:
8-bit data bus
Espera 5 ms
Escribe 0011
Function Set:
8-bit data bus
Espera 5 ms
Escribe 0011
Function Set:
8-bit data bus
fin
Espera 5 ms
Escribe 0010
Function Set:
4-bit data bus
BF fiable
BF aun no fiable
Descargar