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
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 !
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
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
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
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
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
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!
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
Wieso bringt das Latch im HC595 nichts? http://www.mikrocontroller.net/attachment.php/30856/SPI_74HC595.pdf
@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
@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.
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/
@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
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
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
@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
Hi, habe im Anhang eine serielle LCD Ansteuerung fuer HD44780 die mit zwei HC164 arbeitet. (CLK, DATA, und E) Gruss, Gerhard
@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 ?
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?
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
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!
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
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
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
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
Peter Dannegger schrieb: > Ja. > Z.B. mit ATTiny25, dann reicht ein Draht: > > Beitrag "LCD über nur einen IO-Pin ansteuern" Es geht hier doch nur ums Geldsparen gegenüber einem seriellen Display, oder? ;-) Also ein paralleles LCD-Modul für rund 5 Euro mit einem 8-Pin ATtiny als seriellem Controller statt einem seriellen LCD-Modul für rund 15 Euro. Das bedeutet aber, dass man zwei MCs in seiner Schaltung braucht. Das ist deutlich teurer, als wenn ich gleich einen etwas größeren MC nehme (z.B. ATtiny 2313 oder ATmega 8 - beide kaum über 2 Euro). Die haben genug Leitungen für die direkte Ansteuerung des Parallel-Displays und gleichzeitig noch viele weitere Ports für andere Aufgaben übrig. Außerdem ist das Layout platzsparender, als wenn ich zwei Controller einsetze. Der Sinn dieser Lösung erschließt sich mir deshalb nicht so ganz... Gruß, Volker
Volker schrieb: > Es geht hier doch nur ums Geldsparen Nö. Die reinen Materialkosten haben nur bei riesen Stückzahlen eine Bedeutung. Es geht darum, Verdrahtungs- und Layoutaufwand zu sparen, wenn man mal schnell ne Testschaltung aufbauen will. Oder wenn die Leitung zum LCD etwas länger ist. Oder wenn man nur zeitweise ein LCD braucht zu Testausgaben. Man kann sich natürlich auch ein universelles Modul bauen mit ATtiny, LCD und 3-poligem Steckanschluß. Peter
Ich habe sowas änliches versucht mit dem 74hc595, aber es geht nur wenn der EN pin direkt am Mikro angesclossen ist und nicht am 74hc595. Was ist der Trick?
Hier mal der "Schaltplan" aus Peters Code mit Leerzeichen eingerückt:
1 | /* connections: |
2 | 89C2051 74HCT164 LCD |
3 | ---------------------------------------- |
4 | P1.5 8 |
5 | P1.6 E |
6 | P1.7 1, 2 RS |
7 | VCC 9, 14 VDD |
8 | GND 7 VSS, R/W |
9 | 3 D1 |
10 | 4 D3 |
11 | 5 D5 |
12 | 6 D7 |
13 | 10 D6 |
14 | 11 D4 |
15 | 12 D2 |
16 | 13 D0 |
17 | */ |
:
Bearbeitet durch Admin
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.