Posts com Tag ‘Display’

Modulo LCD_cor

Introdução

Módulos de display LCD de caracteres alfanuméricos são interfaces de comunicação visual muito úteis e atraentes. Eles se encontram em quase todos os aparelhos domésticos, eletroeletrônicos, automóveis, instrumentos de medição etc. São dispositivos que possuem interfaces elétricas padronizadas e recursos internos gráficos e de software que permitem facilmente a permuta por outros de outros fabricantes, sem que seja necessário alterar o programa de aplicação. Por ser altamente padronizado seu custo é baixo. É um recurso antigo, deve ter uns vinte anos de idade ou mais, mas continua atual, com suas inúmeras formas, cores, tamanhos e preços. A tecnologia predominante continua sendo o LCD (Liquid Crystal Display), porém já se pode encontrar alguns baseados em LEDs orgânicos (OLED).

O módulo de display LCD representa um avanço tecnológico enorme se comparado com os primeiros displays a LED de 7, 14 ou 16 segmentos. Leia mais sobre os displays a LED no artigo técnico Displays de LED de 7 segmentos [1].

 .

Especificações

Os módulos LCD são especificados principalmente por sua capacidade gráfica de comunicação, ou seja, o número de caracteres por linha e o número de linhas. Alguns valores típicos para essas especificações são:

Número de caracteres: 8, 12, 16, 20, 24 e 40

Número de linhas: 1, 2 e 4

.

Algumas configurações típicas de um módulo de display LCD

.

 

Módulo 20x1 a

Figura 1: Módulo LCD 20 x 1

.

Módulo 40 x 4 a

Figura 2: Módulo LCD 40 x 4

.

Outras especificações importantes que devemos considerar são as dimensões físicas do módulo, a tensão de alimentação, a disposição física dos pontos de conexão externa, a posição desses pontos de conexão com relação ao display, dos lados esquerdo ou direito, em cima ou embaixo, o tipo de interface eletrônica, paralela (predominante) ou serial, backlight (luz de fundo)  e finalmente o controlador do display.

Quando se consulta o manual de um módulo de display LCD, em geral se obtém apenas uma página contendo as dimensões e especificações elétricas. Isso pode parecer pouco mas é mais do que o suficiente. Observe na Figura 3 as especificações  do módulo retratado na Figura 1.

Winstar

Figura 3: Especificações do módulo Winstar modelo WH2001B [6]

.

Interface de conexão externa

A interface de conexão com um microcontrolador também é padronizada. Ela tem de 14 a 16 pinos, dependendo se o módulo tem ou não backlight para permitir a leitura do display em ambientes escuros. Na Tabela 1 se pode observar a descrição dos pinos.

.

Tabela 1: Descrição dos pinos da interface de conexão

Pinos

.

Repare que o pino 3 foi reservado para ajustar o contraste do display. Isso permite que você ajuste esse contraste para a melhor visibilidade do texto. Na Figura 4 se pode observar um circuito simples para essa função.

LCD_VO

Figura 4: Circuito simples para o ajuste de contraste

.

O contraste muitas vezes varia em função da temperatura ambiente. Para isso pode-se utilizar o circuito ilustrado na Figura 5, por exemplo, que compensa essa variação.

LCD_VO_2

Figura 5: Ajuste de contraste com compensação de temperatura

.

Se for utilizado o backlight é necessário providenciar as conexões e dimensionar corretamente o resistor para limitar a corrente nos LEDs. Nas especificações do módulo WH2001B (Figura 6), se pode observar que a corrente típica dos LEDs de backlight (IF) é de 60 mA e a máxima de 75 mA com tensões diretas (VF) correspondentes respectivamente a 3,5 e 3,6V.

ATENÇÃO:Nunca ligue a fonte de alimentação diretamente nos terminais de backlight. Isto provocará o aquecimento excessivo do display e a queima prematura do módulo.

Especificações

Figura 6: Características elétricas do módulo WH2001B

.

A Figura 7 ilustra um circuito típico para ativar o backlight. Utilizando os dados da Figura 6, podemos calcular o resistor de limitação de corrente.

Backlight

Figura 7: Conexões típicas do backlight

.

Rlimit = (5 – 3,5)V / 60mA = 25 Ohms      (Pode-se utilizar os valores comerciais de 22 ou 27 Ohms 5%)

Quando for projetada a conexão do módulo com um microprocessador, é sempre bom lembrar que o operação do módulo LCD é relativamente lenta, se comparada com a de um microcontrolador. Na Figura 8 se pode observar os diagramas de tempos de leitura e escrita da interface com o microcontrolador. É muito importante que se estude esses diagramas e que sejam respeitados os tempos especificados nesses diagramas.

LCD_Write

LCD_Read

Figura 8: Diagramas de tempo típicos para a leitura e a escrita dos módulos LCD

.

Uma boa maneira de se verificar se o módulo está pronto para um novo acesso é testar o busyflag (bit de sinalização de ocupado). Para acessar esse flag, deve-se acionar os bits de controle RS = 0 e R/W = 1 (Read) e o flag poderá ser lido em DB7. Deve-se esperar o término das operações internas enquanto DB7 estiver em 1. Os detalhes você pode ler no manual do controlador.

.

Controladores de display  LCD

No intuito de manter a padronização e compatibilidade entre os módulos de display de diversos fabricantes, adotou-se no início que o componente da Samsung –  KS0066 [2] seria o padrão para esse tipo de módulo. É muito comum encontrarmos especificações de controladores como compatíveis com o KS0066. Outros controladores compatíveis: Samsung S6A0069 [3], Sitronix – ST 7066 [4] e Hitachi – HD44780 [5].  O HD44780 atualmente é o mais utilizado.

Quando se compra um módulo de display LCD é interessante se saber qual é o controlador que é utilizado nesse módulo. Os recursos oferecidos pelos controladores variam um pouco além dos recursos básicos comuns para todos. Alguns recursos comuns são a interface com um microcontrolador configurável para 4 ou 8 bits, memória ROM interna com os gráficos correspondentes a cada caractere disponível, opções de Fonts para os caracteres, entre outros. Na Figura 9 se pode observar como é formado graficamente o caractere “A”, numa matriz de pontos (pixels), onde os 1s indicam pixels acesos e os 0s, os pixels apagados.

Letra_A

Figura 9: Caractere “A” numa matriz de pixels (8 x 5)

.

A seguir serão mostrados os comandos ou instruções que podem ser utilizados nos módulos. O código dessas instruções também é padronizado. Serve para a maioria dos módulos. Veja a Tabela 2.

Tabela 2: Instruções de um módulo LCD

Tabela 2A

.

Um outro aspecto importante na utilização do módulo é respeitar a sequência de inicialização, após a energização do módulo. As especificações do controlador fixam o seguinte fluxo (Figura 10).

Sequencia Ligamento

Figura 10: Sequência de inicialização para operação em 8 bits

.

Observe que na inicialização existem situações em que não é possível testar o busy-flag, porém é necessário esperar no mínimo o tempo especificado para que o controlador esteja pronto para receber mais um comando.

Depois e inicializado, o módulo pode receber caracteres para serem apresentados no display. Para isso, basta transferi-los de forma adequada para o endereço interno ao controlador correspondente ao da DDRAM (Display Data RAM). O endereço inicial da primeira linha é 0x00, o da segunda é 0x40 etc. Os caracteres deverão estar codificados em ASCII. Simples, não?

.

Exemplo

A seguir serão apresentados alguns trechos de código desenvolvidos no MPLAB e o compilador C30 da Microchip, para um dsPIC32. Os dados de 8 bits para o display LCD foram conectados ao Port D e os demais sinais em outro Port. O módulo do display utilizado é um módulo no padrão 16 x 2. A seguir se pode observar a definição de diversas constantes e parâmetros para o módulo LCD.

Observação: Como o código está escrito em linguagem C, é muito fácil adaptá-lo para qualquer outro microcontrolador.

Definicoes 1Definicoes 2

A seguir, se pode observar as rotinas que acessam o módulo propriamente dito. Uma rotina que escreve um caractere e outra que escreve uma frase. Observe que na rotina que escreve um caractere é utilizado um temporizador (T4) para realizar as temporizações necessárias.

.

Rotina Escreve no Display LCD

Rotina_1

Rotina_1a

Rotina_1b

 .

Rotina Escreve uma frase

Escreve_LCD

.

O próximo trecho é inserido no programa principal na parte de inicializações.

Inicializacoes

Se você quiser se aprofundar um pouco mais nesse assunto, sugiro que você leia o artigo técnico Display LCD [7] de Ilton L. Barbacena e Claudio Afonso Fleury.

 .

Referências

 

[1] https://consulteengenheiroeletronico.wordpress.com/2014/10/24/displays-de-led-de-7-segmentos/

[2] http://www.datasheetarchive.com/dlmain/Datasheets-29/DSA-570765.pdf

[3] http://pdf1.alldatasheet.com/datasheet-pdf/view/37838/SAMSUNG/S6A0069.html

[4] http://pdf1.alldatasheet.com/datasheet-pdf/view/325981/SITRONIX/ST7066U.html

[5] http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780.html

[6] http://www.winstar.com.tw/download.php?ProID=134

[7] ftp://ftp.dca.fee.unicamp.br/pub/docs/ea079/complementos/Lcd.pdf

Embarcados_a-660x205

Introdução

Displays de LED de 7 segmentos foram largamente utilizados como elementos de comunicação visual em painéis, instrumentos etc.  A vantagem de se utilizar esse tipo de componente é que  a disposição dos segmentos de LEDs, os tamanhos dos displays e a disposição e numeração dos pinos é na sua maioria padronizada, permitindo assim que se utilize displays de múltiplos fabricantes, sem prejuízos. São intercambiáveis.

O que são Displays de LED de 7 segmentos?

Na Figura 1 pode-se observar um exemplo típico de display de 7 segmentos e os detalhes de sua arquitetura interna. Com os sete segmentos de LED é possível representar números de 0 a 9 e algumas letras rudimentares.

Display 7 segmentos novo  125px-Seven_segment_display-animated

Figura 1: Display de 7 segmentos com detalhes internos e simulação de operação

Note que os segmentos são identificados por letras de “a” a “g” e o ponto decimal como “dp”. A organização interna dos displays de 7 segmentos pode ser na forma de catodo comum, ou anodo comum, conforme ilustrado na Figura 1. Essa arquitetura facilita o projeto dos circuitos de acionamento desses displays. Os detalhes desses circuitos serão mostrados mais adiante. Para formar um dígito é necessário acender os segmentos correspondentes. Veja as sequências listadas a seguir para a formação dos números e caracteres mais comuns:

  • 0 (Zero) – a, b, c, d, e, f
  • 1 (Um) – b, c
  • 2 (dois) – a, b, d, e, g
  • 3 (três) – a, b, c, d, g
  • 4 (quatro) – b, c, f, g
  • 5 (cinco) – a, c, d, f, g
  • 6 (seis) – a, c, d, e, f, g
  • 7 (sete) – a, b, c
  • 8 (oito) – a, b, c, d, e, f, g (todos)
  • 9 (nove) – a, b, c, f, g
  • A (maiúsculo) – a, b, c, e, f, g
  • B (minúsculo) – c, d, e, f, g
  • C (maiúsculo) – a, d, e, f
  • D (minúsculo) – b, c, d, e, g
  • E (maiúsculo) – a, d, e, f, g
  • F (maiúsculo) – a, e, f, g

Se você observar a simulação de operação de um display de 7 segmentos, como mostrado na Figura 1, poderá perceber que as letras formadas nesse tipo de display deixam muito a desejar. Para melhorar isso, foram criados os displays de 16 segmentos ou alfanuméricos, que já permitem representar de forma razoavelmente boa todas as letras do alfabeto. Os displays alfanuméricos serão apresentados resumidamente no final.

 Os circuitos que serão apresentados mais adiante, foram desenvolvidos para displays de 7 segmentos, mas podem ser facilmente adaptados para os displays alfanuméricos.

 .

Como acionar um display de 7 segmentos

Os circuitos para o acionamento dos displays de 7 segmentos são simples. É necessário ter um elemento de habilitação para permitir o fluxo de energia através dos LEDs, resistores para limitar a corrente em cada LED e assegurar que o brilho seja o suficiente, e um seletor de segmentos, que determina quais os segmentos que deverão ser ligados. Na Figura 2 estão ilustrados esses elementos de forma simplificada.

Aciona_Display1a

Figura 2: Configuração típica para acionamento de um display de 7 segmentos de anodo comum

 Dependendo da sua solução, do circuito lógico ou microcontrolador que você for utilizar, pode-se dispensar a utilização de Q1 e do seletor de segmentos. Porém, é boa prática de projeto não ligar o display direto no microcontrolador, para protegê-lo contra eventuais falhas do display. O seletor de segmentos pode ser implementado com um array de transistores, como por exemplo o uln2003 [1] ou uln2004 [2].

 Para exemplificar o cálculo de alguns parâmetros desse circuito, vamos supor que será utilizado o display da Kingbright de código SA36-11CGKWA [3].

 Do datasheet do display, temos as seguintes informações:

  • Vf = 2,1V (típico) , para If = 20 mA;
  • Máxima corrente If = 30 mAcc;
  • Corrente de Pico = 150 mA, com duty cycle de 1/10 e largura de pulso de 100 ms.

 Devemos tomar alguns cuidados na hora de dimensionar os elementos de acionamento do display:

  • O transistor Q1 deverá suportar no pior caso 8 x If;
  • R = (Vcc – Vf + VceQ1) / If, se desprezarmos a queda no seletor.

 Se Vcc = 5 Vcc, If = 10 mA, e Vce = -0,2V temos:

====> IcQ1 = 8 x 10 mA = 80 mA;

====> R = (5 – 2,1 – 0,2)V/ 10 mA = 270 Ohms.

Na Figura 2 pode-se observar que o circuito de acionamento de um único display de 7 segmentos é bastante simples e fácil de se conectar o circuito a um microcontrolador. E se necessitarmos de mais displays para formar números com mais dígitos?

Como acionar um arranjo com vários displays de 7 segmentos?

Se quisermos mostrar, por exemplo, 4 dígitos num arranjo de displays de 7 segmentos e utilizarmos a solução mostrada na Figura 2, serão necessários pelo menos 32 bits para acionar os quatro dígitos e eventualmente mais 4 linhas de habilitação individual para cada display. Esse arranjo provavelmente inviabilizaria o seu projeto, especialmente se for utilizar microcontroladores de 8 bits. Então… Como resolver esse problema?

A saída para esse problema é utilizar uma configuração multiplexada de acionamento dos displays. Essa solução se aproveita do fato dos nossos olhos, por natureza, reterem a percepção do brilho do LED por algum tempo, de forma que não se percebe uma descontinuidade de brilho se a frequência do chaveamento for alta o suficiente para isso. É o mesmo efeito que nos permite assistir a filmes, onde os quadros do filme são “piscados” numa frequência de 24 vezes por segundo para criar a ilusão de movimento contínuo. Na Figura 3 é mostrado um arranjo desse tipo.

Aciona_Display_multiplos

Figura 3: Circuito para acionamento multiplexado dos displays

Com o arranjo mostrado na Figura 3, acrescentar mais um dígito implica em acrescentar apenas mais um bit para a seleção do display adicional. O barramento para acionamento dos segmentos é compartilhado.

Como calcular os elementos desse circuito? Bem… Neste arranjo devemos considerar mais dois parâmetros: Frequência de multiplexação e número de displays, o que nos dá uma razão entre o período em que o display está ligado e o período em que ele está desligado. No nosso exemplo, essa razão é de 1/4 ou 25% (duty cycle). A frequência de multiplexação deverá ser adotada com valor acima de 24 Hz, por exemplo 30 Hz, para  que os nossos olhos não percebam a cintilação. Outro ponto a considerar, é que a corrente média no display diminui conforme diminui o duty cycle, causando uma diminuição no brilho percebido do display. Assim, para aumentar o brilho, devemos recalcular os resistores de limitação de corrente. Uma boa aproximação, é utilizar o parâmetro de corrente de pico (150 mA, com duty cycle de 1/10) como valor limitante de máximo. Esse parâmetro nos indica como aceitável uma corrente média de 15 mA no período de multiplexação. Se o nosso duty cycle é de 1/4, e quisermos manter uma corrente média de 10 mA, a corrente durante o acionamento deverá assumir o valor de 40 mA e os resistores deverão assumir o seguinte valor:

R = (Vcc – Vf + VceQ1) / If, se desprezarmos a queda no seletor. Ou seja,

R = (5 – 2,1 – 0,2) /40 mA = 67,5 Ohms ou então 68 Ohms (valor comercial para resistores de 5%)

A percepção do brilho do display é bastante subjetiva. Nos cálculos acima, foi realizada a suposição de que o brilho e os demais parâmetros do display variam de forma linear, o que não é exatamente verdadeiro, mas pode ser aproximado dessa forma. No final das contas, sempre será necessário visualmente realizar pequenos ajustes nos valores calculados.

Há mais um detalhe importante que devemos considerar para que o circuito apresentado na Figura 3 funcione corretamente: a dinâmica de acionamento dos displays. Essa dinâmica está ilustrada na Figura 4.

  Diagrama de tempos

Figura 4: Diagrama de tempos referente à multiplexação dos displays

Para evitar um fenômeno conhecido como “vazamento” ou “transbordo” de dígito é necessário desligar o display antes de preparar o barramento de dados para o próximo dígito, e só depois atualizar o barramento e ligar o próximo dígito.

Displays alfanuméricos

Os displays de 16 segmentos ou alfanuméricos permitem representar os dígitos numéricos e, de forma razoavelmente boa, todas as letras do alfabeto. A organização interna típica de um display de 16 segmentos pode ser observada na Figura 5. O arranjo interno, tal como os displays de 7 segmentos, também pode ser de anodo comum ou catodo comum.

.

Display_16_Segmentos_a   Sixteen-segment_display_animated
Figura 5: Organização interna de display de LED de 16 segmentos e simulação de operação

Como acionar um display alfanumérico?

 Na comparação dos displays mostrados na Figura 1 e na Figura 5,  é possível constatar que a principal diferença do display de 7 segmentos e do alfanumérico é obviamente o número de segmentos de LEDs. Enquanto o primeiro tem 7 segmentos para formar os dígitos e mais um para ativar o ponto decimal, o segundo tem 16 segmentos mais o ponto decimal. Naturalmente o circuito de acionamento é mais complexo, especialmente quando se utilizam microcontroladores de 8 bits. Na Figura 5 pode-se observar essa complexidade.

Aciona_Display_16 segmentos

Figura 5: Acionamento de um display alfanumérico

O acionamento de um display alfanumérico, por sua complexidade, requer que seja realizadas algumas atividades adicionais de preparação antes que ele seja acionado. Supondo que seja utilizado um barramento de 8 bits, é necessário que se transfira a primeira metade da seleção dos segmentos dos displays para o primeiro seletor / driver, que deve obrigatoriamente possuir algum tipo de memória, 8 flip-flops por exemplo. Em seguida, transfere-se  a segunda metade da seleção para o barrramento e depois liga-se o display. A seleção do ponto decimal é feita por um bit adicional.

No caso da necessidade de se utilizar displays alfanuméricos em arranjos com vários dígitos / caracteres, também pode ser utilizada a solução de multiplexação mostrada na Figura 3, observadas as particularidades do acionamento para esse tipo de display.

Resumo

 Este artigo apresentou os display de LED de 7 segmentos e algumas formas mais comuns para utilizá-los. É importante conhecer e entender a multiplexação dos dígitos como solução prática e tradicional para prover o seu projeto de sinalização visual. Este artigo também serve de embasamento teórico para que se possa compreender melhor os arranjos e soluções desenvolvidas no próximo artigo técnico da série de Bibliotecas padronizadas em C para o MCS-51 sobre  Displays.

Referências

[1] Datasheet do componente TI ULN2003

[2] Datasheet do componente TI ULN2004

[3] Datasheet do componente KingBright SA36-11CGKWA

Licença Creative Commons
Esta obra, “Displays de LED de 7 segmentos“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.