EL08D - MICROCONTROLADORES

Documentos relacionados
LCDs Inteligentes. LCD Inteligente. Gabriel Kovalhuk DAELN / UTFPR

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução

Projeto para interligação do Teclado Matricial 4X3 o módulo PIC PCI-208 Princípio de Funcionamento:

Usando display LCD tipo 16x2

Departamento de Engenharia Elétrica e de Computação SEL 384 Laboratório de Sistemas Digitais I

MSP430 Lab 06 Comunicação com display de 40 2 e análise das formas de onda no analisador lógico

Cerne Tecnologia e Treinamento

Módulo de Cristal Líquido LCD

C:\Users\House\Desktop\fluxo.c 1: /****************************************************************************** 2: * Objetivo: Este projeto visa

TECLADO MATRICIAL. Universidade Tecnológica Federal do Paraná - UTFPR Sistemas Microcontrolados Monitor da disciplina: Luís Paulo Custódio

MSP430 Lab 05 Biblioteca básica para comunicação com o Display do Nokia5110

EXPERIÊNCIA 5: INTERFACE COM TECLADO E DISPLAY

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

ET53C - SISTEMAS DIGITAIS

PSI2662 Projeto em Sistemas Eletrônicos Embarcados: Sensores e Atuadores. Temporizadores e Interrupção, AD/DA, Display, Integração com MatLab

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

EXPERIÊNCIA 3: INTERFACE COM TECLADO E DISPLAY

SICILIANO TECNOLOGIA

EL08D - MICROCONTROLADORES

Manual do usuário - Kit 4EA2SA v2.0. Kit 4EA2SA v2.0 Manual do usuário. Copyright VW Soluções

9/3/2009. Aula 4. Engenharia de Sistemas Embarcados. Cenário: Sistema de Controle de LEDs

Aula 4. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 8051

Painel Luminoso com LEDs

Microcontroladores 2 EL08D Turma M12

Copyright 2011 VW Soluções

Interface com Displays de 7 Segmentos. Interface com Displays

Painel Luminoso com LEDs

Prof. Adilson Gonzaga. Interface com Displays

Técnicas de Interface com Microcontroladores (8051)

Projeto de Sistemas Eletrônicos

Sistemas Operacionais de Tempo Real - Teclados Matriciais

KIT DIDÁTICO PIC-2377

Microcontrolador 8051

Microcontroladores 2 EL08D Turma M12

Guia da Placa de desenvolvimento PD Mega16 N1

Comunicação USB com o PIC Vitor Amadeu Souza

O Pino P2.7 não está sendo usado e cada Display mostrará valores de 0 a 9.

Conversor Analógico Digital do MSP430G2553

Oxímetro Bluetooth e LCD 16 2 em Python

Plano de Aula. 1 o semestre. Aula número 011 Periféricos Display LCD, Conversor AD e conversor DA (PWM)

ENG-1450 Microcontroladores e Sistemas Embarcados. Lab03 Execução Experiência 01, Keypad, 7-seg, Exercícios

2a Prova de ELT024 Programação para Sistemas Embarcados Prof. Rodrigo Maximiano Antunes de Almeida

Periféricos do PIC - Keypad e Memórias

EXPERIÊNCIA 4: IMPLEMENTAÇÃO DE UM CRONÔMETRO

LABORATÓRIO DE ARQUITETURA DE COMPUTADORES PREPARAÇÃO 02: DISPLAY DE 7 SEGMENTOS MICROCONTROLADO

Usando Display Gráfico com C18 e C30

O objetivo deste artigo é demonstrar como é possível construir uma rede alternativa para MSX, através dos conectores de joystick do micro.

Projeto Final de Microcontroladores 2 Alarme de Temperatura

Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Introdução ao Microcontrolador PIC

PSI2662 Projeto em Sistemas Eletrônicos Embarcados: Sensores e Atuadores. Apresentação do Kit Freescale Freedom FDRM-KL25Z e Portas de Entrada e Saída

Kit de desenvolvimento ACEPIC Light

MODEM GPRS. Manual de utilização V1.5 junho de Conversor GPRS para RS232/RS485. Principais características

Sistemas Embutidos Prática. Prof. Marcos Augusto Menezes DCC/ /UFMG

Programação em Linguagem C

Kit Teclado TS 4x4 v1..0 Manual do usuário

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

RVC MANUAL POSICIONADOR DE VÁLVULAS MOD. RVC420 R1. Indústria e Comércio de Atuadores RVC Eireli EPP. Dê Preferência aos produtos Fabricados no Brasil

Botão de Pânico Supervisionado MANUAL DE OPERAÇÃO

DISPLAY LCD. Ilton L. Barbacena Claudio Afonso Fleury

Hardware. 5- Faça o fluxograma para efectuar o debounced de uma tecla por temporização(20ms). Implemente uma rotina para a leitura da tecla.

Projeto No. 10 Relógio com LCD

Arduino Lab 07 Leitura de temperatura e indicação em um display GLCD de

Trabalho Prático Nº3 Porta Paralela

MANUAL DO KIT FPGA EE02-SOQ

ELE Microprocessadores I

Interface com Teclas, Leds e Teclados Matriciais. Prof. Adilson Gonzaga

Sumário. 1. Apresentação Hardware Microcontrolador PIC16F628A Displays de 7 segmentos Teclas...

BANKSEL ADCON1 clrf ADCON1 bsf ADCON1,ADFM ; seta AD para VCC, GND e entradas analogicas, setando o bit ADFM configura como justificado a direita

IPD de Pavimento BT.Elev2 Manual do usuário

Copyright 2014 VW Soluções

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

DESCRIÇÃO DA PORTA PARALELA DA IMPRESSORA

Cerne. Conhecimento para o Desenvolvimento. Cerne Tecnologia e Treinamento

MSP430 - Arquitertura

CPM800S. Manual do Usuário

Introdução do Arduino para aquisição de dados e controle de instrumentos

MICROPROCESSADORES E MICROCONTROLADORES Parte 3 Microcontrolador 8051

Capítulo 14. Expandindo as portas de comunicação 8031 com a PPI Interface PPI 8255

07/06/2015. Outras características importantes em Microprocessadores/Microcontroladores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Application Note FBEE Controle de Placas com entradas Analógicas REV01. 1 Rev01

Programação Básica em Arduino Aula 2

Cerne Tecnologia e Treinamento

ezap 900 Controlador Lógico Programável ezap900/901 Diagrama esquemático Apresentação Módulo ZMB900 - Características Gerais Dados Técnicos

Controlador Lógico Programável

Transcrição:

Teclado Matricial Curso Técnico de Nível Médio Integrado Eletrônica - 8o Período Disciplina de Microcontroladores 2 (EL08D) 1º Sem 2016 Professor Gabriel Kovalhuk Email: kovalhuk@utfpr.edu.br Página pessoal: http://paginapessoal.utfpr.edu.br/kovalhuk

Rotinas de debounce Rotinas de debounce (As informações desta seção foram retiradas do site: https://www.embarcados.com.br/leitura-de-chaves-debounce/ em 02/04/2017)

Rotinas de debounce Um dos métodos mais simples de entrar com informações em sistemas digitais são as chaves, ou teclas, mecânicas; Figura 1. Exemplo de uso de uma chave simples para entrada de dados em sistemas digitais Fonte: http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted

Rotinas de debounce Porém, estas chaves apresentam o problema de repique, comumente chamadas de bounce; Isto é interpretado pelo processador como se a chave tivesse sido pressionada diversas vezes; Figura 2. exemplo do efeito de repique numa chave simples Fonte: http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted

Rotinas de debounce Uma solução, por hardware, é colocar um capacitor em paralelo com a chave; Isto faz com que o tempo, na carga, do capacitor, diminua o efeito do repique; Figura 3. circuito para diminuir o efeito do repique Fonte: http://www.ikalogic.com/debouncing.php - Ibrahim Kamal Fonte: http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted

Rotinas de debounce outra solução e fazer o debounce por software; Existem diversas técnicas de debounce por software; Uma delas consiste em fazer a leitura da chave por um número determinado de vezes e verificar se o pino alcançou a estabilidade; O número de vezes que o estado da chave será verificado depende do clock do processador e do tempo que ocorre o repique (uns 130us no caso da figura 2)

Rotinas de debounce char letecla() { tecla = pino; // obtem o valor atual do pino onde esta a chave while(tecla == pino); // espera por uma mudança de estado // no pino, isto pode ser que a chave foi // pressionada ou que a chave foi solta } // quando houve uma mudanca de estado no pino, espera estabilizar tecla = pino; tempo = 22; while(tempo > 0) { if(tecla == pino) tempo ; else { tecla = pino; tempo = 22; } } return tecla; // define o tempo de espera para // alcancar a estabilidade // se nao houve mudanca, // decrementa a contagem de tempo // se houve mudanca, // reinicia o processo

Rotinas de debounce Exercício 1: Implementar a rotina de debounce por software para o pino P1.3 e P1.4 da launchpad: 1) Colocar um jumper entre os pinos P1.3 e P1.4. Com isto o botão da placa poderá ser lido pelos dois pinos do MSP430; 2) Fazer a rotina de debounce para o pino P1.3 e fazer com que está informação controle o led vermelho; 3) Controlar o led verde pelo pino P1.4, sem a rotina de debounce;

Teclado Matricial Teclado Matricial

Teclado Matricial Teclado: conjunta de teclas (chaves) para entrada de dados em sistemas microprocessados; Para poucas teclas, pode-se usar diretamente os pinos de GPIO do microcontrolador; A medida que a quantidade de teclas aumenta, o microcontrolador pode não ter mais pinos suficientes para cada chave; Solução: usar multiplexação. Uma maneira muito usual de implementar a multiplexação são os teclados matriciais; O número de teclas é dado por: Teclas=(Números de Pinos /2)^2

Teclado Matricial C D E F R1 Pull-up P1.0 P1.1 P1.2 P1.3 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 P1.5 P1.6 P1.7

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 0 P1.5 1 P1.6 1 P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 0 P1.6 1 P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 1 P1.6 0 P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 1 P1.6 1 P1.7 0

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 1 P1.6 1 Tecla 9 Pressionada P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 0 P1.5 1 P1.6 1 Coluna 1 Ativada (em nível 0) P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 0 P1.5 1 P1.6 1 P1.7 1 Como não é a coluna da chave pressionada, todas as linhas (entradas) estão em nível lógico 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 1 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 0 P1.6 1 Coluna 2 Ativada (em nível 0) P1.7 1

Teclado Matricial C D E F R1 Pull-up P1.0 == 1 P1.1 == 0 P1.2 == 1 P1.3 == 1 8 9 A B 4 5 6 7 0 1 2 3 R2 Pull-up R3 Pull-up R4 Pull-up Vcc P1.4 1 P1.5 0 P1.6 1 P1.7 1 Como é a coluna da chave pressionada, a linha 2 está em nível lógico 0

Sabendo-se que é a coluna 2 e linha 2, sabemos que a tecla 9 foi pressionada. Uma vez encontrada a tecla, pode-se terminar a varredura. Neste caso apenas uma tecla será encontrada para cada varredura. Se for necessário, pode-se continuara a varredura para verificar se não existem duas ou mais teclas pressionadas simultaneamente. Teclado Matricial Para fazer uma rotina de debounce, é aconselhável ler todas as quatro entradas simultaneamente e aplicar a rotina de debounce sobre estas quatro entradas.

Display LCD Display LCD

LCD Display de Cristal Líquido; Dispositivo de saída, usado para mostrar informações do sistema; Os LCDs inteligentes possuem um controlador, que recebe as informações do sistema, processa e aciona os segmentos dos displays; Display LCD Os controladores mais comuns usam o padrão Hitachi HD44780; Estes LCDs podem ter diferentes configurações de caracteres, sendo as mais populares 16x2 (16 caracteres em duas linhas) e 20x4 (20 caracteres em 4 linhas);

Display LCD

A - Anode (backlight) K Cathode (backlight) Vo - Contraste RS Register Select RW- Read/Write E - Enable DB0 Data Bus 0 DB1 Data Bus 1 DB2 Data Bus 2 DB3 Data Bus 3 DB4 Data Bus 4 DB5 Data Bus 5 DB6 Data Bus 6 DB7 Data Bus 7 Pinagem Display LCD 14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15 Vss - GND VDD - Vcc

A pinagem consiste em: 8 pinos de dados: realiza a comunicação entre o microcontrolador e o display. Pode ser configurado para operar com 4 bit ou com 8 bits; 3 pinos de controle: E (Enable): habilita a transferência de dados entre o microcontrolador e o LCD; R/W (Read/Write): seleciona uma operação de leitura ou de escrita no LCD; Display LCD RS (Register Select): define se o dado transferido é um caracter (em código ASCII) ou um comando;

Display LCD 2 pinos de alimentação; 1 pino para ajuste do contraste do LCD: ajusta o contraste do LCD; 2 pinos para alimentação da luz de fundo (backlight);

Display LCD Os três pinos de controle permitem a seguinte combinação de operações: E RS R/W Operação 0 0 0 Nenhuma operação 1 0 0 Escrita de comando 1 0 1 Leitura de status 1 1 0 Escrita de caracter 1 1 1 Leitura de caracter

Configuração e Operação Como o LCD é um dispositivo muito lento, é necessário gerar períodos de espera entre um comando e outro. Normalmente um tempo de ~5ms é suficiente para os vários tipos de displays; A configuração inicial do LCD define o seu modo de operação, como por exemplo, se o barramento de dados será de 4 ou de 8 bits; A configuração é feita enviando comandos ao LCD. Neste caso o pino RS deve estar em nível lógico 0 (zero), assim como opino R/W. Display LCD

Display LCD Exemplo de utilização com o MSP430G2553 +3,3v* Vcc MSP430 Vss P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 LCD_EN LCD_RS LCD_D4 LCD_D5 LCD_D6 LCD_D8 Deixar R/W sempre em 0 Deixar D0 a D3 em aberto +5v* 10k +5v* 100nF *Atenção: Não ligar o Vcc do MSP ao Vcc do Display Lembrar de ligar todos os GNDs juntos

Display LCD Definições dos pinos usados nas funções #define LCD_EN BIT2 #define LCD_RS BIT3 #define LCD_D4 BIT4 #define LCD_D5 BIT5 #define LCD_D6 BIT6 #define LCD_D7 BIT7 #define LCD_BUS P2OUT #define LCD_DIR P2DIR

Display LCD Função de Configuração para barramento de 4 bits void lcd_init() { LCD_DIR = LCD_EN + LCD_RS + LCD_D7 + LCD_D6 + LCD_D5 + LCD_D4); // configura os pinos de saida de P1 que irao se // comunicar com o LCD LCD_BUS &= ~LCD_RS; // coloca display em modo de comando for(int i=0;i<3;i++) { delay_cycles(15000); // espera lcd LCD_BUS &= 0x0F; LCD_BUS = 0x30; // envia comando de configuração LCD_BUS = LCD_EN; // envia pulso de enable LCD_BUS &= ~LCD_EN; } lcd_cmd(0x28); // configura barramento de dados de 4 bits, // e habilita 2 linhas do LCD lcd_cmd(0x0c); // torna o cursor visivel lcd_cmd(0x01); // limpa o LCD lcd_cmd(0x06); //habilita o modo de auto incremento do cursor }

Display LCD Função enviar um comando para o display void lcd_cmd(unsigned char cmd) { LCD_BUS &= ~LCD_RS; // coloca LCD em modo de comando delay_cycles(500); // espera 50us LCD_BUS &= 0x0F; // zera a parte mais significativa de // LCD_DATA (P2OUT) LCD_BUS = (cmd & 0xF0); // envia a parte alta do comando LCD_BUS = LCD_EN; // gera pulso para LCD LCD_BUS &= ~LCD_EN; LCD_BUS &= 0x0F; // zera a parte mais significativa de // LCD_DATA (P2OUT) LCD_BUS = (cmd << 4); // envia a parte baixa do comando LCD_BUS = LCD_EN; // gera pulso para LCD LCD_BUS &= ~LCD_EN; }

Display LCD Função enviar um caracter para o display void lcd_putch(unsigned char ch) { LCD_BUS = LCD_RS; // coloca LCD em modo de dados delay_cycles(500); // espera 50us LCD_BUS &= 0x0F; // zera a parte mais significativa de // LCD_DATA (P1OUT) LCD_BUS = (ch & 0xF0); // envia a parte alta do comando LCD_BUS = LCD_EN; // gera pulso para LCD LCD_BUS &= ~LCD_EN; LCD_BUS &= 0x0F; // zera a parte mais significativa de // LCD_DATA (P1OUT) LCD_BUS = (ch << 4); // envia a parte baixa do comando LCD_BUS = LCD_EN; // gera pulso para LCD LCD_BUS &= ~LCD_EN; }

Display LCD Alguns Comandos básicos do LCD: Comando de configuração: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 DL N F x x DL = no de bits do barramento: DL = 0 4 bits; DL = 1 8 bits; N = nº de linhas a serem usadas no LCD: N = 0 1 linha; N = 1 2 linhas; F = configuração da matriz de caracteres: F = 0 5x7 pixels; F = 1 5x10 pixels;

Display LCD Comando de controle do display: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 D C B D: define o estado do display: D = 0 desativado (o conteúdo da memória não é apagado); D = 1 ativado; C: define se o cursor aparece ou não no display: C = 0 cursor não aparece; C = 1 cursor aparece; B: define se o cursor pisca ou não: B = 0 cursor não pisca; B = 1 cursor pisca;

Display LCD Comando para limpar o display: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1

Display LCD Comando para posicionar o cursor: Cada caracter possui um endereço (de memória RAM) específico; Estes endereços são mostrados abaixo para um display 16x2: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F Para um display de 20x4 caracteres temos os seguintes endereços: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 Para posicionar o cursor, usa-se o seguinte comando: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 a a a a a a a Onde aaaaaaa é o endereço do caracter conforme as tabelas acima.

Display LCD Comando de configuração do modo de entrada: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 I/D S I/D: incrementa ou decrementa o endereço da RAM interna (do LCD): I/D = 0 decrementa; I/D = 1 incrementa; S: controla o deslocamento dos caracteres no display: S = 0 os caracteres não se deslocam; S = 1 os caracteres se deslocam para a direita, se I/D=0 ou para a esquerda, se I/D=1;

Display LCD