Estava aqui observando os meus posts usando display LCD 16×2 e notei uma coisa: todos os circuitos usam os pinos D4, D5, D6 e D7 do display, mas nenhum usa os pinos D0, D1, D2 e D3. Se o display funciona corretamente, pra que servem esses pinos, afinal ?
Esse tipo de display pode funcionar em modo 4 bits (usando 4 pinos), ou no modo 8 bits, usando todos os pinos de dados. Certamente quem usa o Arduino Uno e outras placas Arduino menores precisa economizar portas, especialmente se for ligar, ao mesmo tempo, o display e vários sensores.
“Teoricamente” (prestem atenção às aspas), se você necessita de uma taxa de atualização mais eficiente do display e não vai utilizar tantos sensores, pode utilizar o modo de 8 bits e observar um ganho de performance no LCD.
Conexão do display LCD 16×2 em modo 8 bits
Para tentar observar isso, liguei um display com o controlador HD44780 na protoboard, utilizando 8 pinos, e rodei o programa exemplo que vem junto com a biblioteca Liquid Crystal, chamado Autoscroll. Para a montagem do circuito, utilizei a tabela abaixo:
Seguindo a tabela acima, temos a seguinte conexão com uma placa Arduino Uno:
O comando LiquidCrystal tem a seguinte sintaxe se você for usar o display no modo 4 bits:
LiquidCrystal(rs, enable, d4, d5, d6, d7)
Já no modo 8 bits, basta acrescentar os pinos referentes ao D0, D1, D2 e D3 do display:
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Então no programa eu coloquei os dois comandos, e você mesmo pode comentar uma linha ou outra. Teste os dois modos e veja se para você faz alguma diferença:
// Programa: Teste LCD 16x2 em modo 8 bits
// Autor: Arduino e Cia
// include the library code:
#include <LiquidCrystal.h>
//Habilite a linha abaixo se for usar o display no modo 4 bits
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Modo 4 bits
//Habilite a linha abaixo se for usar o display no modo 8 bits
LiquidCrystal lcd(12, 11, 6, 7, 8, 9, 5, 4, 3, 2); //Modo 8 bits
void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16,2);
}
void loop()
{
// set the cursor to (0,0):
lcd.setCursor(0, 0);
// print from 0 to 9:
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// set the cursor to (16,1):
lcd.setCursor(16,1);
// set the display to automatically scroll:
lcd.autoscroll();
// print from 0 to 9:
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// turn off automatic scrolling
lcd.noAutoscroll();
// clear screen for the next loop:
lcd.clear();
}
Faz diferença ? Na minha opinião, pouquíssima. A não ser que o seu programa exija muito do display, o que eu acho um pouco difícil. Em se tratando de um display basicamente para texto, não vale a pena gastar 4 pinos a mais do Arduino para usar o modo de 8 bits.
Vale o aprendizado e para usos futuros, quem sabe em outros displays.
Você fez o teste do display LCD 16×2 em modo 8 bits? Notou diferença? Compartilhe a sua opinião na área de comentários e confira outros posts usando displays aqui mesmo no Arduino e Cia!