Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um...

31
Interface com Displays Prof. Adilson Gonzaga

Transcript of Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um...

Page 1: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Interface com Displays

Prof. Adilson Gonzaga

Page 2: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Interface com Displays de 7 Segmentos

2

Page 3: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

a

b

c

d

e

f

g

Um Display de 7 segmentos é formado

por 7 LED’s (a,b,c,d,e,f,g) que são

previamente encapsulados e

conectados de duas maneiras:

a

Catodo Comum: Anodo Comum:a

bb

c

d

e

f

g

b

c

d

e

f

g

No Catodo Comum acende-se cada

LED conectando-se o Comum ao GND

e aplicando-se valor lógico 1 em cada

segmento que se quer acender.

No Anodo Comum acende-se cada

LED conectando-se o Comum ao VCC

e aplicando-se valor lógico 0 em cada

segmento que se quer acender.3

Page 4: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Para se interfacear um Display de 7 Segmentos com um

Microcontrolador, deve-se determinar quais bits serão usados para

acionar os LED’s dos segmentos.

Usando Bits de Porta

Exemplo:

Porta P1

P1.1P1.2P1.3P1.4P1.5P1.6 P1.0P1.7

Porta P1

4

Page 5: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Tabela de codificação de 7 segmentos

para um Display Catodo Comum

Byte a ser enviado para a porta do

Microcontrolador para geração dos

dígitos:

O Bit Mais Significativo é zero para

Displays sem Ponto Decimal, caso

contrário este bit será usado para ativar

o ponto decimal.5

Page 6: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Exemplo de Interface direta de 1 Display de 7 segmentos, catodo

comum, com o 8051

Pode-se também utilizar um Pode-se também utilizar um

Decodificador integrado para 7

segmentos e interfacear o

decodificador com o

Microcontrolador

6

Page 7: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Subrotina de acionamento do Display de 7

segmentos (O dígito a ser mostrado no

Display entra pelo Acumulador – de 00 a

0F)

Seria esta uma solução razoável ???

7

Page 8: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Uma boa aplicação para se utilizar Acesso a TABELA !!!

Subrotina de acionamento do Display de 7 segmentos (O dígito a ser

mostrado no Display entra pelo Acumulador – de 00 a 0F)

Utilizando como ponteiro o DPTR

8

Page 9: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Utilizando como ponteiro o PC

Subrotina de acionamento do Display de 7 segmentos (O dígito a ser

mostrado no Display entra pelo Acumulador – de 00 a 0F)

Uma boa aplicação para se utilizar Acesso a TABELA !!!

9

Page 10: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Usando Mapeamento de Memória

Display Catodo Comum

dp g f e d c b adp g f e d c b a

D7 D6 D5 D4 D3 D2 D1 D0

Mapeamento:

De 8000h a FFFFh

(escrita em qualquer endereço

que tenha A15 = 1

10

Page 11: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

dp g f e d c b a

D7 D6 D5 D4 D3 D2 D1 D0

Escrever no Display de 7

segmentos:

MOV A, #Byte

MOV DPTR,#8000h

MOVX @DPTR,A

11

D0

D1

D2

D3

D4

D5

D6

D7

Page 12: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

dp g f e d c b a

D7 D6 D5 D4 D3 D2 D1 D0

Apagar todos os segmentos

MOV A,#00

MOV DPTR,#8000H

MOVX @DPTR,A

Exemplos:

dp g f e d c b a

D7 D6 D5 D4 D3 D2 D1 D0

0 0 0 0 0 0 0 0

a

b

c

d

e

f

g

MOVX @DPTR,A

Acender o número 0

MOV A,#3Fh

MOV DPTR,#8000H

MOVX @DPTR,A

dp g f e d c b a

D7 D6 D5 D4 D3 D2 D1 D0

0 0 1 1 1 1 1 1

12

Page 13: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Como interfacear ao 8051 um conjunto de 8 Displays de 7

segmentos utilizando interface direta com os Bits de Porta?

Seriam necessárias 8 Portas de I/O ?

13

Page 14: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Multiplexação de Displays de 7 Segmentos

Com apenas duas Portas do 8051 (P1 e P2) é possível Multiplexar no tempo o

comando de todos os Displays de 7 Segmentos. 14

Page 15: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

A Porta P1 mantém o valor do código Hexadecimal correspondente ao dígito a ser

aceso e a Porta P2 indica em qual dos 8 Displays será aceso o dígito equivalente.

• Portanto, deve ser realizada uma varredura do dígito menos significativo para o

dígito mais significativo,controlada pela Porta P2, alterando-se o valor de cada

dígito no tempo, através da Porta P1.

A sensação para o olho humano é de todos os

Displays acesos simultaneamente.

15

Page 16: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Os códigos hexadecimais correspondentes a cada dígito a ser aceso

devem ser armazenados nas posições 30h a 37h (BUFFER).

Sub-rotina de Multiplexação de 8 Displays de 7 segmentos.

Exemplo: Se o número a

aparecer nos Displays for: As posições de memória

(BUFFER) deverão conter:

8750924616

Page 17: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Exercício (Entregar pelo site até a próxima aula)

1) Mapear em memória 8 Displays Multiplexados de 7

segmentos Anodo Comum (escrita em endereços superiores

a 8000h) e uma RAM Externa de 0000 a 7FFFh.

2) Escrever um programa em Assembly do 8051 que envie

para os Displays o valor numérico em BCD do conteúdo para os Displays o valor numérico em BCD do conteúdo

das posições de memória externa:

(1000)h � 2 displays Menos Significativos

(2000)h � 2 displays seguintes

(3000)h � próximos 2 displays

(4000)h � 2 displays Mais Significativos

Os conteúdos das posições de Memória são valores em

hexadecimal de 00 a 63h 17

Page 18: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Interface com LCD – Liquid Crystal Display

18

Page 19: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

• Alguns dos LCDs mais utilizados são os displays de 16x2 e 20x2.

• Isto significa 16 e 20 caracteres em cada uma das duas linhas

do display respectivamente.

• O HD44780 é o controlador padrão mais popular utilizado

pelos fabricantes de LCD.

• Permite fazer uma comunicação de forma simples com a

maioria dos LCDs.19

Page 20: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

• O padrão da indústria para módulos de LCDs baseados no controlador

HD44780 permite utilizar Displays com até 80 caracteres.

• Para isso, o circuito do controlador possui um conector de 14 pinos com

as funções mostradas na tabela:

• O HD44780 requer 3 linhas de

controle e também 4 ou 8 linhas

de I/O para o bus de dados. O

usuário deve selecionar operação

com 4 ou 8 bits no bus de dados.

• Se um Módulo de LCD tiver

mais que 80 caracteres, o

circuito do controlador terá um

conector de 16 pinos e a

tabela com a nomenclatura

dos pinos difere da mostrada

ao lado.

com 4 ou 8 bits no bus de dados.

20

Page 21: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Operação do controlador de LCD HD44780 no modo 8 Bits:

Ciclo de escrita de Instrução

RS = 0 � Instrução

RS = 1 � Dado

RW = 0 � Escrita

E = 0-1-0 � Habilita a escrita 21

Page 22: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Conjunto de

Instruções para

programação do

controlador de LCD

HD44780

DDRAM � RAM

de Dados do

Display

CGRAM � RAM

do Gerador de

Caracteres do

Display

22

Page 23: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

DDRAM � RAM de Dados do Display

Com N=0 � Display de 1 linha, os endereços dos caracteres são:

Com N=1 � Display de 2 linhas, os endereços dos caracteres são:

23

Page 24: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Exemplo: Para um LCD de 2 linhas no formato 2x16, os endereços da

DDRAM, que são visíveis no Display, são os anotados em azul na

figura:

Logo, para se escrever um caractere na primeira posição da linha 2 deve-se

escrever a Instrução 80h + 40h = C0h, onde:

80h � Estabelece o endereço da DDRAM e,

40h � Estabelece o endereço da primeira posição na linha 2

1 1 0 0 0 0 0 0 24

Page 25: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Conjunto de Carcteres ASCII aceitos e gerados pelo controlador de LCD

HD44780

Fonte de 5x7 pontos

25

Page 26: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Exemplo de Interface de um LCD (2x16) baseado no

controlador HD44780 com o Microcontrolador 8051

26

Page 27: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Exemplo de um Programa

para escrever HELLO

WORLD no LCD

A palavra HELLO deverá

ser escrita na primeira

posição da primeira linha

do Display e a palavra

WORLD deverá ser escrita WORLD deverá ser escrita

na posição 10 da segunda

linha do Display

27

Page 28: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

0 0 1 1 1 0 0 0 38h0 0 1 1 1 0 0 0 38h

0 0 0 0 1 1 1 0 0Eh

0 0 0 0 0 1 1 0 06h

28

Page 29: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

0 0 0 0 0 0 0 1 01h

A = 4Ah Décima posição da segunda linha

1 0 0 0 0 0 0 0

0 1 0 0 1 0 1 0

1 1 0 0 1 0 1 0

80h

4Ah

CAh

29

Page 30: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

30

Page 31: Interface com Displays - IRIS SERVERiris.sel.eesc.usp.br/sel614/Aula9.pdf · Para se interfacear um Display de 7 Segmentos com um Microcontrolador, deve-se determinar quais bits serão

Como os tempos de respostas do LCD não ultrapassam 1,64 ms,

uma outra forma de fazer a Sub-rotina de espera (WAIT_LCD) é

utilizar uma rotina de Atraso de aproximadamente 2 ms.

1,64 ms

31