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