EXPERIÊNCIA 5: INTERFACE COM TECLADO E DISPLAY Autores: Prof. Dr. André Riyuiti Hirakawa e Prof. Dr. Carlos Eduardo Cugnasca Versão: 04/2009 1. OBJETIVO Esta experiência tem por objetivo a familiarização com alguns dos dispositivos periféricos de entrada e saída mais utilizados com os microprocessadores e microcontroladores, que são os teclados e displays, utilizado um teclado matricial e um display de cristal líquido (LCD), controlados pelo microcontrolador da placa experimental. 2. DISPOSITIVOS PERIFÉRICOS Todo equipamento baseado em microprocessador, para que seja utilizável, tem a necessidade de trocar dados com o mundo exterior. Isto se processa através de portas de entrada e saída. Acoplados a estas normalmente se encontram os dispositivos periféricos, cada um destinado a um determinado tipo de operação. Como exemplo de tais dispositivos, podem-se citar: controlador de teclado, controlador de display, porta de entrada e saída paralela, controlador de acesso direto à memória (DMA), controlador de interrupção, controlador de disco, conversor analógico-digital, conversor digital-analógico, relógio de tempo real, temporizador e contador de eventos, etc. Alguns desses dispositivos são específicos para determinadas aplicações, enquanto que outros permitem sua configuração e utilização de diversas maneiras. Os principais fabricantes de circuitos integrados oferecem ao usuário, além dos microprocessadores, uma grande quantidade de dispositivos periféricos, que cobrem as principais aplicações. Tais dispositivos apresentam compatibilidade com determinados microprocessadores, simplificando sua interligação, e podem ser adaptados a cada aplicação através de programação. Resta ao usuário, dessa forma, programá-los e configurá-los, adequando-os às necessidades. Apenas para interfaces pouco usuais devem-se projetar portas de entrada e saída específicas. A programação de tais dispositivos, embora nem sempre trabalhosa, pode se tornar não trivial, em função dos muitos casos para os quais os dispositivos são projetados para se adaptar, obrigando ao usuário a um estudo minucioso dos seus manuais de especificação, quase sempre de razoável dimensão e pouco didáticos. Felizmente podem ser encontradas páginas na Internet e literatura complementar, que detalham o projeto de utilização de muitos desses componentes para diversas situações usuais, facilitando a elaboração de novos projetos. 3. TECLADOS 3.1. Generalidades O teclado é um dos periféricos mais utilizados, permitindo a entrada de dados ou seleção de funções através de botões de contato momentâneo. Para cada aplicação podem-se escolher um tipo de teclado e distribuição de teclas como, por exemplo, teclados alfanuméricos,
2 teclados numéricos ou teclados especiais. Quando uma tecla de um teclado é pressionada, algum tipo de comutação elétrica ocorre, proporcionada por uma chave mecânica ou outro método. Em um computador pessoal, costuma-se encontrar teclados do tipo capacitivo (de baixo custo), onde cada tecla pressionada provoca a circulação de uma pequena corrente devido à diferença de carga entre os pólos do capacitor. Podem-se classificar os teclados, do ponto de vista de operação, como monomodo ou multimodo. Nos teclados monomodo, um único código é gerado para cada tecla, enquanto o multimodo permite mais de um código atribuído a cada tecla, pelo uso de teclas adicionais. Os códigos padronizados, como o ASCII ou EBCDIC, são adequados para teclados multimodo. 3.2. Codificação A função de um teclado e circuitos a ele associados é fornecer o código binário de cada tecla para processamento. Quando o teclado apresenta poucas teclas, a conexão das mesmas é feita de forma a interligar em comum um dos seus terminais, enquanto que o outro é ligado a um circuito de codificação (Figura 3.1.). Figura 3.1- Exemplo de um Teclado com Conexão Simples Entretanto, quando o número de teclas é elevado, como ocorre nos teclados alfanuméricos, esse método não é recomendável devido à grande quantidade de entradas que o circuito de codificação teria que aceitar. Nesse caso, é aconselhável utilizar a técnica de conexão matricial das teclas (Figura 3.2). Esse tipo de conexão apresenta vantagens pelo fato de utilizar menos interligações, embora requeira mais componentes. Basicamente, um teclado matricial pode ser implementado de quatro formas: com circuitos dedicados (Figura 3.2); com periféricos inteligentes e programáveis, acopláveis diretamente a microprocessadores (por exemplo, o componente 8279, da Intel); com circuitos simplificados diretamente controlados pelo microprocessador, via portas paralelas de entrada e saída e programa (Figura 3.3); com circuitos microprocessados dedicados, como é o caso dos microcomputadores pessoais da linha IBM PC e sucessores (por exemplo, circuitos baseados no microcontrolador 8049, da Intel).
3 Existe alguma similaridade entre os circuitos que controlam a multiplexação de displays baseados em segmentos luminosos, e os circuitos que controlam a varredura de um teclado matricial: os mesmos sinais utilizados para a seleção dos dígitos do display podem ser utilizados para a seleção das colunas da matriz do teclado. Muitos projetos que envolvem displays e teclados podem ser simplificados, utilizando essa característica comum. Figura 3.2 - Exemplo de um Teclado com Conexão Matricial 1 P1-0 H0 80C51 2 3 4 P1-1 P1-2 P1-3 H1 H2 H3 5 P1-4 V0 V1 V2 V3 6 P1-5 7 P1-6 8 P1-7 Figura 3.3 - Exemplo de um Teclado Matricial Controlado por Microcontrolador
4 4. DISPLAY ALFANUMÉRICO DE CRISTAL LÍQUIDO Nos últimos anos os módulos de display alfanuméricos têm se tornado extremamente populares, sendo utilizados em muitos diversos produtos, equipamentos e instrumentos. Dentre essas aplicações do display podem-se citar calculadoras, terminais bancários consulta de bancos, terminais de cartões de crédito, painéis informativos, painéis de equipamentos, etc. Essa popularização vem trazendo diversas vantagens, pois possibilita a utilização de um dispositivo de baixo consumo e de fácil programação e interfaceamento com a maioria dos microprocessadores e microcontroladores, a um custo muito reduzido. Atualmente, existem muitos fabricantes que produzem displays de cristal líquido que funcionalmente possuem características semelhantes. As diferenças são quanto a conexão, número de linhas e colunas, dimensões físicas e consumo. Assim, seqüências de comandos criados para um display podem ser aplicadas em outros sem necessidade de maiores modificações. Na Placa Experimental utilizada em laboratório, o display é conectado diretamente às vias do microcontrolador, ou seja, ele se encontra mapeado em memória, atribuindo-se endereços aos seus registradores internos, que são utilizados para a sua configuração e o envio e leitura de dados, como mostra a Tabela I [6]. O valor X presente nos endereços pode ser substituído por qualquer número hexadecimal (0 a F). Periférico Registrador Endereço Display de Cristal Líquido Escrita de Controle 200XH Escrita de Dado Leitura de Controle Leitura de Dado 201XH 202XH 203XH Tabela I - Endereços dos registradores do display utilizado na Placa Experimental 5. BIBLIOGRAFIA [1] PHILIPS; 80C51-Based 8-bit Microcontrollers Philips Semiconductors Data Handbook, 1995. [2] PHILIPS; Application Notes and Development Tools for 80C51 Microcontrollers Philips Semiconductors Data Handbook, 1995. [3] INTEL. Embedded Microcontrollers Intel Datasheet. 1995. [4] MATSUNAGA, A.M.; TSUGAWA, M.O. Sistema de Pesagem Dinâmica. Projeto de Formatura (disciplina PCS-588). Escola Politécnica da USP, 1997. [5] INTEL HOME PAGE. ApBUILDER http://developer.intel.com/design/builder/apbldr/. [6] ALFACOM. Módulos Multi-Matrix - Manual de Utilização. [7] CUGNASCA, C.E.; ZERBINI, R.C. Experiência nº 3 - Familiarização com Periféricos de Entrada e Saída: Interface com Display. EPUSP, 1989.
5 6. PARTE EXPERIMENTAL Esta etapa consiste no estudo e na utilização de um teclado matricial de 4 x 4 teclas e de um display de cristal líquido na Placa Experimental MC8051. O teclado está conectado através de "flat-cables" à porta P1 do microcontrolador 8051. O display está conectado às vias de dados e endereços do 8051 (mapeado em memória), sendo endereçado como descrito no Capítulo 4. 6.1. Interface com o Teclado e Display a) Estudar o acesso à porta do 80C51 e a forma de direcionar os sinais de entrada e saída para identificar a tecla acionada. b) Explicar no planejamento a razão de não se estar utilizando resistores de pull-up nos sinais da porta P1. c) Verificar o funcionamento do display, programando-o e enviando caracteres sem a elaboração de um programa, utilizando-se apenas dos comandos do Programa Monitor (escolha o comando apropriado para a escrita em memória, justificando-a no relatório 1 ). d) Elaborar um programa para o microcontrolador que detecte o acionamento de qualquer tecla, identificando-a e apresentando-a no display; e) Cada tecla pressionada deverá provocar o deslocamento da anterior para a esquerda. Para efeito de visualização no display, atribuir os seguintes códigos a cada tecla: números de 0 a 9, e letras de A a F. Levar em conta o "bounce" associado a cada tecla (explicar em detalhes no relatório o processo e o algoritmo para eliminá-lo). f) Explique o que acontece, do ponto de vista do hardware e do software, quando: - duas ou mais teclas de uma mesma linha são mantidas pressionadas simultaneamente; - idem para teclas de uma mesma coluna; Sugira eventuais modificações no circuito para atender à essas situações. 6.3. Observações O planejamento deverá apresentar: descrição de projeto, relacionando as suas características principais; especificação do programa a ser testado, com diagramas estruturados e respectiva descrição (planejamento sem esta documentação não será aceito!); diagrama lógico e descrição do hardware simplificados, envolvidos na experiência; descrição de como deverá ser eliminado o "bounce". O teclado e o display são utilizados na maior parte das experiências da disciplina. Sugere-se assim que as rotinas desenvolvidas sejam bem testadas e documentadas, facilitando a integração com outros programas. 1 O Programa Monitor possui dois tipos de comandos para a escrita em memória: um deles não efetua a leitura após a escrita, exatamente para facilitar a interação com dispositivos periféricos mapeados em memória.
6 ANEXO 1 SUGESTÃO PARA A IMPLEMENTAÇÃO DA ROTINA DE DEBOUNCE Existem várias formas de se elaborar a rotina de debounce. Duas delas são citadas a seguir: a) Após ter sido detectada a variação de estado em uma tecla (do 0 para o 1 ou vice-versa), deve-se aguardar um tempo t para se considerar o novo estado. O valor de t depende do tipo de tecla, sendo da ordem de milisegundos. b) A variação de uma tecla é considerada pela rotina somente se o estado da tecla for o mesmo nas últimas n leituras. c) Em função da alta velocidade do microcontrolador e da baixa velocidade envolvida no acionamento de um teclado, é possível intercalar um outro processamento entre duas leituras do teclado. Isso é particularmente útil quando existem outras tarefas que devem ser realizadas paralelamente ao tratamento do teclado. O uso de uma interrupção periódica, indicando os instantes de leitura do teclado, facilita a incorporação de processamento entre leitura do teclado. A alternativa b) é particularmente interessante porque o tempo de espera para assumir o estado da tecla é automaticamente ajustado, bastando-se definir um valor para n. Lembrar que o microprocessador é muito mais rápido que os tempos envolvidos para o acionamento do teclado.