Portal - FPGA para Todos

Exemplo: Leitura de Teclado Matricial com o NIOS II

Introdução

       Os teclados matriciais são uma solução bastante prática como interface de entrada para sistemas simples que precisam de entrada numérica ou de caracteres, ou de comandos. A sua característica construtiva faz com que uma razoável quantidade de teclas possa ser lida a partir de um número menor de terminais de um sistema digital. Entretanto, esta vantagem tem um custo: um algoritmo ou um sistema sequencial adequado precisa ser desenvolvido para a sua leitura. O artigo referenciado no final desta página apresenta uma solução para o teste e a leitura de um teclado numérico, de um tipo utilizado em certos aparelhos telefônicos.

     No artigo referenciado apresentam-se o circuito do teclado, o princípio adotado para a sua leitura, a solução de hardware utilizada (implementada em um sistema embarcado com processador NIOS II e FPGA ALTERA) e o programa que executa a sua leitura e apresenta no console do PC as informações de teclas pressionadas. O conceito básico que se tenta desenvolver não prevê solução para o problema do ruído de trepidação.

    O sistema foi desenvolvido no kit de FPGA do Projeto FPGA para Todos, ele utiliza um SOPC (System On a Programmable Chip) desenvolvido pelo laboratório FPGA para Todos. Um SOPC é em sua essência um microcontrolador desenvolvido em Lógica Programável, na presente situação, visando a programação de um FPGA. Especificamente para este projeto utilizamos o SOPC_2, que foi baseado no processador NIOS II da Altera. Este artigo foi desenvolvido como mais um exemplo didático de aplicação do conjunto de ferramentas construído pela iniciativa FPGA Para Todos.

       Lembramos que aqui apenas citamos algumas pequenas partes do projeto e que o artigo completo encontra-se disponível para download.

Método de Verificação e Leitura do Teclado

       A figura abaixo apresenta o diagrama de blocos do sistema construído no FPGA, conectado ao teclado, é importante salientar que os blocos que se encontram com o contorno pontilhado não são utilizados neste projeto, embora façam parte do SOPC_2. Os resistores de "pull-up" são ligados aos terminais do teclado, para garantir nivel lógico alto nos pinos de entrada do FPGA quando não há nenhuma tecla pressionada.

       O código do programa de verificação do teclado se baseia em uma sequência três etapas básicas que aqui serão apenas citadas, que são:

1. Testa se há tecla pressionada, colocando as linhas em nivel logico '0' e verificando o valor recebido nas colunas;

2. Se há uma tecla pressionada (o nível lógico é '0' em alguma coluna), gera um código de identificação de linha e coluna. Para isto, se acionam as colunas em nivel logico '0', e verifica-se o valor nas linhas, formando um código pela junção dos códigos de linha de coluna em um único byte;

3. Identifica a tecla pressionada a partir do código gerado.

Exemplos

Teclado e Interface JTAG

       Para projetos envolvendo o teclado matricial, desenvolvemos uma função denominada identifica_tecla(), que executa uma varredura do teclado, seguindo o método proposto acima. Esta função retorna um valor numérico entre 0 e 14, correspondendo a uma tecla sendo pressionada, o valor 15 quando nenhuma tecla está pressionada, ou 16 para sinalizar que mais de uma tecla é pressionada simultaneamente.

       Como uma primeira aplicação, bastante elementar, da função identifica_tecla(), o programa leitura_teclado, cuja função principal é listada no artigo completo, envia para o PC, através da interface JTAG do sistema, a informação do estado do teclado, a cada segundo. O programa utiliza uma estrutura switch...case para determinar que tecla é pressionada, ou que não há tecla válida, se for o caso.

Exemplo de aplicação com o teclado matricial e comunicação JTAG

Teclado e LCD

       Em outra aplicação interessante, e demonstrando a aplicação do teclado em um projeto ligeiramente mais complexo, propomos um sistema em que o teclado permite a entrada de códigos numéricos a serem exibidos no LCD, e então enviados para o PC. Neste projeto, usamos as funções para LCD discutidas em outro artigo, em breve disponível no portal FPGA para Todos.

Downloads

- Artigo Completo Descrevendo o Sistema

- Projeto de Hardware:

- Projeto de Software:

 

Quem está Online

Temos 35 visitantes e Nenhum membro online

Apoio

Login Form

 

Artigos Relacionados