www.mikrocontroller.net

Forum: Codesammlung Standard LCD über nur 3 Drähte

Autor: peter dannegger (Gast)
Datum:
Angehängte Dateien:

Für die LCD-Ansteuerung werden normaler Weise 11 Signale benötigt.

Mit einem billigen 74HC164 kann man das auf nur 3 Drähte reduzieren.
Damit ist es leicht, einen AT89C4051 oder auch ATTINY12 zur Ansteuerung
zu nehmen.

Anbei ein Beispiel für eine Uhr mit Datum für ein 2 * 16 Zeichen
Display.

Das Testen des Busy-Signals kann man einsparen, wenn man nach jedem Byte
die maximale Wartezeit abwartet. Die dadurch höhrere Abarbeitungszeit
ist vernachlässigbar (32 Zeichen * 46us = 1,5ms).
Da ja ein Display auch abgelesen werden muß, sollten Texte je nach Länge
auch mindestens 200ms ... 2s stehen bleiben.


Die Datenleitungen des Displays habe ich in der fürs Layout günstigsten
Weise mit dem 74HCT164 verbunden. Die Software sorgt dann einfach mit
einer Tabelle dafür, daß die Bits auch richtig sortiert am Display
anliegen.

Bei den meisten Projekten verfahre ich in dieser Weise, d.h. zuerst wird
das Layout angefertigt und dann in der Software die richtige Zuordnung
definiert.
Das kann leicht den Unterschied zwischen einem 2- und 4-Ebenen-Layout
bedeuten, d.h. eine erhebliche Kosteneinsparung in der Produktion
bewirken. Der zusätzliche Softwareaufwand ist dagegen vernachlässigbar.


Die Initialisierungsroutine habe ich dem HD44780 Datenblatt entnommen
und funktionierte auf Anhieb.

Die Beleuchtungs-LED habe ich über 39 Ohm mit 5V verbunden, das ergibt
etwa 30mA Stromverbrauch. Das muß man aber je nach Display ausprobieren.



Peter
Autor: Andreas Vogel (Gast)
Datum:

Hallo !
Es geht auch einfacher (im Layout) ->
Man nehme einen 574 und verbinde IN 1 mit Out 0, In 2 mit Out 1.... In7
mit Out 6.
Die Datenleitungen kommen an Out 0..7, In 0 ist der serielle
Dateneingang, Clk ist Clock.
Zusätzlich werden noch LCD_Enable, LCD_C/D sowie Vcc und GND benötigt.
(Lesen des Displays leider ausgeschlossen)

Das Layout ist trivial, da sich In und Out jeweils gegenüberliegen !
Autor: Markus Burrer (Gast)
Datum:

Es geht noch einfacher. Man nehme ein Display mit einem KS0073
Controller, z.B. die DIP Module. Die kann man in einen seriellen Modus
schalten. Dann kann man das Display direkt an die SPI Schnittstelle
hängen
Autor: peter dannegger (Gast)
Datum:

Hallo Markus,

wo kriegt man die denn her (z.B. als 2*16 oder 2*20) und was kosten die
im Vergleich zu den HD44780 kompatiblen ?

So ein 74HC164 kostet ja nur wenige Cent.


Peter
Autor: Markus Burrer (Gast)
Datum:

Zugegeben, die sind etwas teurer als normale, haben aber auch de
deutlich kompaktere Bauform bei fast gleicher Anzeigefläche. Geben tuts
die bei Reichelt in 1x8, 2x16 und 4x20 und als Grafik mit 122x32 Pixeln.
Das 4x20 heißt glaub ich DIP204 und kostet 31 Euro
Oder kuckst du hier:
http://www.lcd-module.de/deu/doma/doma.htm
Einziger Nachteil ist vielleicht die Anschlußleiste im 2mm Raster, aber
sonst sind die genial. Die Adressierung der Zeichen unterscheidet sich
etwas. Wärend die bei HD44780 etwas durcheinander ist hat man hier eine
lineare Adressierung. Das vereinfacht die Ansteuerung etwas.
Übrigens, die Bezeichnung 100% HD44780 kompatibel muß nicht immer
heißen, das es auch wirklich 100% sind. Gerade die KSxxx machen das
immer wieder deutlich

Markus
Autor: peter dannegger (Gast)
Datum:

Danke,

wenn ich das jetzt richtig sehe, ist leider nur das 4*20 seriell, alle
anderen aber nicht.


Lustig ist die Formulierung "nahezu 100% kompatibel".
Also sinds doch nicht 100% sondern nur 99% oder so.


Peter
Autor: Markus Burrer (Gast)
Datum:

Muß gestehen das ich mir nur das 4x20 angeschaut habe. Bin davon
ausgegangen, das alle mit dem gleichen Controller arbeiten. Die "nahezu
100%" liegen zum Teil an der besagten abweichenden Adressierung. Der
Befehlssatz ist, soweit ich das gesehen hab, identisch, aber erweitert.
Der Zeichensatz stimmt auch nicht 100% überein
Es gibt also schon einige Unterschiede. Trotzdem finde ich es vor allem
wegen seinen Abmessungen ziemlich genial

Und nochwas: Wenn man ein Display portsparend anschließen will gibt es
noch eine Möglichkeit. Der AVRco hat eine Lib mit der man bis zu 8
Displays am I2C Bus betreiben kann. Hierzu benötigt man den PCA9555. Ist
zwar teurer als ein 74HCxxx, aber man kann halt an 2 Portpins bis zu 8
(identische) Displays betreiben. Und man kann den I2C Bus natürlich noch
weiter verwenden. Besser gehts eigentlich nicht.

Markus
Autor: Andreas (Gast)
Datum:

Hallo!

Was müsste man ändern, damit ich das HD44780 LCD über einen 74HC595
ansteuern kann? Natürlich auch mit möglichst wenigen I/O Pins. Weil ja
bei einem normalen Schieberegister (74HC164) die Daten durchgeschoben
werden und erst nach 8 clocks am richtigen pin anliegen. Sehe ich das
richtig?

Hat jemand eine Idee/C-Code für mich wie ich das am besten machen
kann?

Danke!
Autor: peter dannegger (Gast)
Datum:

Das Latch im 595 bringt hierbei nichts.

Du kannst z.B. den Latch-Clock mit dem Schiebe-Clock verbinden und dann
immer 9 Pulse reinschieben. Mit dem 9. Puls übernimmt dann das Latch
die vorherigen 8 Bits.


Peter
Autor: Andreas Schwarz (Gast)
Datum:

Wieso bringt das Latch im HC595 nichts?

http://www.mikrocontroller.net/attachment.php/3085...
Autor: peter dannegger (Gast)
Datum:

@Andreas,

solange E=0 ist, ist es dem HD44780 völlig wurscht, was an den
Datenpins anliegt.
Ob 164 oder 595 ist daher egal.
Aber der 595 braucht noch einen Impuls extra, um die Daten zu latchen.


Peter
Autor: andreas k (Gast)
Datum:

@Peter,

Danke, jetzt ist es mir klar! Da ich aber einen Seriell-Parallelwandler
mit Latch für andere Zwecke noch brauche werde ich es mit dem Verbinden
von Latch-clock und Schiebe-clock versuchen.
Autor: Dominik S. Herwald (Gast)
Datum:

Am besten finde ich persöhnlich Lösungen über dem I2C Bus. Das braucht
auch nur zwei Pins und hat den Vorteil, dass man mit diesem Bus ja dann
nicht nur dass Display ansteuern kann sondern noch massig andere
Hardware... Spart dann ne menge Pins wenn man sowieso I2C einsetzt.
Falls man dass nicht tut - OK, dann lohnt sich vielleicht doch eher nen
Schieberegister.

Für die Ansteuerung im 4Bit Modus reicht jedenfalls ein PCF8574 8Bit
Portexpander.

MfG,
Dominik S. Herwald

http://www.dsh-elektronik.de/
Autor: peter dannegger (Gast)
Datum:

@Dominik,

Z.B. Segor:

74HC164: 0,45€
74HC595: 0,60€
PCF8574: 3,30€ !

Wenn man da also noch weitere Aus- oder Eingänge ranpappen will, gehts
mit dem PCF8574 ganz schön ins Geld.


Peter
Autor: Dominik S. Herwald (Gast)
Datum:

PCF8574 Kessler: 2,44 Euro

Sicher ist der teurer als ein Schiberegister aber wenn man sowieso nen
I2C Bus verwendet und einen µC wie einen PIC12xxx oder die
entsprechenden Atmel versionen (haben ja nur 6 I/Os) ist es damit dann
wohl die bessere Lösung.

MfG,
DSH
Autor: Steffen (Gast)
Datum:

Wenn ich die Preise für die I²C Portexpander sehe, dann nehme ich aber
lieber einen zweiten Controller, den ich dann (auch mehrere) über nur
einen I/O-pin ansteuern kann. Der PIC16F628A kostet mich z.B. aktuell
1,40€ (bei Reichelt bestimmt das doppelte). Da sehe ich keinen Grund
einen teueren I²C Expander zu verwenden.

Das Projekt mit dem Nokia 3310 LCD-Display (siehe Codesammlung) wollte
ich eigentlich auch erst mit einem einfachen 4x16 Display und zwei
PCF8574 aufbauen aber wo ich dann den Preis gesehen hab ... nein
danke.

Komischerweise ist der Preis für einen recht leistungsfähigen MC
wesentlich geringer als so ein einfaches Peripherie-Bausteinchen. Da
ist es manchmal sinvoller lieber noch einen zweiten, dritten oder gar
vierten MC mit auf die Platine zu packen.

Steffen
Autor: Dominik S. Herwald (Gast)
Datum:

@Steffen:

OK. So kann mans natürlich auch machen. Dann kann man die komplette
Ansteuerung des Displays auch gleich nem eigenen Controller überlassen
- so mach ich dass bei größeren Sachen ja auch.
Aber evtl. hat man ja noch nen paar PCFs als Samples rumliegen und von
daher ;)

Zum Preis: Naja kommt eben auf die Stückzahl und die Produktionskosten
an. Stell dir mal vor, die Preise würden sich nach der
Leisungsfähigkeit richten :)
Nen PCF8574 würde dann 10 Cent kosten, aber nen Pentium 4
10000 Euro... ;)

MfG,
DSH
Autor: Gerhard (Gast)
Datum:
Angehängte Dateien:

Hi,

habe im Anhang eine serielle LCD Ansteuerung fuer HD44780 die mit zwei
HC164 arbeitet. (CLK, DATA, und E)

Gruss,
Gerhard
Autor: Carsten (Gast)
Datum:

@Markus...
Hallo, ich hab auch besagtes 4x20 Display, bisher aber mit 4 Bit
Ansteuerung.
Hast Du vielleicht ein Programmbeispiel mit SPI-Ansteuerung ?

@Steffen...
wo bekommt man eigentlich ein 3310-Display her ?
Autor: Uqzze (Gast)
Datum:

Eine Frage, kann man alle PINs des LCD-Controllers an den
Schieberegister anschließen?
EN, RS, R/W und 4 Datapins (4-Bit mode) alle an Ausgang des 74HC595.
Geht das?
Autor: Peter Dannegger (peda)
Datum:

Uqzze wrote:
> Eine Frage, kann man alle PINs des LCD-Controllers an den
> Schieberegister anschließen?
> EN, RS, R/W und 4 Datapins (4-Bit mode) alle an Ausgang des 74HC595.
> Geht das?

Ja.

Bloß es macht keinen Sinn, man braucht trotzdem 3 Drähte und die
Software wird umständlicher.


Peter
Autor: Uqzze (Gast)
Datum:

Ja, also eine Data-Out-Pin, Clock-Pin und ein
Schieberegister-Ausgabepin, stimmt?

Wenn man aber es über SPI betreibt, dann braucht man nur einen einzigen
extra Pin!
Autor: Peter Dannegger (peda)
Datum:

Uqzze wrote:
> Ja, also eine Data-Out-Pin, Clock-Pin und ein
> Schieberegister-Ausgabepin, stimmt?
>
> Wenn man aber es über SPI betreibt, dann braucht man nur einen einzigen
> extra Pin!

Genau, wie mit dem 74HC164 im 8Bit-Modus.

Ob Du nun den RCK des 595 latcht oder gleich den E-Pin pulst, beides
braucht nur einen extra Pin.


Peter
Autor: Ingo Stahl (ingo-s)
Datum:

Hi,

es geht sogar mit nur 2 Signalleitungen mittels CD4013 + CD4015
1 FF + CD4015 als 9bit SR für R/W + 8 Databits und das restliche FF
für den Enable Input. Der Trick besteht im Ablauf von Clock und Data
ähnlich I2C.
Realisiert ca. 1998, wobei noch 3 Tasten eine Analogspannung auf die
Datenleitung für die Bedienung aufgeprägt haben. War die ansteckbare
Bedieneinheit eines Elektroflug Datenloggers mit ST6220.

Umsetzung auf Atmel steht demnächst an.

Gruss
Ingo
Autor: Ingo Stahl (ingo-s)
Datum:
Angehängte Dateien:

habe als Nachschlag noch den Schaltplan der alten 2wire LCD Lösung von
1998 eingescannt.

Mit heutigen Mitteln würde ich wohl eher zu einem kleinem Attiny(24)
greifen. Als Schnittstelle kann man dann I2C, seriell oder was eigenes
realisieren.

Gruss
Ingo
Autor: Peter Dannegger (peda)
Datum:

Ingo Stahl wrote:
> Mit heutigen Mitteln würde ich wohl eher zu einem kleinem Attiny(24)
> greifen. Als Schnittstelle kann man dann I2C, seriell oder was eigenes
> realisieren.

Ja.
Z.B. mit ATTiny25, dann reicht ein Draht:

Beitrag "LCD über nur einen IO-Pin ansteuern"


Peter

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net