Índice:

LCD HD44780 de 3 fios por menos de 1 dólar: 5 etapas
LCD HD44780 de 3 fios por menos de 1 dólar: 5 etapas

Vídeo: LCD HD44780 de 3 fios por menos de 1 dólar: 5 etapas

Vídeo: LCD HD44780 de 3 fios por menos de 1 dólar: 5 etapas
Vídeo: Как работает символьный ЖК-дисплей | Часть 1 2024, Novembro
Anonim
LCD HD44780 de 3 fios por menos de 1 dólar
LCD HD44780 de 3 fios por menos de 1 dólar

Neste manual, aprenderemos como conectar um LCD baseado no chipset HD44780 ao barramento SPI e acioná-lo com apenas 3 fios por menos de $ 1. Embora eu me concentre no display alfanumérico HD44780 neste tutorial, o mesmo princípio funcionará praticamente da mesma forma para qualquer outro LCD que use um barramento de dados paralelo de 8 bits e pode ser facilmente adaptado para se adequar a monitores com barramentos de dados de 16 bits. Os visores alfanuméricos baseados em HD44780 (e compatíveis) estão geralmente disponíveis em configurações 16x2 (2 linhas consistindo em 16 caracteres) e 20x4, mas podem ser encontrados em muitos outros formatos. A tela mais 'complicada' seria uma tela de 40x4, esse tipo de tela é especial porque tem 2 controladores HD44780, um para as duas fileiras superiores e outro para as duas fileiras inferiores. Alguns LCDs gráficos também possuem dois controladores. Os LCDs HD44780 são ótimos, são muito baratos, legíveis e muito fáceis de trabalhar. Mas eles também têm algumas desvantagens, esses monitores ocupam muitos pinos de E / S quando conectados ao Arduino. Em projetos simples, isso não é uma preocupação, mas quando os projetos ficam grandes, com muito IO, ou quando certos pinos são necessários para coisas como uma leitura analógica ou PWM, o fato de esses LCDs exigirem um mínimo de 6 pinos pode se tornar um problema. Mas podemos resolver esse problema de uma forma barata e interessante.

Etapa 1: Obtendo os componentes

Usei TaydaElectronics para a maioria dos componentes que usei neste projeto. Você também pode obter essas peças no ebay, mas para facilitar o uso, vou vinculá-lo a Tayda. Shopping List2 - pacote 74HC595 DIP161 - Cabeçalho masculino genérico - 2 pinos. Isso não é necessário, usei-o como uma forma de desativar permanentemente a luz de fundo.3 - Capacitor de cerâmica - capacitância 0,1 µF; tensão 50V1 - Capacitor eletrolítico - capacitância 10µF; tensão 35V1 - Capacitor de cerâmica - capacitância 220pF; tensão 50V1 - NPN-Transistor - parte # PN2222A * 1 - 1k Ω Resistor1 - Potenciômetro Trimmer - resistência máxima 5kΩ1 - 470 Ω Resistor * Com um transistor NPN a luz de fundo permanecerá desligada até que seja ligada pelo software. Se você quiser ter a luz de fundo ligada por padrão, use um transistor do tipo PNP. No entanto, mudanças no código da biblioteca fornecida terão que ser feitas. O subtotal para esta lista é de US $ 0,744. O cabeçalho do pino também não é necessário, então você pode economizar 15 centavos ali e o subtotal será de $ 0,6.

Etapa 2: Conheça o seu hardware nº 1

Conheça o seu hardware # 1
Conheça o seu hardware # 1

Aqui está um pino padrão de um LCD HD44780, também é muito semelhante a alguns LCDs gráficos. O HD44780 pode funcionar em dois modos: 1. Modo de 4 bits, onde cada byte enviado ao LCD consiste em 2 partes de 4 bits. 2. modo de 8 bits, no qual nos concentraremos. O LCD possui 16 pinos no total, 3 pinos de controle e 8 pinos de dados: RS - Controla se queremos enviar um comando ou dados para o LCD. Onde 'alto' significa dados (um caractere) e 'baixo' significa um byte de comando. R / W - O controlador HD44780 permite que você leia de sua RAM. Quando este pino está 'alto', podemos ler os dados de seus pinos de dados. Quando está 'baixo', podemos gravar dados no LCD. Embora a opção de ler no LCD possa ser útil em alguns casos, não vamos examiná-la neste tutorial e simplesmente aterrar esse pino para garantir que esteja sempre no modo de gravação. E - E é o pino 'Ativar', este pino é alternado entre 'alto' e 'baixo' para gravar os dados em sua RAM e, eventualmente, exibi-los na tela. DB0-7 - Esses são os pinos de dados. No modo 4 bits usamos apenas 4 bits altos DB4-DB7, e no modo 8 bits todos eles são utilizados. VSS - Este é o pino terra. VCC - Este é o pino de alimentação, o LCD funciona com uma fonte de alimentação de 5V, podemos alimentá-lo facilmente com o pino de + 5 V do Arduino. Vo - Este é o pino que permite definir o nível de contraste para a tela, requer um potenciômetro, normalmente um potenciômetro de 5K Ohm é usado. LED + - Este é o fonte de alimentação para a luz de fundo. Alguns LCDs não vêm com luz de fundo e têm apenas 14 pinos. Na maioria dos casos, este pino também requer uma conexão de + 5 V. LED- - Este é o aterramento para a luz de fundo. ** É importante verificar a folha de dados dos monitores ou inspecionar sua placa de circuito impresso para verificar se há um resistor de luz de fundo, a maioria dos LCDs os terá construído -em, nesse caso, tudo o que você precisa fazer é aplicar energia ao LED + e aterrar ao LED-. Mas no caso do seu LCD não ter um resistor embutido para a luz de fundo, é importante que você adicione um, caso contrário, a luz de fundo consumirá muita energia e acabará queimando. Na maioria dos casos, a forma como este LCD é conectado ao Arduino é usando-o no modo de 4 bits e aterrando o pino R / W. Desta forma usamos os pinos RS, E e DB4-DB7. A execução no modo de 4 bits tem outra pequena desvantagem, pois leva o dobro do tempo para gravar dados na tela do que levaria em uma configuração de 8 bits. O LCD tem um tempo de 'acomodação' de 37 microssegundos, isso significa que você tem que esperar 37 microssegundos antes de enviar o próximo comando ou byte de dados para o LCD. Como no modo de 4 bits temos que enviar dados duas vezes para cada byte, o tempo total que leva para escrever um único byte chega a 74 microssegundos. Isso ainda é rápido o suficiente, mas eu queria que meu design produzisse os melhores resultados possíveis. A solução para o nosso problema com o número de pinos usados está em um conversor Serial para Paralelo …

Etapa 3: Conheça o seu hardware nº 2

Conheça o seu hardware # 2
Conheça o seu hardware # 2

O que faremos é construir um adaptador que pega um tipo de comunicação serial saindo do Arduino e converte os dados em uma saída paralela que pode ser alimentada para nosso LCD. E aí vem o chip 74HC595. Este é um registrador de deslocamento muito barato e simples de operar. Em essência, o que ele faz é pegar um relógio e sinais de dados que ele usa para preencher um buffer interno de 8 bits com os últimos 8 bits que foram 'sincronizados'. Uma vez que o pino 'Latch' (ST_CP) foi colocado 'alto', ele move esses bits para suas 8 saídas. O 595 tem um recurso muito bom, ele tem um pino de saída de dados serial (Q7 '), este pino pode ser usado para encadear 2 ou mais 595's juntos para formar adaptadores Serial para Paralelo com 16 ou mais bits de largura. Para este projeto, precisaremos de 2 desses chips. O esquema também pode ser modificado para funcionar com um único 595 no modo de 4 bits, mas isso não será coberto por este tutorial.

Etapa 4: conectando tudo

Conectando tudo
Conectando tudo

Agora que sabemos como nosso hardware funciona, podemos conectá-lo. No esquema, vemos 2 595 chips encadeados em série para formar uma saída paralela de 16 bits. O chip inferior é na verdade o principal, e o superior é conectado a ele em série. O que vemos aqui é que o 595 inferior está acionando os pinos de dados do LCD em uma configuração de 8 bits, o chip superior controla o sinal RS e a luz de fundo ligando ou desligando um transistor. Lembre-se da * observação sobre a luz de fundo do LCD na página Conheça seu hardware nº 1, caso o seu LCD não tenha um resistor de luz de fundo, não se esqueça de adicionar um em seu circuito. No meu caso, os LCDs já vêm com um resistor embutido, então pulei esta etapa. O contraste é aplicado através de um potenciômetro de 5K Ohm, um pino vai para GND e o segundo para VCC e o limpador para o pino Vo no LCD. Os capacitores usados nos LCDs e nas linhas VCC do 595 são capacitores de desacoplamento, eles estão lá para se livrar de interferências. Eles não são obrigatórios se você estiver trabalhando em uma placa de ensaio, mas devem ser usados no caso de você construir sua própria versão deste circuito para ser usado fora das "condições de laboratório". R5 e C9 nessa ordem muito específica criam um atraso RC, que garante que os dados nas saídas do 595 tenham tempo para se estabilizar antes que o pino Enable no LCD seja definido como 'alto' e leia os dados. Q7 'do 595 inferior vai para a entrada de dados serial do 595 no topo, isso cria uma cadeia de 595s e, portanto, uma interface de 16 bits. Conectar o Arduino é fácil. Usamos uma configuração de 3 fios, usando pinos SPI do Arduino. Isso permite transferências de dados muito rápidas, o envio de 2 bytes para o LCD geralmente leva cerca de 8 microssegundos. Isso é muito rápido e, na verdade, muito mais rápido do que o tempo que o LCD leva para processar os dados, portanto, é necessário um atraso de 30 microssegundos entre cada gravação. Um grande benefício de usar SPI é que os pinos D11 e D13 são compartilhados com outros dispositivos SPI. Isso significa que se você já tem outro componente que usa SPI, como um acelerômetro, esta solução usará apenas um pino extra para o sinal de habilitação. Na próxima página veremos o resultado. Eu construí uma mochila em um perfboard e está funcionando muito bem para mim até agora.

Etapa 5: O Resultado + Biblioteca

O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca
O Resultado + Biblioteca

“Uma imagem vale mais que mil palavras”, concordo com essa afirmação, então aqui estão algumas imagens do resultado final deste projeto. Estas são imagens do produto concluído, o Fritzing PCB view é o layout do perfboard que usei para construir minha mochila. Você pode achar útil se quiser construir o seu próprio. Gostei tanto que projetei um PCB usando DipTrace e encomendei um lote de 10 PCBs. Vou precisar de 2 ou 3 unidades para mim, mas vou disponibilizar o resto por um preço simbólico quando eu as receber. Então, se alguém estiver interessado, por favor me avise. * Edit: Os PCBs estão aqui e funcionam. Aqui está a galeria de imagens completa para este projeto, incluindo os PCBs reais. https://imgur.com/a/mUkpw#0 Claro que não esqueci o mais importante, uma biblioteca para usar este circuito. É compatível com a biblioteca LiquidCrystal incluída com o IDE do Arduino, portanto, você pode substituir facilmente as declarações no topo do seu esboço e não ter que alterar nada em seu esboço. Há também um esboço de exemplo que demonstra como cada função na biblioteca funciona, então dê uma olhada.

Recomendado: