LCD's in het algemeen behoefte 11signal lijnen + 3 of 5 lijnen voor de Vcc, grond en contrast en in sommige gevallen een extra 2 voor achtergrondverlichting.
Met behulp van het LCD-scherm in 4 bitsmodus bespaart 4 pins, maar vaak is dat niet genoeg. Hoewel kan een I2C-module gebruiken om te bepalen van het LCD-scherm met twee draden via de I2C-poort, zijn er situaties waarin dat is onpraktisch, bijvoorbeeld wanneer u moet al analoge poorten en A4 en A5 niet opofferen voor SDA en SCL.
In dat geval met behulp van een shift register, kan een oplossing zijn.
Ik ben met behulp van een 74164 shift register met slechts een paar extra onderdelen om te doen wat ik nodig heb en het kan gemakkelijk worden gelegd op een stuk van de klemmenstrook
STUKLIJST
74LS164
1N14148
2x1k weerstand
1x1k variabele weerstand
De klemmenstrook versie volgt de standaard lay-out voor de meeste LCD-schermen met een SIL pin lay-out. Echter, ik had ook een LCD-scherm, een Seiko M1602, die had een twee lijn pin lay-out die ik heb een speciale versie gemaakt.
Voor het programma gebruik ik de LCD-bibliotheek van Malpartida.
#include <LiquidCrystal_SR> LiquidCrystal_SR lcd(8,7,TWO_WIRE); // | | // | \-- Clock Pin// \---- Data/Enable Pinvoid setup(){ lcd.begin(16,2); // initialize the lcdlcd.home (); // go home // } void loop(){lcd.home (); lcd.print("LiquidCrystal_SR"); lcd.setCursor (0, 1 ); lcd.print("2 wire");}
Er u gaan.
Enkel één meer ding. In mu circuit voeden ik de achtergrondverlichting rechtstreeks vanuit een 5 Volt spanning door middel van een weerstand. Maar zoals u het Shift register zien kunt heeft nog lege pennen. Ik geloof pin 4 draagt de achtergrondverlichting aan/uit signaal en als u zou houden u het signaal van pikken kon er, feed die naar een BC547 die dan de achtergrondverlichting aan en uit kunnen schakelen door software.
Op de "Volgende" pagina zal ik bespreken hoe om dit werk voor een Attiny85