Usando display LCD tipo 16x2

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

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

LCDs Inteligentes. LCD Inteligente. Gabriel Kovalhuk DAELN / UTFPR

EL08D - MICROCONTROLADORES

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

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

Usando Display Gráfico com C18 e C30

Módulo de Cristal Líquido LCD

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

Oxímetro Bluetooth e LCD 16 2 em Python

TERMÔMETRO COM O LM35 Parte I

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

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

Arduino Lab 05 Leitura e

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

Funções dos Microcontroladores Microcontroladores e Microprocessadores Especialização em Automação Industrial

Arduino Lab 08 Banco de teste para memória RAM HM6116 de 16k

Guia da Placa de desenvolvimento PD Mega16 N1

I2C PROTOCOLO DE COMUNICAÇÃO

Como utilizar o CI LM35 para ler Temperaturas com o PIC16F877A

KIT DE DESENVOLVIMENTO 8051 BASEADO NO AT89S8252 MANUAL DO UTILIZADOR. Rui Marcelino (Nov. 2005)

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

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

Controlador Lógico Programável

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

Comunicação USB com o PIC Vitor Amadeu Souza

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

Linguagem C Princípios Básicos (parte 1)

Projeto de Sistemas Eletrônicos

Experimento 6 Conversor analógico digital e comunicação serial

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

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Comunicação RC5 com o dspic Vitor Amadeu Souza

Métodos de Transmissão. Padrões RS

Lista de Exercícios 2

Arduino Lab 19 Leitura e datalogger de temperatura utilizando um termopar tipo K e o MAX6675

LÓGICA DE PROGRAMAÇÃO (C) VETORES E MATRIZES. Professor Carlos Muniz

O protocolo SPI. 1 - Introdução. 2 Ligação física

Lista de Exercícios 1

Por Fernando Koyanagi

MANUAL DO KIT FPGA EE02-SOQ

Conhecendo o PIC24 e o mikropascal

Arduino Lab 04 Leitura de temperatura com o sensor MCP9700

Matriz(vetor Multidimensional)

Programação: Vetores

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Trabalho Prático Nº3 Porta Paralela

Projeto No. 10 Relógio com LCD

APRESENTAÇÃO DO KIT CPLD_EE01

Display Torre. Índice

Sistemas Operacionais de Tempo Real - Teclados Matriciais

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Instrumentação Eletrônica

Manual do usuário - Kit DLS v4.0. Kit DLS v4.0 Display LCD serial Manual do usuário. Copyright VW Soluções

Copyright 2013 VW Soluções

Introdução à Programação

LINGUAGEM C PARA O 8051

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

ALGORITMOS, ARQUITETURA E ARDUINO

Algoritmos e Programação

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

Programação I A Linguagem C. Prof. Carlos Alberto

Matriz Vídeo Componente & Áudio Estéreo & RS x 8 TRANSCORTEC STATUS OUTPUT 2 INPUT

SISTEMAS DIGITAIS LETI, LEE Ano lectivo de 2015/2016 Trabalho 4 Módulos Sequenciais: Contadores e Registos

Microcontroladores: Programação em C

Anatomia do Arduino Bootloader

Comunicação Serial 1

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.

INF 1007 Programação II Semestre 09.2

Suporta os microcontroladores: R. Leonardo da Vinci, Campinas/SP CEP F.: (19) Kit de Desenvolvimento ACEPIC 28

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Prof. Adilson Gonzaga

DGA21 SISTEMA FIXO COM SUPERVISÓRIO PARA DETECÇÃO DE GASES NOCIVOS E AMÔNIA IP 65. Manual

Roteiro de Comunicação Raspberry Arduino/ESP8266 com I2C

INTRODUÇÃO A LINGUAGEM C

Laboratório Usando Wireshark para Examinar Quadros Ethernet

Copyright 2011 VW Soluções

Professor Marcelo Josué Telles Porta LPT, programação, componentes eletrônicos, sistema binário...

INTRODUÇÃO: MICROCONTROLADORES

Atualização Técnica e Pedagógica de Professores no componente de Lógica de Programação com C# (console) Semana 4 Vetor e Matriz

Disciplina de Algoritmos e Programação

LINGUAGEM C PARA O 8051

Apostila de introdução ao Tinkercad (antigo Circuits.io)

Transcrição:

Prática 4: 4.1 Introdução e objetivos Usando display LCD tipo 16x2 Frequentemente, o PIC recebe algum tipo de dado e faz algum tipo de tratamento neste dado (segundo sua programação) e depois deve exibi-lo ao seu usuário através de algum tipo de interface. Há várias dispositivos diferentes que podem fazer esta tarefa; contudo o display 16x2 é uma das formas mais comuns de se mostrar, através de texto, ao usuário alguma informação. A Figura 5.1 ilustra um exemplo deste tipo de display que comporta 16 caracteres por cada uma de suas duas linhas. Sua vantagem é seu custo que é relativamente barato e sua relativa facilidade de uso que são ao microcontrolador a capacidade de exibir letras e números para seu usuário. Figura 5.1 - Ilustração de um display 16x2. Deste modo, o objetivo desta prática é ilustrar como o display 16x2 pode ser usado com uma biblioteca de comunicação para este tipo de dispositivo e demonstrar como se trabalha com este dispositivo para exibir texto e números. O display 16x2 é ensinado neste capítulo pois ele também deverá ser usado em práticas futuras para enriquecer a aplicação e ilustrar valores e textos de interação com o usuário. Por este motivo, o entendimento desta prática é fundamental. 4.2 Funcionamento do display 16x2 A Figura 5.2a ilustra o padrão de pinagem do display 16x2. Este padrão pode as vezes ser encontrado na ordem sequencial, o que facilita seu manuseio. Contudo, é também comum encontra-lo na ordem ilustrada na Figura 5.2a que não é sequencial. Geralmente, os números que indicam a ordem é indica na cor branca na placa que dá suporte ao display e o usuário deve tomar muito cuidado na hora de montar o circuito e obedecer fielmente esta referência e os mapas de pinos ilustrados na Figura 5.2b. A função destes pinos é padronizada e deve ser obedecida. Fique atento aos pinos 1 (terra) e 2 (alimentação +5V) que não podem ser ligados invertidos e nem podem receber uma tensão acima de 5v pois podem danificar permanentemente o display. 16

(a) (b) Figura 5.2 - (a) Arranjo dos pinos do display 16x2 visto em ordem não-sequencial. (b) Na tabela são indicados os pinos. Destaca-se também que em muitos casos o padrão de pinagem pode também ser sequencial. Consulte o datasheet do fabricante. Segundo a tabela da Figura 5.2b, o pino V0 é utilizado para controle de contraste dos caracteres exibidos e pode ser ligado a um potenciômetro de 10k ohms para controle do contraste. Os demais pinos são utilizados para uma lógica de controle onde o PIC envia códigos para que sejam exibidos caracteres neste display, Nesta lógica de controle, o pino RS (register select) é indicado para definir se o dado enviado para os pinos 7 a 14 tratam de um comando (Rs=0) ou se trata de um dado (Rs=1). O pino R/W muda o estado do LCD entre leitura (R/W=1) e escrita (R/W=0) pois o LCD permite que sejam lidos e escritos dados nele por possuir uma pequena memória RAM interna para guardar os dados a serem exibidos. É comum ver este pino ligado diretamente ao terra pois a operação de escrita na memória é a mais comum. O pino E (enable) indica em sua borda de descida que há um dado novo no barramento de dados que correspondem os pinos DB0 a DB7. Estes dados podem ser transmitidos com 8 bits de uma vez ou somente 4. Neste último caso, os dados são enviados por 2 pacotes de 4 bits cada. Por fim, os pinos A (anode) e K (katode) são usados para ligar a luz de fundo do display. Antes de exibir caracteres no display, é necessário inicializá-lo. Para isto deve ser criada uma rotina que deve, resumidamente, fazer: (i) esperar 15ms para que o display tenha sua energização garantida; (ii) enviar o código 0x30 e esperar pelo menos 5ms; (iii) repetir a operação anterior outras duas vezes; (iv) enviar um código indicando se a transmissão é de 8 ou 4 bits e o tipo de mapa de caracteres será usado. Este mapa de caracteres é armazenado em sua memória local e esperar por 40us. (v) enviar o comando de limpar a tela e posicionar o cursor na primeira linha da primeira coluna e esperar por 1,8ms; (vi) várias outras operações acontecem como o envio de comando de deslocamento automático do cursor. O display tem uma série de comandos de controle que podem ser consultados em uma literatura específica sobre o assunto. Neste roteiro estes detalhes do protocolo de comunicação entre microcontrolador e display não serão abordados pois será usada uma biblioteca de software que já implementa automaticamente esta 17

comunicação com seus códigos e suas restrições de tempo. O objetivo deste capítulo é utilizar o display 16x2 da forma correta ainda que não se conheça todas as complexidades deste dispositivo que são abstraídas pela biblioteca de software indicada aqui. 4.3 Aplicação Nesta aplicação, um visor 16x2 é ligado ao PIC para exibir o texto "X vale: " seguido de um valor inteiro de 2 dígitos que representa o conteúdo de uma variável inteira no PIC que é incrementada e reiniciada constantemente para que o display possa exibir constantemente estas variações. Como poderá ser constado, o display só aceita exibir caracteres. Assim, o conteúdo da variável inteira deve ser antes convertido para caractere para que possa ser exibida. Detalhes são tratados na sequência. 4.3.1 O circuito Para o exemplo de uso do display 16x2, monte o circuito da Figura 5.3. Destaca-se que a pinagem do display pode variar de modelo para modelo. Figura 5.3 - Circuito ilustrando a ligação do display 16x2 com o PIC 18F4550. 4.3.2 O código Para facilitar o uso do display, será usada uma biblioteca contida no arquivo "mod_lcd.c" (que pode ser encontrado no site da disciplina) para facilitar a comunicação com o display de tal forma que suas peculiaridades e códigos sejam invisíveis ao seu usuário que terá apenas a preocupação de enviar texto para o display. Antes de criar o firmware da prática, vá até a biblioteca "mod_lcd.c" (que pode ser obtida no site da disciplina) e em suas primeiras linhas, defina os pinos do PIC que serão ligados aos pinos do display conforme layout elétrico da Figura 5.3. O código da sequência ilustra como deve ficar esta parte do código para que ele seja compatível com as designações de pinos da Figura 5.3. Se o usuário desejar mudar alguns pinos no esquemático, ele também deve proceder com a correspondente mudança nesta parte do código do arquivo "mod_lcd.c". Neste exemplo, o pino lcd_enable (que segundo tabela da Figura 5.2b é o pino 6 do display) é segundo a Figura 5.3 ligado ao pino B3 (pino 36) do 18F4550. Analogias podem ser feitas aos outros pinos que são designados pelas linhas 2 a 8 do código 5.1. 18

Código 5.1 - Código parcial da biblioteca "mod_lcd.c" utilizada para enviar caracteres para exibição em display 16x2. 1 2 3 4 5 6 7 8 9 10 #ifndef lcd_enable #define lcd_enable pin_b3 // pino enable do LCD #define lcd_rs pin_b2 // pino rs do LCD #define lcd_rw pin_b1 // pino rw do LCD #define lcd_d4 pin_b4 // pino de dados d4 do LCD #define lcd_d5 pin_b5 // pino de dados d5 do LCD #define lcd_d6 pin_b6 // pino de dados d6 do LCD #define lcd_d7 pin_b7 // pino de dados d7 do LCD #endif... Uma vez tendo montado o circuito, analise o código da sequência onde é ilustrado o emprego da biblioteca de controle do display. Código 5.2 - Código da aplicação que emprega o display 16x2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include "main.h" #include <mod_lcd.c> #include <stdlib.h> void main() int x, tamanho; char texto[4]; int i;... lcd_ini(); x = 90; //inicializa em qq valor while(true) itoa(x,10, texto); tamanho = strlen(texto); for (i=0; i<tamanho;i++) lcd_pos_xy(i+1,1); lcd_escreve(texto[i]); if (x > 110) x = 90; x++; delay_ms(1000); Neste código, a variável x é inicializada com o valor 90 (linha 12). A cada 1 segundo (linha 26), a variável é incrementada (linha 25) e seu valor é exibido no display (linhas 20 e 21). Quando ela atinge o valor 110 (linha 23), ela é reiniciada (linha 24). Assim o display mostra uma contagem de 90 a 110. Ainda, nota-se que usamos a função "itoa" (linha 16) para converter os dígitos da variável inteira "x" em caracteres que serão armazenados no vetor "texto". Logo após a conversão, é estimado na linha 17 quantos caracteres tem a variável convertida em texto. Nota-se que a função "lcd_escreve" exibe somente 1 caractere por vez e por isto temos que varrer uma posição por vez do vetor texto. Esta tarefa é feita pelo laço da linha 18. Além disto, toda vez que for escrito um novo caractere, existe a necessidade de se indicar a posição deste caractere na 19

tela através da função lcd_pos_xy. Faz-se importante destacar que antes de exibir qualquer caractere no display, é necessário fazer sua inicialização e estabelecer uma comunicação inicial que no caso desta biblioteca é feita pela função lcd_ini (linha 11). Uma vez chamada esta função de inicialização, a tela já se encontra pronta para receber caracteres. 20