EXPERIÊNCIA 3: INTERFACE COM TECLADO E DISPLAY Autores: Prof. Dr. André Riyuiti Hirakawa, Prof. Dr. Paulo Sérgio Cugnasca e Prof. Dr. Carlos Eduardo Cugnasca Versão: 05/2005 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 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 é efetuado através de portas de entrada e saída. Acoplados a estas normalmente encontram-se os dispositivos periféricos, que são destinados a determinados tipos de operação. Como exemplo de tais dispositivos, pode-se citar: controladores de teclado, controladores de display, portas de entrada e saída paralelas, controladores de DMA, controladores de interrupção, controladores de disco, 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 e suas variaçõ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. 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. 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 pode-se escolher um tipo de teclado e distribuição de teclas, como por exemplo, teclados alfanuméricos, teclados numéricos ou teclados especiais. Quando uma tecla de um teclado é pressionada, algum tipo de
2 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. Pode-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, embora aparentemente necessite mais componentes, é vantajosa pelo fato de utilizar menos interligações. 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.
3 Do ponto de vista de filosofia, existe alguma semelhança nos circuitos que controlam a multiplexação de displays e varredura de teclado. Os mesmos sinais utilizados para a seleção do dígito do display podem ser utilizados para a seleção das colunas da matriz do teclado. Muitos projetos podem ser simplificados utilizando-se esta característica. 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. 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] Instruções/comandos do Programa XTALK. [5] Andréa M. Matsunaga e Maurício 0. Tsugawa Projeto de Formatura Sistema de Pesagem Dinâmica. PCS-588 1997. [6] 2500AD Software 8044/51 Cross Assembler for MSDOS [7] Intel Home Page ApBUILDER http://developer.intel.com/design/builder/apbldr/ [8] ALFACOM. Módulos Multi-Matrix - Manual de Utilização. [9] 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. PARTE EXPERIMENTAL Esta etapa consiste no estudo e na utilização de um teclado matricial de 4 x 4 teclas na Placa Experimental MC8051. O teclado está conectado através de "flat-cables" à porta P1 do microcontrolador 8051. O display está conectado às vias do 8051, como visto na experiência anterior. 5.1. Interface com o Teclado a) Estudar o acesso à porta do 8051 e a forma de direcionar os sinais de entrada e saída para identificar a tecla acionada. b) Explique no planejamento a razão de não se estar utilizando resistores de pull-up nos sinais da porta P1. c) Elaborar um programa para o microcontrolador que detecte o acionamento de qualquer tecla, identificando-a e apresentando-a no display. 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). d) Explique o que acontece 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.
5 5.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". 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 implementação nesse caso. A alternativa b) é 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.