Você está na página 1de 54

FAMLIA 51 Interface com o exterior

72

MP06-07 asg, jca, jpsousa

Interface com o exterior


Entradas
RST permite inicializar o hardware interno /EA permite configurar o acesso MP:
Se /EA=0, MPE activa, MPI inactiva Se /EA=1, MPE e MPI activas

Sadas
/PSEN controla a leitura da MPE /RD controla a leitura da MDE /WR controla a escrita na MDE ALE controla a desmultiplexagem de DBUS

Outros
XTAL1, XTAL2 para ligao do cristal Vcc, Gnd para ligao da alimentao

73

MP06-07 asg, jca, jpsousa

Circuito de reset do C
A entrada de reset da famlia 51 activa ao nvel lgico 1 Ao ligarmos VCC foramos o estado de reset (a tenso aos terminais do condensador C no pode variar bruscamente). R1 e C garantem um tempo de reset suficiente R1 e R2 devem permitir a aplicao de uma tenso prxima de VCC quando se fecha SW (O dodo permite a descarga rpida de C)

74

MP06-07 asg, jca, jpsousa

Gerao do sinal de relgio


XTAL2 a sada de um amplificador interno e XTAL1 a entrada. Um cristal colocado entre XTAL1 e XTAL2 permite a gerao interna do sinal de relgio (frequncia igual do cristal) XTAL1 pode ser alimentado por um gerador de sinal de relgio externo ( nesse caso XTAL2 deve ser deixado no ar ). Os condensadores (dezenas de pF) melhoram a estabilidade e facilitam o arranque do oscilador.

75

MP06-07 asg, jca, jpsousa

Sistema mnimo
Nmero de componentes reduzido
Microcontrolador (uC)
MP e MD internas Perifricos internos
P1 VCC 5V

P0

Alguns componentes discretos (circ. do reset e do oscilador e /EA=1)

Circuito reset

5V

MP int.

RST

C
/EA ALE /PSEN

5V

Baixo custo
Componentes Montagem Testes
Circuito relgio

P3

P2 XTAL2 XTAL1 GND

Elevada fiabilidade
Poucas ligaes externas Poucos componentes

76

MP06-07 asg, jca, jpsousa

FAMLIA 51 Interface E/S Paralela

77

MP06-07 asg, jca, jpsousa

Portas de E/S na famlia 51


O C 8051 disponibiliza 4 portas de E/S de 8 bits cada, num total de 32 bits programveis individualmente como entrada ou sada. Os acessos a estas portas so feitos atravs dos SFRs P0(80h), P1(90h), P2(A0h) e P3(B0h), todos acessveis ao bit.
Vcc

128 RAM 128 RAM

CPU INT

OSC

RST

TIMER 1 TIMER 0

Barramento interno

4k ROM

Bus CTR

I/O PORTS

UART

P0 P1 P2 P3

78

MP06-07 asg, jca, jpsousa

Portas de E/S na famlia 51 (cont.)


Funes alternativas
P0 e P2: barramentos de dados e endereos do C P3: acesso aos perifricos internos

Pseudo-bidireccionais
Leitura: JNB P2.5,START Escrita: MOV P1,A Modificao: XRL P1,0Fh Instrues de leitura acedem ao pino Instrues de modificao acedem ao SFR

Aps um RESET funcionam como entrada


79
MP06-07 asg, jca, jpsousa

Estrutura interna da porta P1


a porta mais simples, funcionando apenas como entrada/sada de dados. Cada bit desta porta de E/S do 8051 suportado por uma estrutura interna constitudo por um FF D, um andar de sada e buffers de entrada. Entrada de Dados: para programar o bit da porta como entrada de dados necessrio escrever um 1 no FFD de maneira a que o FET seja colocado no estado OFF antes de se ler o pino ( se o FET estivesse ON a leitura seria sempre 0). Sada de Dados: a escrita de um 0 no FFD coloca em conduo o FET do andar de sada, ligando massa o pino exterior. A escrita de um 1 na mesma latch coloca o FET em estado OFF colocando o pino da porta ligado a VDD atravs do pull-up interno. A porta capaz de absorver alguns mA mas fornece apenas alguns A.
L registo DBUS (interno ) Escreve

Vcc

Clk /Q

PINO

L pino

80

MP06-07 asg, jca, jpsousa

Estrutura interna da porta P0


Na estrutura interna de cada bit desta porta surge um multiplexador para permitir comutar a funcionalidade da porta entre entrada/sada paralelo (Control=0) e barramento multiplexado de dados e endereos menos significativos (Control=1). Se Control=0 o FET superior est sempre OFF. FUNCIONAMENTO COMO PORTA E/S PARALELO Entrada de Dados: antes de ler o pino deve ser escrito um 1 no FFD da porta. Desta maneira o FET inferior do andar de sada colocado no estado OFF e como o FET superior est sempre OFF a porta fica em alta impedncia, permitindo assim a operao de leitura do pino. Sada de Dados: a sada de dados feita escrevendo os valores 0 ou 1 no FFD da porta P0. O andar de sada em dreno aberto dado que o FET superior para E/S (Control=0) est sempre OFF. Isto obriga utilizao de resistncias de pull-up no exterior para poder ser garantido o nvel lgico 1 no pino quando o FET inferior est OFF.

81

MP06-07 asg, jca, jpsousa

Estrutura interna da porta P2


Esta porta apresenta um andar de sada semelhante ao existente na porta P1. Sendo uma das suas funes colocar no exterior os 8 bits mais significativos do endereo nas operaes de acesso memria externa, possui tambm um multiplexador como acontecia com a porta P0. Os processos ligados s operaes de E/S de dados so iguais aos descritos para a porta P1.

82

MP06-07 asg, jca, jpsousa

Estrutura interna da porta P3


Cada bit desta porta apresenta um andar de sada semelhante ao existente nas portas P1 e P2. A diferena tem a ver com a possibilidade de os bits da porta P3 poderem apresentar funes alternativas que so lidas/escritas como se representa na figura. Notar que a sada no pino s controlada pela sada alternativa se a sada do FFD est em 1 e que a entrada alternativa pode sempre ser lida. Na porta podem coexistir bits de E/S e bits com funes especiais. Nas operaes de E/S, o funcionamento o mesmo que foi visto para as portas P1 e P2.

83

MP06-07 asg, jca, jpsousa

Funes alternativas na porta P3


Pino
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

I/O
Entrada Sada Entrada Entrada Entrada Entrada Sada Sada

Funo alternativa
RxD (linha de recepo de dados da porta srie) TxD (linha de transmisso de dados da porta srie) INT0 (entrada de interrupo externa 0) INT1 (entrada de interrupo externa 1) T0 (entrada de relgio para o TIMER 0) T1 (entrada de relgio para o TIMER 1) WR (sinal de escrita na memria externa de dados) RD (sinal de leitura na memria externa de dados)

84

MP06-07 asg, jca, jpsousa

Ex de interface com exterior - interruptor


O bit da porta deve estar programado como entrada O nvel activo deve ser sempre o nvel baixo. Porqu? As imperfeies das superfcies de contacto dos interruptores mecnicos originam ressaltos (bouncing) que resultam em mltiplas transies de estado... debouncing por hardware ou por software VCC
VCC P1 P1 51 51

Bouncing do interruptor

Debouncing por hardware MP06-07 asg, jca, jpsousa

85

Debouncing por software


O fluxograma indica a forma de fazer o debouncing por software na deteco do fecho do interruptor, introduzindo um atraso superior ao tempo de bouncing.
Sim INICIO

cdigo da subrotina que s retorna quando o interruptor ligado a P1.0 estiver fechado
int_fech TECLA segment equ code P1.0 ; nome simblico P1.0

INT. ABERTO? No SUBROTINA ATRASO

rseg int_fech salto: s0: jb TECLA, salto mov r0,#255 djnz r0,s0 ; d atraso jb TECLA, salto ret INT. FECHADO? Sim FIM No

86

MP06-07 asg, jca, jpsousa

Ex de interface com exterior LEDs


O bit da porta vai funcionar como sada. O nvel activo deve ser o nvel baixo. Porqu? Se o Led necessitar de aproximadamente 10 mA para uma boa luminosidade e tiver uma tenso de 1,4V R = (Vcc - VLED) / 10mA = = ( 5 1,4 ) / 10 mA = 360 Corrente mxima das portas no nvel lgico baixo
10mA por pino 15mA por porta (26mA na porta P0) 71mA no total de todas as portas
VCC P1

Px
51

No se poderiam ligar desta forma os 4 LEDs na mesma porta Px, porque se ultrapassaria a capacidade em corrente da porta.

87

MP06-07 asg, jca, jpsousa

Como ultrapassar as limitaes de corrente ?


Introduzindo amplificadores de corrente.
TRANSISTORES
O ganho em corrente do transistor garante que a corrente na base no ultrapassa os limites de corrente da porta.
Nivel baixo ( ver atrs) Nivel alto = 60A por pino
VCC VCC

P1 51
P-N-P (activa em 0)

P1 51
N-P-N (activa em 1)

CIRCUITOS INTEGRADOS
Existem no mercado circuitos integrados que podem ser utilizados como LED drivers:
7407 - 4 por circuito 74244 8 por circuito ULN2803 8 por circuito

VCC
R

P1 51
LED driver (saida do driver activa em 0)

88

MP06-07 asg, jca, jpsousa

Exemplo: LEDs e interruptores


Hardware
5 LEDS (P1.0 a P1.4) 4 Interruptores (P2.0 a P2.3) LEDS activos a zero
P1 VCC

51

Problema
Visualizar nos LEDs o resultado da operao N+3, onde N representa o nmero definido pelos interruptores
P2

89

MP06-07 asg, jca, jpsousa

LEDs e interruptores...
Hardware
5 LEDS (P1.0 a P1.4) 4 Interruptores (P2.0 a P2.3) LEDS activos a zero
P1 VCC

51

Soluo
Repetir para sempre Ler os interruptores Limpar os 4 bits mais significativos Somar 3 Negar o resultado (porqu) Visualizar
P2

90

MP06-07 asg, jca, jpsousa

LEDs e interruptores...
LEDS TECS equ equ cseg mov mov anl add cpl mov sjmp end 91
MP06-07 asg, jca, jpsousa

P1 P2 at 0000h TECS,#0ffh a,TECS a,#0fh a,#3 a LEDS,a loop

; Nome simblico para P1 ; Nome simblico para P2 ; Porqu? ; Ler o nmero (teclas) ; Limpar os 4 MSBits ; Adicionar 3 ; Porqu? ; Visualizar o resultado ; Repetir

loop:

Contador crescente e decrescente...


Hardware
Quatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero fx = 12MHz
P1 VCC

51

Problema
Visualizar nos LEDs uma contagem cclica entre 0 e 15 cujo sentido depende do estado de P1.0 P1.0 = 1 crescente P1.0 = 0 decrescente 92
P2

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


Hardware
Quatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero fx = 12MHz
VCC

P1

Soluo
inicializar contador repetir (para sempre) visualizar durante 0.5s se tecla premida decrementar contador seno incrementar contador garantir que fica entre 0 e 15

51

P2

93

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


LEDS TECLA equ equ P1 P1.0 ; Nome simblico para P1 ; Nome simblico para P1.0

;--------;Variveis ;---------------------------------------------------dseg at 30h conta: ds 1 ; Contador

94

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


;-----------------;Programa principal ;---------------------------------------------------cseg at 0000h mov conta,#0 ; Inicializar loop: call mostra ; Visualizar resultado call espera ; Esperar 0.5s jnb TECLA,decr inc conta sjmp adjust decr: dec conta adjust: call ajusta ; Ajustar o resultado sjmp loop ; Repetir 95
MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


;-----------------------;Rotinas (mostra, ajusta) ;---------------------------------------------------mostra: mov a,conta swap a ; LEDs nos MSBits... cpl a ; LEDs activos a zero... mov LEDS,a ret ajusta: mov anl mov ret a,conta a,#0fh conta,a ; Resultado s com 4 bits

96

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


Tempo de execuo de uma instruo:
Medido em ciclos de relgio (Tx) Medido em ciclos mquina (Tm) Depende da frequncia de funcionamento (fx)
Tx = 1/fx Tm = 12Tx = 12/fx

Exemplos:
Se fx=12MHz ento Tm=1S Se fx=11.0592MHz ento Tm=1.0851s Se fx=3.6864MHz ento Tm=3.2552s

Como que isto se reflecte na rotina espera? 97


MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


;------------;Rotina espera 0,5s (250 x 2ms) ; (Supondo fx=12MHz 2ms = 2000 ciclos mquina) ;---------------------------------------------------espera: mov r7,#250 lp1: call esp2ms ; Espera ~2ms djnz r7,lp1 ; Repete 250 vezes ret esp2ms: lp2: mov r6,#200 push acc pop acc push acc pop acc djnz r6,lp2 ret end ;1 ;2 ;2 ;2 ;2 ;2 ;2

3+10R6=2000;

R6=199.7

98

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


Para o clculo ser mais rigoroso:
Igualar o tempo dentro do ciclo lp2 ao tempo fora dele. Porqu? Incluir o tempo que demora a instruo de chamada da rotina. esp2ms: mov push lp2: push pop push pop djnz pop nop ret r6,#199 acc acc acc acc acc r6,lp2 acc ;(1) ;(2) ;(2) ;(2) ;(2) ;(2) ;(2) ;(2) ;(1) ;(2) 3 ciclos mquina

10 ciclos mquina

5 ciclos mquina

[2] + 3 + 10R6 + 5 = 10+10R6; 10+10R6=2000 d R6=199

99

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...


Para o clculo ser ainda mais rigoroso:
Incluir o tempo que demoram as instrues da rotina espera Incluir o tempo que demora a instruo de chamada da rotina espera: lp1: mov r7,#250 call esp2ms djnz r7,lp1 ret ;(1) ;(2000) ;(2) ;(2)

[2] + 1 + 2002 R7 + 2 = 5+2002 R7; 5+2002 R7=500000 d R7=249.7

Importante: avaliar sempre a necessidade deste rigor:


face aplicao em causa face frequncia do relgio, especialmente se no for 12MHz

100

MP06-07 asg, jca, jpsousa

Visualizador de 7 segmentos

PINOUT

No Catodo Comum acende-se cada LED ligando o Comum ao GND e aplicando-se o valor lgico 1 em cada segmento que se quer acender, atravs de uma resistncia adequada. No nodo Comum acende-se cada LED ligando o Comum ao VCC e aplicando-se o valor lgico 0 em cada segmento que se quer acender, atravs de uma resistncia adequada.

101

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


Hardware Um visualizador de 7 segmentos (P1) Segmentos e interruptor activos a zero fx = 11.0592MHz Problema Visualizar uma contagem cclica entre 0 e 9 cujo sentido depende do estado de P1.0 P1.0 = 1 crescente P1.0 = 0 decrescente 102
P1 51

VCC

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


Hardware
Um visualizador de 7 segmentos (P1) Segmentos e interruptor activos a zero fx = 11.0592MHz
VCC

Soluo

P1

inicializar contador 51 repetir (para sempre) converter para 7SEG e visualizar esperar 0.5s se P1.0=0 decrementar contador seno increment-lo garantir que fica entre 0 e 9

103

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


A contagem vai ser efectuada em BCD (0 a 9) e a visualizao em cdigo de 7 segmentos. Para converter BCD para cdigo de 7 segmentos (ver tabela ) podemos construir uma tabela armazenada na memria de programa:
stab: DB 7Eh,30h,6Dh,79h,33h,5Bh,5Fh,70h,7Fh,7Bh

104

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


;Nomes simblicos ;---------------------------------------------------DIGITO equ P1 ; Nome simblico para P1 TECLA equ P1.0 ; Nome simblico para P1.0

;Variveis ;---------------------------------------------------dseg at 30h conta: ds 1 ; Contador

105

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


;Programa principal ;---------------------------------------------------cseg at 0000h mov conta,#0 ; Inicializar loop: call mostra ; Visualizar resultado call espera ; Esperar 0.5s jnb TECLA,decr inc conta sjmp adjust decr: dec conta adjust: call ajusta ; Ajustar o resultado sjmp loop ; Repetir 106
MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...


;Rotinas (mostra, ajusta) ;---------------------------------------------------mostra: mov a,conta mov dptr,#stab ; Inicio da tabela movc a,@a+dptr ; Converte mov DIGITO,a ; Visualiza ret stab: DB 7Eh,30h,6Dh,79h,33h,5Bh,5Fh,70h,7Fh,7Bh ajusta: mov cjne mov ret a,conta a,#10,uok conta,#0 ; Resultado s com 4 bits

uok: done:

cjne a,#-1,done mov conta,#9 ret


MP06-07 asg, jca, jpsousa

107

Visualizador crescente e decrescente...


;------------;Rotina espera 0,5s (250 x 2ms) ; (Supondo fx=11.0592MHz 2ms = 1843.2 ciclos mquina) ;---------------------------------------------------espera: mov r7,#250 lp1: call esp2ms ; Espera ~2ms djnz r7,lp1 ; Repete 250 vezes ret esp2ms: lp2: mov r6,#200 push acc pop acc push acc pop acc djnz r6,lp2 ret end ; 1 1+R6(8+2)+2 = 3+10R6 ;2 ; 2 3+10R6=1843.2 ; 2 R6=199.7 ;2 ;2 ;2

108

MP06-07 asg, jca, jpsousa

Teclado matricial
Hardware
Um teclado com 16 teclas (P1)

Problema
Detectar se uma tecla est premida e identificar essa tecla.
0 1 5 9 D 2 6 A E

Nota: No caso da porta P1, que possui resistncias de pull-up, as resistncias mostradas na figura podem ser dispensadas.

3 7 B F

4 P1 8 C 51

109

MP06-07 asg, jca, jpsousa

Teclado matricial...
Colunas (P1.0 a P1.3) so sadas Linhas (P1.4 a P1.7) so entradas

1 5 9 D

2 6 A E

3 7 B F

Soluo

4 P1 8 C 51

Para detectar se uma tecla est premida coloca-se sucessivamente cada um dos bits ligados s colunas do teclado em 0 e so lidos os valores dos bits ligados s linhas. Quando num dos bits ligados a uma linha lido um 0 significa que est premida a tecla situada no cruzamento dessa linha com a coluna que est em 0.

110

MP06-07 asg, jca, jpsousa

Interface com teclado matricial...


P1.7 x x x x x x x x x x x x 0 0 0 0 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 x x 0 1 1 1 0 x x 0 1 1 0 1 x x 0 1 0 1 1 x x 0 0 1 1 1 x 0 x 1 1 1 0 x 0 x 1 1 0 1 x 0 x 1 0 1 1 x 0 x 0 1 1 1 0 x x 1 1 1 0 0 x x 1 1 0 1 0 x x 1 0 1 1 0 x x 0 1 1 1 x x x 1 1 1 0 x x x 1 1 0 1 x x x 1 0 1 1 x x x 0 1 1 1 Tecla F E D C B A 9 8 7 6 5 4 3 2 1 0

P1.7

0 4 P1 8 C

1 5 9 D

2 6 A E

3 7 B F

51
P1.0

111

MP06-07 asg, jca, jpsousa

Interface com 8 visualizadores de 7 segmentos

Sero necessrias 8 portas de E/S ?

112

MP06-07 asg, jca, jpsousa

Interface com 8 visualizadores de 7 segmentos...


Com apenas duas Portas do 8051 (p.ex P1 e P2) possvel Multiplexar no tempo o comando de todos os Displays de 7 Segmentos !

113

MP06-07 asg, jca, jpsousa

Interface com 8 visualizadores de 7 segmentos...


Para visualizar um dgito, o valor do cdigo desse dgito colocado na porta P1 e a porta P2 selecciona em qual dos 8 visualizadores ser visualizado o dgito, activando o transistor respectivo. Se for realizado um varrimento de todos os dgitos, por exemplo do menos significativo para o mais significativo, controlado pela porta P2, e alterando-se sncronamente o valor de cada dgito no tempo, atravs da Porta P1, a sensao para o observador a de que todos os visualizadores esto acesos simultneamente (fvarrimento>=50Hz).

114

MP06-07 asg, jca, jpsousa

Interface com visualizador LCD


Visualizador de caracteres 16x2:
O controlador mais utilizado pelos fabricantes de mdulos LCD o HD44780. A ligao ao controlador feita por um ligador contendo oito linhas de dados B0..B7 , trs sinais de controlo RS, R/W e E, a alimentao de 5V, a massa e um terminal para ajuste do contraste. Alguns visualizadores LCD, como o da figura, possuem LED Backlight ( iluminao de fundo ) com alimentao nos pinos 15 e 16 do ligador do LCD. A corrente consumida pelo LED de 100 a 200mA conforme o modelo.

115

MP06-07 asg, jca, jpsousa

Pinos no ligador do LCD

116

MP06-07 asg, jca, jpsousa

Linhas de controlo do LCD


EN "Enable" - Esta linha de controlo serve para indicar ao LCD que lhe vo ser enviados dados. Para isso antes de os dados serem enviados o EN deve estar em 0, e s depois das outras linhas de controlo e dados estarem prontas o EN deve ser posto em 1, mantido nesse valor durante um tempo que depende do LCD e colocado de novo em 0. RS "Register Select - Quando RS=0, os dados so um comando ou uma instruo especial (limpa visor, posiciona cursor, etc.). Quando RS=1, os dados enviados so os caracteres de texto que devem ser visualizados no visor. RW "Read/Write - Quando RW=0, a informao no barramento de dados para ser escrita no LCD. Quando RW =1, pretende-se ler informao do LCD. De notar que s uma instruo "Get LCD status" um comando de leitura. Todos os outros comandos so de escrita. O barramento de dados de 4 or 8 linhas (dependendo do modo de funcionamento seleccionado).

117

MP06-07 asg, jca, jpsousa

Temporizaes do LCD

Ciclo de escrita

Largura mnima do Enable 220 ns Frequncia mxima do EN =2 MHz

Ciclo de leitura

118

MP06-07 asg, jca, jpsousa

Ajuste do contraste
O esquema mais usado para ajustar o contraste do LCD o seguinte:

(Pino 3 do ligador)

Se pretendermos variar o contraste por software o potencimetro pode ser substitudo por uma ligao directa do pino Vo sada de uma porta do microcontrolador a funcionar como gerador PWM (Pulse Width Modulation). Se a frequncia do gerador for suficientemente elevada o tempo de reaco do LCD integra a onda rectangular no sendo necessrio filtr-la para obter a tenso de ajuste do contraste.

119

MP06-07 asg, jca, jpsousa

Comandos do LCD
Instruo
RS RW D7 D6 D5 D4 D3 D2 D1 D0 Descrio e tempo de execuo t

120

MP06-07 asg, jca, jpsousa

Comandos do LCD (cont.)


Instruo
RS RW D7 D6 D5 D4 D3 D2 D1 D0 Descrio e tempo de execuo t

121

MP06-07 asg, jca, jpsousa

Endereos da DDRAM do LCD

Para se posicionar o cursor na primeira coluna da 2 linha comando (80h + 40h) = C0h ( 80h comando para estabelecer o endereo da DDRAM +
40h 1 endereo da 2 linha )

122

MP06-07 asg, jca, jpsousa

Caracteres ASCII aceites pelo controlador do LCD


Fonte de 5x7 pontos

123

MP06-07 asg, jca, jpsousa

Flag Busy do LCD


O tempo de execuo de cada instruo pelo controlador do LCD depende da frequncia do cristal usado no controlador bem como da instruo que est a ser executada. Para ter em conta o tempo de execuo das instrues podemos incluir um atraso fixo, por software, entre as instrues. Este processo no o mais indicado dado que as instrues tm tempo de execuo varivel e teriamos que usar um atraso superior ao maior deles, diminuindo muito a velocidade de escrita. O mtodo mais robusto de programao consiste em, antes de efectuar o prximo comando usar o comando "Get LCD Status" para determinar se o LCD est ainda ocupado (busy) a executar a ltima instruo recebida. A informao de retorno do comando "Get LCD Status" que nos til est contida no bit D7. Quando o comando "Get LCD Status" executado o LCD coloca o bit D7 em 1 se ainda estiver ocupado a executar o comando anterior ou coloca-o em 0 no caso contrrio.

124

MP06-07 asg, jca, jpsousa

Inicializao do mdulo LCD


Sempre que o mdulo LCD ligado alimentao deve ser executado o procedimento de inicializao, que consiste no envio de uma seqncia de 5 comandos para configurar o modo de funcionamento do LCD.
No caso de um visualizador de 2 linhas o procedimento :
Comando 38h (aguardar 15ms) Comando 38h (aguardar 15ms) Comando 06h (aguardar Busy=0) Comando 0Eh (aguardar Busy=0) Comando 01h (aguardar Busy=0)

125

MP06-07 asg, jca, jpsousa