Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD Mapeamento em posição de Memória Interface com visor LCD 6 Objectivos 1 Compreender os mapeamentos em Portos de I/O e de Memória dados externa. Identificar os endereços na memória de dados externa em que se encontra o visor LCD. Saber configurar e escrever num módulo LCD. Introdução Os módulos LCD são interfaces de saída muito úteis em sistemas de microprocessador. Estes módulos podem ser em modo gráfico ou caracteres. Os módulos LCD gráficos existem com resoluções de 122x32, 128x64, 240x64 e 240x128 dots pixel, e geralmente estão disponíveis com 20 pinos para conexão. Os LCD comuns (tipo caracteres) são especificados em número de linhas por colunas e existem nas configurações previstas na Tabela 1. Colunas Linhas Pinos 8 2 14 12 2 14/16 16 4 14/16 20 1 14/16 20 2 14/16 20 4 14/16 24 2 14/16 24 4 14/16 40 2 16 40 4 16 Tabela 1- Formato de visores LCD. Os módulos podem ser encontrados com LED backlight (retro iluminados) para facilitar as leituras durante a noite. Neste caso, a alimentação deste led faz-se normalmente pelos pinos 15 e 16 para os módulos comuns e 19 e 20 para os módulos gráficos, sendo os pinos 15 e 19 para ligação ao ânodo e os pinos 16 e 20 para o cátodo. A corrente de alimentação deste led varia de 100 a 200mA dependendo do modelo. Estes módulos utilizam um controlador próprio, permitindo sua interligação com outras placas através de seus pinos, onde deve ser alimentado o módulo e interligado o barramento de dados e controle do módulo com a placa do usuário. Trabalho Prático Nº 6 Página 1 Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD Naturalmente que além de alimentar e conectar os pinos do módulo com a placa do usuário deverá haver um protocolo de comunicação entre as partes, que envolve o envio de bytes de instruções e bytes de dados pelo sistema. Pino Função Descrição 1 Alimentação GND 2 Alimentação Vcc 3 V0 Tensão para ajuste de contraste 4 RS 1-Dado, 0-Instrução 5 R/W 1-Leitura, 0-Escrita 6 E (Chip Select) 1 ou ( 1 → 0 ) habilita, 7 B0 lsb 8 B1 9 B2 10 B3 11 B4 12 B5 13 B6 14 B7 msb 15 A (se existir) Ânodo para Led backlight 16 K (se existir) Cátodo para Led backlight 0-desabilita Barramento de dados Tabela 2- Descrição dos pinos dos visores LCD. Os módulos LCD permitem um ajuste na intensidade da luz emitida ou ajuste de contraste, isto é possível variando-se a tensão no pino 3. Deve ser ligado um potenciómetro de 10K entre os pinos 1 e 2 e com o ponto médio a ligar ao pino 3. Interface com MCU Os módulos LCD são projectados para conectar-se com a maioria das CPU’s, bastando para isso que esta CPU atenda as temporizações de leitura e escrita de instruções e dados, fornecido pelo fabricante do módulo, ou seja pelo controlador do módulo (normalmente Hitachi HD44780U). A Figura 1 mostra um exemplo de diagrama temporal necessário observar pelo CPU para efectuar uma operação de escrita no módulo. Trabalho Prático Nº 6 Página 2 Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD Figura 1- Diagrama temporal para escrita no controlador HD44780U. R/W RS DESCRIÇÃO 0 0 Escrita no módulo - Instrução 0 1 Escrita no módulo – Dados 1 0 Leitura do módulo – Instrução 1 1 Leitura do módulo - Dados Tabela 3- Descrição das diversas operações possíveis de efectuar no módulo LCD. Sempre que se alimenta o módulo LCD deve ser executado o procedimento de inicialização, que consiste no envio de uma sequência de instruções para configurar o modo de operação do visor LCD. Existem módulos LCD em que este procedimento ocorre automaticamente, dentro de condições específicas que envolve temporizações mínimas referente a transição do nível lógico 0 para 1. Em caso de dúvidas, recomendamos o envio destas instruções após o reset do sistema. Apenas é feita referência à inicialização para sistemas de 8 bits de dados (5 instruções). Entre as duas primeiras instruções recomenda-se um atraso de 15ms. As restantes instruções podem ser escritas após verificar a Busy Flag. 1 → 2 → 3 → 4 → 5 30h (15 ms) 30h (15ms) (06h (BF) 0Eh (BF) 01h Tabela 4- Sequência de cinco instruções para inicialização de módulos LCD em ligação a 8 bits. LCD 16x1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Linha 1 80 81 82 83 84 85 86 87 C0 C1 C2 C3 C4 C5 C6 C7 LCD 16x2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Linha 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F Linha 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF Tabela 5- Correspondência entre a posição dos caracteres no visor LCD e o memória DDRAM. De referir que em alguns módulos esta correspondência pode não se verificar. Trabalho Prático Nº 6 Página 3 Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD Sequência para utilização de visores LCD 1. Quando se alimenta o visor o potenciómetro deve ser ajustado para efectuar o controle de brilho de modo a se visualizar os caracteres de uma forma adequada. 2. Em alguns módulos de uma linha só funcionam com a instrução 38h ao invés de 30h, conforme instruções de inicialização. 3. O sinal de Enable (pino 6) deverá ser gerado conforme a temporização mostrada na Figura 1. Os códigos de dados ou de instruções só serão processados pelo processador do módulo após a descida (flanco descendente) do sinal do Enable. 4. Para ajustar a velocidade de comunicação entre a CPU do usuário e o módulo LCD existem duas possibilidades: - Intercalar uma rotina de atraso de aproximadamente 15ms entre as instruções. - Fazer a leitura do Busy Flag antes do envio de cada instrução e só enviar quando a mesma for ‘0’. Neste caso, a única excepção será durante a inicialização. RS R/W Código (HEX) Liga(sem cursor) 0 0 0C Desliga 0 Descrição Modo Visor Limpa visor e coloca cursor na posição home Controle do cursor Deslocamento do cursor ao escrever cursor Deslocamento da mensagem ao escrever carácter Deslocamento da mensagem 0A/08 0 0 01 Liga 0 0 0E Desliga 0 0 0C Desloca para a Esquerda 0 0 10 Desloca para a Direita 0 0 14 Cursor Home 0 0 02 Cursor Piscar 0 0 0D Cursor com alternância 0 0 0F Para a esquerda 0 0 04 Para a direita 0 0 06 Para a esquerda 0 0 07 Para a direita 0 0 05 Para a esquerda 0 0 18 Para a direita 0 0 1C Tabela 6- Conjunto de instruções mais utilizadas na comunicação com os módulos LCD. A finalizar, referir que o manuseio dos módulos LCD, deve observar cuidadosamente os procedimentos de controlo anti-estático. Eles incorporam circuitos integrados CMOS Trabalho Prático Nº 6 Página 4 Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD LSI os quais são sensíveis à descarga electrostática. Deve ser evitado todo o contacto com os terminais do conector, pistas do circuito impresso e/ou terminais do CI. 2 Questões 2.1 O módulo LCD está ligado em posição de memória de dados externa. Atendendo à tabela 3 e de acordo com o hardware da placa identifique o conjunto de endereços possíveis para a escrita das instruções e dados (leitura e escrita) no módulo LCD da placa de desenvolvimento. 2.2 Que alterações deverão ser efectuadas no descodificador de endereços para alterar o endereço base para C000H. 2.3 Amplie o kit utilizado nas aulas práticas em mais um porto de saída de 8 bits. Utilize uma das linhas do descodificador (PAL) de endereço disponível e utilize os dispositivos que entender. 2.4 Esclareça sobre as vantagens e desvantagens de utilização de mapeamento de dispositivos em posição de memória de dados externa e em portos de entrada/saída, refira-se ao exemplo concreto do kit de desenvolvimento. Identifique os dispositivos ligados em porto I/O e em posição de memória. 3 Trabalho 3.1 Tendo como base a listagem do programa em anexo, escrever as rotinas para escrever no LCD na linha 1 e na linha 2, caso o visor que estejam a utilizar seja de duas linhas. LINHA 1 do LCD LINHA 2 do LCD 3.2 Escreva as rotinas para: - Deslocamento de texto à direita - Deslocamento de texto à esquerda 4 Questão Pesquisa 4.1 Pretende-se completar o trabalho de pesquisa anterior, recepção de chamadas GSM, com a visualização do número chamador no visor LCD. Caso exista um apelido associado ao nome deverá aparecer este em vez do número. J. Mourinho A chamar…. Trabalho Prático Nº 6 Página 5 Trabalhos Práticos AM 2007/2008 Mapeamento em Posição de Memória Interface com visor LCD Exemplos: Para activar a apresentação do número chamador, função CLIP AT+CLIP=1<CR> Para desactivar a apresentação do número chamador AT+CLIP=1<CR> Exemplos de CLIP: Identificação de número chamador, não programado em memória de cartão +CLIP: "212125166",161,,,"",0 Identificação de numero chamador, programado em memória de cartão +CLIP: "933351299",161,,,"J. MOURINHO",0 Número chamador, confidencial +CLIP: "",128,,,"",1<CR><LF> Trabalho Prático Nº 6 Página 6