teclado matricial

Upload: ricardo-buzzi

Post on 17-Jul-2015

239 views

Category:

Documents


0 download

TRANSCRIPT

FAMLIA 51 Interface com o exterior

72

MP06-07 asg, jca, jpsousa

Interface com o exteriorEntradasRST 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

OutrosXTAL1, XTAL2 para ligao do cristal Vcc, Gnd para ligao da alimentao

73

MP06-07 asg, jca, jpsousa

Circuito de reset do CA 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 relgioXTAL2 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 mnimoNmero de componentes reduzidoMicrocontrolador (uC)MP e MD internas Perifricos internosP1 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 custoComponentes Montagem TestesCircuito relgio

P3

P2 XTAL2 XTAL1 GND

Elevada fiabilidadePoucas 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 51O 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 alternativasP0 e P2: barramentos de dados e endereos do C P3: acesso aos perifricos internos

Pseudo-bidireccionaisLeitura: 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 entrada79MP06-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

D

Q

Clk /Q

PINO

L pino

80

MP06-07 asg, jca, jpsousa

Estrutura interna da porta P0Na 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 P2Esta 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 P3Cada 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 P3PinoP3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

I/OEntrada Sada Entrada Entrada Entrada Entrada Sada Sada

Funo alternativaRxD (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 - interruptorO 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 VCCVCC P1 P1 51 51

Bouncing do interruptor

Debouncing por hardware MP06-07 asg, jca, jpsousa

85

Debouncing por softwareO 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 fechadoint_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 LEDsO 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 baixo10mA por pino 15mA por porta (26mA na porta P0) 71mA no total de todas as portasVCC P1

R

Px51

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.TRANSISTORESO 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 pinoVCC VCC

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

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

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

VCCR

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

88

MP06-07 asg, jca, jpsousa

Exemplo: LEDs e interruptoresHardware5 LEDS (P1.0 a P1.4) 4 Interruptores (P2.0 a P2.3) LEDS activos a zeroP1 VCC

51

ProblemaVisualizar nos LEDs o resultado da operao N+3, onde N representa o nmero definido pelos interruptoresP2

89

MP06-07 asg, jca, jpsousa

LEDs e interruptores...Hardware5 LEDS (P1.0 a P1.4) 4 Interruptores (P2.0 a P2.3) LEDS activos a zeroP1 VCC

51

SoluoRepetir para sempre Ler os interruptores Limpar os 4 bits mais significativos Somar 3 Negar o resultado (porqu) VisualizarP2

90

MP06-07 asg, jca, jpsousa

LEDs e interruptores...LEDS TECS equ equ cseg mov mov anl add cpl mov sjmp end 91MP06-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...HardwareQuatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero fx = 12MHzP1 VCC

51

ProblemaVisualizar 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 92P2

MP06-07 asg, jca, jpsousa

Contador crescente e decrescente...HardwareQuatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero fx = 12MHzVCC

P1

Soluoinicializar 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 95MP06-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? 97MP06-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 102P1 51

VCC

MP06-07 asg, jca, jpsousa

Visualizador crescente e decrescente...HardwareUm visualizador de 7 segmentos (P1) Segmentos e interruptor activos a zero fx = 11.0592MHzVCC

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 106MP06-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 retMP06-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 matricialHardwareUm teclado com 16 teclas (P1)

ProblemaDetectar 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

0

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

51P1.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 LCDVisualizador 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 LCDEN "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 contrasteO 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 LCDInstruoRS 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.)InstruoRS 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 LCDFonte de 5x7 pontos

123

MP06-07 asg, jca, jpsousa

Flag Busy do LCDO 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 LCDSempre 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