2-tråds LCD gränssnitt för Arduino eller Attiny (uppdaterad juni 2016)
LCD-talet allmänt behov 11signal linjer + 3 eller 5 linjer för Vcc, marken och kontrast och i vissa fall en extra 2 för bakgrundsljus.
Med hjälp av LCD-skärmen i 4 bitars läge sparar 4 stift, men det är ofta inte tillräckligt. Även om det är möjligt att använda en I2C modul för att styra LCD med två trådar via I2C-port, finns det situationer där det är opraktisk, t.ex. När du behöver al analoga portar och kan inte offra A4 och A5 för SDA och SCL.
I så fall använda ett skiftregister kan vara en lösning.
Jag använder ett 74164 skiftregister med endast några ytterligare komponenter för att göra vad jag behöver och det kan enkelt läggas på en bit av stripboard
BOM
74LS164
1N14148
2x1k motstånd
1x1k varierande resistor
Den stripboard versionen följer den standard lay-out för de flesta LCD-skärmar med en SIL pin lay-out. Men hade jag också en LCD-skärm, en Seiko M1602, som hade en två linje pin lay-out som jag gjorde en dedikerad version.
För programmet använder jag LCD biblioteket från Malpartida.
#include < LiquidCrystal_SR >
LiquidCrystal_SR lcd(8,7,TWO_WIRE);
// | |
// | \--Klocka Pin
\---Data/aktivera Pin
void setup() {
LCD.BEGIN(16,2); initiera lcd
LCD.Home (); Gå hem
//
}
void loop()
{
LCD.Home ();
LCD.Print("LiquidCrystal_SR");
lcd.setCursor (0, 1);
LCD.Print ("2 wire");
}
Där u gå.
Bara en sak. I mu krets foder jag bakgrundsbelysningen direkt från en 5 Volt spänning genom en resistor. Men som ni kan se skiftregister har fortfarande tomma pins. Jag tror stift 4 bär bakgrundsbelysningen/på signal och om du skulle vilja att du kunde plocka upp signalen från där, foder som till en BC547 som sedan kan byta bakgrundsbelysningen på och stänga av programvara.
På sidan "Nästa" kommer att jag diskutera hur man gör detta arbete för en Attiny85