0% encontró este documento útil (0 votos)
58 vistas26 páginas

Interfaz LCD HD44780 y Z80

Este documento describe diferentes formas de interconectar un LCD HD44780 con un microcontrolador Z80, incluyendo el uso de puertos PIO, puertos 8255 y rutinas de retardo. Explica la configuración de los pines del LCD, la rutina de inicialización, los comandos básicos y la forma de escribir y leer datos. También presenta el código assembly para implementar la interfaz LCD usando puertos y subrutinas de retardo para esperar entre las operaciones.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas26 páginas

Interfaz LCD HD44780 y Z80

Este documento describe diferentes formas de interconectar un LCD HD44780 con un microcontrolador Z80, incluyendo el uso de puertos PIO, puertos 8255 y rutinas de retardo. Explica la configuración de los pines del LCD, la rutina de inicialización, los comandos básicos y la forma de escribir y leer datos. También presenta el código assembly para implementar la interfaz LCD usando puertos y subrutinas de retardo para esperar entre las operaciones.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Interfaz LCD HD44780 con el Z80

Interfaz con uso de Busy Flag

Interfaz PIO con LCD

Interfaz 8255 conLCD

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)
[Link] 3 (Not used in 4-bit operation)
[Link] 4
[Link] 5
[Link] 6
[Link] 7
[Link] Anode (+)
[Link] Cathode (-)
4

Rutina de Inicializacin
Encender
LCD

Esperar 1.5 ms
despus de que
Vdd llega a 4.5V

Enviar
cdigo de
INICIO

0011XXXX

Repetir
cdigo de
INICIO

Esperar por mas


de 4.1 ms

Repetir
cdigo de
INICIO

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

Esperar 100s

Inicializar
LCD

Apagar y prender
el display

Limpiar pantalla

BF no puede
probarse en este
punto

Establecer modo
de Escritura
5

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:

1.
2.
3.

Seleccin de Registro
(RS)
Escritura/Lectura (R/W)
Habilitacin de Reloj (CE)
6

RS=0: Instruccin, RS=1: Dato


R/W=0: Escritura, R/W=1: Lectura
CE = 1 habilita, CE = 0, deshabilitado
Seleccin
de Registro

RS = 0,
setup

Escritura

RW = 1

Habilita
intercambio

CE = 1

Envi de
datos

Envi de
cdigo ASCII

Deshabilita
Intercambio

CE = 0

RS = 1, dato

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
7

Function Set
RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

DL

DL

= 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.

Numero de
Lineas

Tamao del
Carcter

Duty
Factor

57 puntos

1/8

510 puntos

1/11

57 puntos

1/8

38H
8

Apagar Pantalla
RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

= 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

R/
W

D7

D6

D5

D4

D3

D2

D1

D0

pantalla y cursor
apagados

Pantalla y cursor
encendido y
cursor destellando

Comandos
RS

R/
W

D7

D6

D5

D4

D3

D2

D1

D0

Limpiar pantalla

Regresar el cursor a la primer


columna de la pantalla

1/D

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.

10

SETUP:

LD A,0FH

; Configurar el puerto A como SALIDA

OUT (CTRLA),A

; Escribe al registro de control A

LD A,0FH

; Configurar el puerto B como salida

OUT (CTRLB),A

; Escribe al registro de control B

LD A,00110000B

; cdigo para establecer comunicacin con LCD

LD B,A
CALL OUTPUT

; enva el cdigo a LCD

CALL CMDOUT

; reenva el cdigo a LCD

CALL CMDOUT

; reenva el cdigo a LCD

LD A, 00111000B

; establece 8 bits, 2 lneas y 5X7 caracteres

CALL CMDOUT
LD A,00001000B

; apaga pantalla y cursor

CALL CMDOUT
LD A,00000001B

;limpia pantalla

CALL CMDOUT
LD A,00000110B

; modo de entrada, corre e incrementa cursor

CALL CMDOUT
LD A,00001100B

; enciende pantalla y cursor

CALL CMDOUT
RET

11

Checa la bandera (BF)


CHKDB7:

LD A, 4FH
OUT (CNTRLA),A
LD A, 00000000B

RS = 0

OUT (PORTB),A
LD A, 00000100B

RS = 0, R/W = 1

OUT (PORTB),A
READ:

LD A, 00000101B

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

OUT (PORTB),A
IN A,(PORTA)

RLCA
LD A, 00000000B
OUT (PORTB),A
JP C, READ

LD A, 0FH
OUT (CNTRLA),A
RET

12

Escritura de comando en la LCD


CMDOUT:

LD B, A
CALL CHKDB7

OUTPUT:

LD A, 00000000B

; RS = 0

OUT (PORTB),A
LD A, 00000000B

; R/W = 0

OUT (PORTB),A
LD A, 00000001B

; EN = 1

OUT (PORTB),A
LD A,B
OUT (PORTA),A
LD A, 00000000B
OUT (PORTB),A
RET
13

Escritura de DATOS en la LCD


DTAOUT:

LD B, A
CALL CHKDB7
LD A, 00000010B

; RS = 1

OUT (PORTB),A
LD A, 00000010B

; R/W = 0

OUT (PORTB),A
LD A, 00000011B

; EN = 1

OUT (PORTB),A
LD A,B
OUT (PORTA),A
LD A, 00000000B
OUT (PORTB),A
RET
14

Programa para controlar LCD

MESSAGE

PORTA

EQU

80H

PORTB

EQU

81H

CTRLA

EQU

82H

CTRLB

EQU

83H

STACK

EQU

1EFEH

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

START:

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

Programa para controlar LCD


NEXT:

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

END

HALT

16

Microprocesadores 2011

INTERFAZ CON USO DE RETARDOS

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

11 ; guarda el contenido de DE y AF

PUSH AF

11

WAIT:

LD

DE, COUNT

10 ; Carga DE =01F2 para obtener el retardo

LOOP:

DEC

DE

;de 10ms

LD

A,D

; Coloca D en A para checar banderas

OR

; Prende bandera del cero si D=E=0

JP

NZ,LOOP

10 ; Repite hasta si DE >0

DEC

; Decrementa B

JR

NZ,WAIT

; Si el retardo es suficiente termina

POP

AF

10 ; Restablece el valor de DE y AF

POP

DE

10

RET

10

19

Retardo

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

Ttotal
L0
10 10
68
N10

498.3 1F 2
6
TC LT LT 0.5 10 40 40

SETUP:

LOOP:

LD A,0FH

; Configurar el puerto A como SALIDA

OUT (CTRLA),A

; Escribe al registro de control A

LD A,0FH

; Configurar el puerto B como salida

OUT (CTRLB),A

; Escribe al registro de control B

LD B,10

; Espera por 0.1 segundos

CALL DELAY

; Retardo de 10 ms

DJNZ LOOP
LD A,00110000B

; cdigo para establecer comunicacin con LCD

CALL CMDOUT

; enva el cdigo a LCD

CALL DELAY

; espera por 10ms

CALL CMDOUT

; reenva el cdigo a LCD

CALL DELAY

;espera por 10ms

CALL CMDOUT

; reenva el cdigo a LCD

CALL DELAY

;espera por 10ms


21

LD A, 00111000B

; establece 8 bits, 2 lneas y 5X7 caracteres

CALL CMDOUT
CALL DELAY

;espera por 10ms

LD A,00001000B

; apaga pantalla y cursor

CALL CMDOUT

CALL DELAY

;espera por 10ms

LD A,00000001B

;limpia pantalla

CALL CMDOUT
CALL DELAY

;espera por 10ms

LD A,00000110B

; modo de entrada, corre e incrementa cursor

CALL CMDOUT
CALL DELAY

;espera por 10ms

LD A,00001100B

; enciende pantalla y cursor

CALL CMDOUT
CALL DELAY

;espera por 10ms

RET
22

Escritura de comando en la LCD


CMDOUT:

LD B, A
LD A, 00000000B

; RS = 0 comando

OUT (PORTB),A
LD A, 00000000B

; R/W = 0 escribir

OUT (PORTB),A
LD A, 00000001B

; EN = 1 habilitar LCD

OUT (PORTB),A
LD A,B

; Enviar comando a escribir

OUT (PORTA),A
LD A, 00000000B

; Deshabilitar LCD

OUT (PORTB),A
RET
23

Escritura de DATOS en la LCD


DTAOUT:

LD B, A

LD A, 00000010B

; RS = 1 Datos

OUT (PORTB),A
LD A, 00000010B

; R/W = 0 Escribir

OUT (PORTB),A
LD A, 00000011B

; EN = 1 Habilitar LCD

OUT (PORTB),A
LD A,B

; Enviar dato

OUT (PORTA),A
LD A, 00000000B

; Deshabilitar LCD

OUT (PORTB),A
RET
24

Programa para controlar LCD

MESSAGE

PORTA

EQU

80H

PORTB

EQU

81H

CTRLA

EQU

82H

CTRLB

EQU

83H

STACK

EQU

1EFEH

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

START:

LD SP, STACK

; Definir pila

CALL SETUP

; Inicializar LCD

LD A,87H

; Iniciar escritura en la posicin 8

CALL CMDOUT
CALL DELAY

LD HL, MESSAGE
25

Programa para controlar LCD


NEXT:

LD A,(HL)

; Tomar el siguiente carcter

CP 00

; Verificar si es el fin de la cadena

JP Z,END
CALL DTAOUT

; Enviar carcter a la LCD

CALL DELAY

; Esperar 10 ms

INC HL

; Apuntar al siguiente carcter

JP NEXT
END

HALT

26

También podría gustarte