Sie sind auf Seite 1von 5

25/11/2011

Interfaz PIO con LCD

Interfaz LCD HD44780 con el Z80


Interfaz con uso de Busy Flag

Configuracin de Terminales
1. 2. 3. 4. Ground VCC (+3.3 to +5V) Contrast adjustment (VO) Register Select (RS). RS=0: Command, RS=1: Data 5. Read/Write (R/W). R/W=0: Write, R/W=1: Read 6. Clock (Enable). Falling edge triggered 7. Bit 0 (Not used in 4-bit operation) 8. Bit 1 (Not used in 4-bit operation) 9. Bit 2 (Not used in 4-bit operation) 10.Bit 3 (Not used in 4-bit operation) 11.Bit 4 12.Bit 5 13.Bit 6 14.Bit 7 15.Backlight Anode (+) 16.Backlight Cathode (-)
3

Rutina de Inicializacin
Encender LCD Enviar cdigo de INICIO Repetir cdigo de INICIO Repetir cdigo de INICIO Inicializar LCD
Esperar 1.5 ms despus de que Vdd llega a 4.5V

0011XXXX

BF no puede probarse en este punto

Esperar por mas de 4.1 ms

El cdigo de inicio indica que la interfaz se establece a 8 bits

Esperar 100s

Apagar y prender el display

Limpiar pantalla

Establecer modo de Escritura 4

Comunicndose con LCD


LCD tiene un bus de datos de 8 bits (pin 714) por el cual se transfiere el cdigo ASCII a escribirse Se utilizan 3 seales de control:
Seleccin de Registro (RS) Escritura/Lectura (R/W) Habilitacin de Reloj (CE)
5

LCD HD44780
Rutina de inicializacin
Escribir el cdigo 0011XXXX Checar BF, cuando este en bajo enviar nuevamente el cdigo 0011XXXX Checar BF, cuando este en bajo enviar nuevamente el cdigo 0011XXXX Establecer el tipo de funcionalidad del LCD Apagar el cursor y la pantalla Limpiar la pantalla Establecer el modo de entrada Encender el cursor y pantalla
6

1. 2. 3.

RS=0: Instruccin, RS=1: Dato R/W=0: Escritura, R/W=1: Lectura CE = 1 habilita, CE = 0, deshabilitado
Seleccin de Registro Escritura Habilita intercambio Envi de datos Deshabilita Intercambio
RS = 0, setup RS = 1, dato

RW = 1

CE = 1

Envi de cdigo ASCII

CE = 0

25/11/2011

Function Set
RS 0 DL N F N 0 0 1 0 R/W 0 D7 0 D6 0 D5 1 D4 DL D3 N D2 F D1 X D0 X D RS 0 R/W 0 D7 0 = 1, Los datos son enviados en 8 bits = 0; Los datos son enviados en 4 bits, dos lecturas por cada carcter Establece el numero de lneas de la pantalla Establece el tamao del carcter. F 0 1 X 0 Numero de Lineas 1 1 2 0 0 Tamao del Carcter 57 puntos 510 puntos 57 puntos 1 1 Duty Factor 1/8 1/11 1/8 1 0 0 0 38H
7

Apagar Pantalla
D6 0 D5 0 D4 0 D3 1 D2 D D1 C D0 B = 1, Pantalla Encendida = 0; Pantalla Apagada, los datos permanecen en la RAM interna para desplegarse en cuanto la pantalla se encienda =1, despliega el cursor, = 0, apaga el cursor =1, el cursos destella, = 0, el cursor permanece encendido todo el tiempo RS 0 0 R/ W 0 0 D7 0 0 D6 0 0 D5 0 0 D4 0 0 D3 1 1 D2 0 1 D1 0 1 D0 0 1 pantalla y cursor apagados Pantalla y cursor encendido y cursor destellando
8

C B

SETUP:

LD A,0FH OUT (CTRLA),A LD A,0FH OUT (CTRLB),A LD A,00110000B

; Configurar el puerto A como SALIDA ; Escribe al registro de control A ; Configurar el puerto B como salida ; Escribe al registro de control B ; cdigo para establecer comunicacin con LCD

Comandos
RS 0 0 R/ W 0 0 D7 0 0 D6 0 0 D5 0 0 D4 0 0 D3 0 0 D2 0 0 D1 0 1 D0 1 X

Limpiar pantalla Regresar el cursor a la primer columna de la pantalla 1/D=1 incrementa la posicin del cursor hacia la derecha 1/D = 0 decrementa la posicin del cursor hacia la izquierda S = 1 mueve todo el display hacia la derecha si I/D = 1 o hacia la izquierda si I/D = 0.

LD B,A CALL OUTPUT CALL CMDOUT CALL CMDOUT LD A, 00111000B CALL CMDOUT LD A,00001000B CALL CMDOUT LD A,00000001B CALL CMDOUT LD A,00000110B CALL CMDOUT LD A,00001100B CALL CMDOUT
9

; enva el cdigo a LCD ; reenva el cdigo a LCD ; reenva el cdigo a LCD ; establece 8 bits, 2 lneas y 5X7 caracteres

1/D

; apaga pantalla y cursor

;limpia pantalla

; modo de entrada, corre e incrementa cursor

; enciende pantalla y cursor

RET

10

Checa la bandera (BF)


CHKDB7: LD A, 4FH OUT (CNTRLA),A LD A, 00000000B OUT (PORTB),A LD A, 00000100B OUT (PORTB),A READ: LD A, 00000101B OUT (PORTB),A IN A,(PORTA) RLCA LD A, 00000000B OUT (PORTB),A JP C, READ LD A, 0FH OUT (CNTRLA),A RET
11

Escritura de comando en la LCD


CMDOUT: LD B, A CALL CHKDB7 LD A, 00000000B OUT (PORTB),A LD A, 00000000B OUT (PORTB),A LD A, 00000001B OUT (PORTB),A LD A,B OUT (PORTA),A LD A, 00000000B OUT (PORTB),A RET
12

RS = 0 RS = 0, R/W = 1 RS = 0, R/W = 1, CE = 1

OUTPUT:

; RS = 0 ; R/W = 0 ; EN = 1

25/11/2011

Escritura de DATOS en la LCD


DTAOUT: LD B, A CALL CHKDB7 LD A, 00000010B OUT (PORTB),A LD A, 00000010B OUT (PORTB),A LD A, 00000011B OUT (PORTB),A LD A,B OUT (PORTA),A LD A, 00000000B OUT (PORTB),A RET
13

Programa para controlar LCD


PORTA PORTB EQU EQU EQU EQU EQU 80H 81H 82H 83H 1EFEH CTRLA CTRLB STACK MESSAGE

; RS = 1 ; R/W = 0 ; EN = 1

.DEFB 48H,45H,4CH,4CH,4FH,00 .ORG 1850H

START:

LD SP, STACK CALL SETUP LD A,87H CALL CMDOUT LD HL, MESSAGE


14

Programa para controlar LCD


NEXT: LD A,(HL) CP 00 JP Z,END CALL DTAOUT INC HL JP NEXT END HALT

Microprocesadores 2011

INTERFAZ CON USO DE RETARDOS

15

Subrutina Retardo
DELAY:
; Esta subrutina realiza un retardo de 10 ms. El retardo es repetido el ; numero de veces indicado en B. ; Entrada: Numero de veces a repetir el retardo especificado en B ; Salida: Ninguna ; Registros Modificados: B

PUSH DE PUSH AF WAIT: LOOP: LD DEC LD OR JP DEC JR POP POP RET DE, COUNT DE A,D E NZ,LOOP B NZ,WAIT AF DE

11 ; guarda el contenido de DE y AF 11 10 ; Carga DE =01F2 para obtener el retardo 6 9 4 4 7 10 10


18

;de 10ms ; Coloca D en A para checar banderas ; Prende bandera del cero si D=E=0 ; Decrementa B ; Si el retardo es suficiente termina

10 ; Repite hasta si DE >0

10 ; Restablece el valor de DE y AF

25/11/2011

Retardo
Total de estados-t LT = 40 TC = 0.5s Ttotal = 10ms L0 = 68
3

SETUP:

LD A,0FH OUT (CTRLA),A LD A,0FH OUT (CTRLB),A LD B,10

; Configurar el puerto A como SALIDA ; Escribe al registro de control A ; Configurar el puerto B como salida ; Escribe al registro de control B ; Espera por 0.1 segundos ; Retardo de 10 ms ; cdigo para establecer comunicacin con LCD ; enva el cdigo a LCD ; espera por 10ms ; reenva el cdigo a LCD ;espera por 10ms ; reenva el cdigo a LCD ;espera por 10ms
20

LOOP:

CALL DELAY DJNZ LOOP LD A,00110000B CALL CMDOUT CALL DELAY CALL CMDOUT CALL DELAY CALL CMDOUT CALL DELAY

T L 10 10 68 N10 total 0 498.3 1F 2 TC LT LT 0.5 106 40 40

LD A, 00111000B CALL CMDOUT CALL DELAY LD A,00001000B CALL CMDOUT CALL DELAY LD A,00000001B CALL CMDOUT CALL DELAY LD A,00000110B CALL CMDOUT CALL DELAY LD A,00001100B CALL CMDOUT CALL DELAY RET

; establece 8 bits, 2 lneas y 5X7 caracteres ;espera por 10ms ; apaga pantalla y cursor ;espera por 10ms ;limpia pantalla ;espera por 10ms ; modo de entrada, corre e incrementa cursor ;espera por 10ms ; enciende pantalla y cursor ;espera por 10ms

Escritura de comando en la LCD


CMDOUT: LD B, A LD A, 00000000B OUT (PORTB),A LD A, 00000000B OUT (PORTB),A LD A, 00000001B OUT (PORTB),A LD A,B OUT (PORTA),A LD A, 00000000B OUT (PORTB),A RET
21 22

; RS = 0 comando ; R/W = 0 escribir ; EN = 1 habilitar LCD ; Enviar comando a escribir ; Deshabilitar LCD

Escritura de DATOS en la LCD


DTAOUT: LD B, A LD A, 00000010B OUT (PORTB),A LD A, 00000010B OUT (PORTB),A LD A, 00000011B OUT (PORTB),A LD A,B OUT (PORTA),A LD A, 00000000B OUT (PORTB),A RET
23

Programa para controlar LCD


PORTA PORTB EQU EQU EQU EQU EQU 80H 81H 82H 83H 1EFEH CTRLA CTRLB STACK MESSAGE

; RS = 1 Datos ; R/W = 0 Escribir ; EN = 1 Habilitar LCD

.DEFB 48H,45H,4CH,4CH,4FH,00 .ORG 1850H

; Enviar dato ; Deshabilitar LCD

START:

LD SP, STACK CALL SETUP LD A,87H CALL CMDOUT CALL DELAY LD HL, MESSAGE

; Definir pila ; Inicializar LCD ; Iniciar escritura en la posicin 8

24

25/11/2011

Programa para controlar LCD


NEXT: LD A,(HL) CP 00 JP Z,END CALL DTAOUT CALL DELAY INC HL JP NEXT END HALT ; Enviar carcter a la LCD ; Esperar 10 ms ; Apuntar al siguiente carcter ; Tomar el siguiente carcter ; Verificar si es el fin de la cadena

25

Das könnte Ihnen auch gefallen