Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zu HD44780 kompatiblen LCD´s


von Sarah H. (saranda)


Lesenswert?

Hallo,
ich bin neu hier und heiße Sarah und komme aus der Nähe von Mainz. Auch 
Frauen intressieren sich ja manchmal für Basteleien und ich habe jetzt 
zum ersten mal ein Projekt vor Augen, dass den Einsatz eines 
Mikrocontrollers erfordert. Ich möchte zuächst einmal grob gesagt einem 
beliebigen LCD, zum Beispiel 2-zeilig 16/20/24 Zeilen, beibringen 
bestimmte verschiedene Texte auszugeben. Die meisten LCD´s sind ja 
HD44780-kompatibel und viele lassen sich auch für Anfänger recht gut 
über die Druckerschnittstelle programmieren. Wenn ich mir jetzt ein 
LPT-geeignetes LCD hole und es programmiert habe - kann man es dann 
später auch unabhängig vom PC betrieben, das heißt in ein Gehäuse 
einbauen? Das ist nämlich der eigentliche Sinn der Aktion - ich möchte 
nicht einfach nur Texte vom PC aus ausgeben lassen sondern wenn alles so 
läuft wie ich mir das denke Texte aufgrund von einer bestimmten Anzahl 
analoger Impule ausgeben.
Mag sein dass ich etwas unbedarft an die Sache rangehe aber vielleicht 
ist ja jemand hier der mich versteht und einen Einkaufstipp für ein 
bestimmtes LCD geben kann?
Wenn es jemand interessiert kann ich auch ausführlich erklären, was ich 
bauen will.
Liebe Grüße und Danke fürs Lesen,
Sarah

von Phantomix (Gast)


Lesenswert?

> Auch Frauen intressieren sich ja manchmal für Basteleien

Viel zu selten, wenn du mich fragst :P

> Wenn ich mir jetzt ein LPT-geeignetes LCD hole und es programmiert habe - kann 
man es dann später auch unabhängig vom PC betrieben, das heißt in ein Gehäuse 
einbauen?

Selbstverständlich geht das. Wie du schon geschrieben hast, eignet sich 
dann für die Ansteuerung ein Mikrocontroller. Im Falle des HD44780 kann 
ich dir die LCD Lib von Peter Fleury empfehlen, damit hast du einen 
schnellen, problemlosen Start und siehst sofort ob es funktioniert. 
Falls du dann doch ins Detail gehen willst kannst du deine eigene 
schreiben ;-)

> sondern wenn alles so läuft wie ich mir das denke Texte aufgrund von einer 
bestimmten Anzahl analoger Impule ausgeben.

Kommt auf die Menge an Text an, für Ebooks bräuchtest du einen 
datenflash ;-)
 Prinzipiell aber problemlos möglich

> vielleicht ist ja jemand hier der mich versteht und einen Einkaufstipp für ein 
bestimmtes LCD geben kann?

Jedes mit hd44780 geht da einfach. Bei den großen (4-zeiligen) hast du 
eine leicht kompliziertere Ansteuerung (zwei Enable-Leitungen). Hab 
meine Displays bei ebay geholt, aber das bieten auch alle gängigen 
Elektronikversender mit an (da wirst du bestimmt eh bestellen, wenn du 
mikrocontroller machen willst)

> Wenn es jemand interessiert kann ich auch ausführlich erklären, was ich
bauen will.
Ach, Interesse ist immer da, wenn es sich um Projekte von anderen 
handelt, sei es um sie zu bestaunen oder um selbst Inspirationen zu 
sammeln



Phantomix

von jack (Gast)


Lesenswert?

>Die meisten LCD´s sind ja
>HD44780-kompatibel und viele lassen sich auch für Anfänger recht gut
>über die Druckerschnittstelle programmieren.

Also "programmieren" lassen sie sich nicht, Du gibst über die Parallel-
Schnittstelle lediglich Befehle aus, die vom LCD ausgeführt werden.
Wenn Du Texte unabhängig vom PC anzeigen willst, brauchst Du einen
Mikrcontroller, der dem LCD sagt. was es tun soll.

von Sarah H. (saranda)


Lesenswert?

Hi,
okay das geht ja sehr schnell hier.
Ich möchte es kurz gesagt so machen:
Es kommt ein anologes Signal - z.B. 1 Spannungsimpuls --> Textausgabe A
neue Messung, Display wieder blank,
Analoges Signal 2 Spannungsimpulse --> Textausgabe B

Und so weiter... Der Text ist übrigens auf einen Satz beschränkt.

Gibt es denn ein LCD wo ein Mikrokontroller integriert ist? Wie würde es 
dann funktionieren? Den Controller einmal über den PC programmieren, das 
heißt ihm beibringen was bei einem Impuls für eine Ausgabe erfolgen soll 
und dann getrennt davon nutzen? Geht das überhaupt so wie ich mir das 
denke?
Liebe Grüße und Danke,

Sarah

von Peter D. (peda)


Lesenswert?

Sarah Hof wrote:
> Wenn ich mir jetzt ein
> LPT-geeignetes LCD hole und es programmiert habe - kann man es dann
> später auch unabhängig vom PC betrieben, das heißt in ein Gehäuse
> einbauen?

Am LPT habe ich noch kein LCD angeklemmt.

Aber an nen MC (z.B. ATmega48) geht das sehr gut:

http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

Programm ist in C geschrieben (WINAVR).


Peter

von Sarah H. (saranda)


Lesenswert?

Hi, ja sorry wegen der Ausdrucksweise okay ich meinte ja auch nicht das 
LCD direkt an den LPT hängen ich meinte halt generell die LCD´s wo immer 
dabei steht "für den Betrieb am LPT geeignet".
Phantomix ich kann dir leider keine Nachricht schicken - würde dir gerne 
verraten was ich vorhabe... . :-)
LG,
SArah

von Phantomix (Gast)


Lesenswert?

> Ich möchte es kurz gesagt so machen:
> 1 Spannungsimpuls --> Textausgabe A
> 2 Spannungsimpulse --> Textausgabe B

Das klingt mir zwar eher nach einem digitalen Signal, aber naja, ein ADC 
lässt sich dafür auch benutzen. Interessanter ist die Frage nach der 
Auswertung. Du musst im Prinzip Spannungspulse zählen, und hinterher den 
zugehörigen Text auswählen. Das ist der leichte Teil. Der schwierigere 
Teil ist die Beachtung der Timings. Du musst definieren, wie lang ein 
Spannungspuls ist, und wie viel Zeit zwischen zwei Pulsen vergehen darf 
(damit dein Controller weiß, was der letzte Impuls war, damit er mit dem 
Zählen aufhört)

> Gibt es denn ein LCD wo ein Mikrokontroller integriert ist?

Der hd44780 ist im prinzip schon ein Controller, lässt sich aber leider 
nicht programmieren, darum nimmt man einen zweiten, z.B. ATMega88 - der 
hätte für deine Zwecke noch genug Reserven. Was du also suchst ist ein 
kleines Board mit Mikrocontroller, wo du das Display anschließen kannst 
(Empfehlung: Flachbandkabel, Wannenstecker), und natürlich:

> Den Controller einmal über den PC programmieren
> und dann getrennt davon nutzen?

Genau, zum programmieren brauchst du wiederum eine Schnittstelle zum PC. 
Wenn du einen seriellen Port hast bietet sich dieser an, ansonsten gibt 
es auch Lösungen für USB (kompliziert) oder parallel(geht so)

http://www.roboternetz.de/wissen/index.php/Programmer

von Klaus R. (klaus2)


Lesenswert?

...um es mal kurz zu machen:

Ohne einen uC wird das als "stand alone" nix.

Was musst du jetzt tun?

Dir das Tutorial hier anschauen, einen Atmega8 o.ä. + notwendiges 
Brimborium besorgen und dann mal loslegen. "C" kannst du?

Es "gibt" auch soclhe Displays mit Prozessor zu kaufen, die man in einem 
gewissen umfang "einfach per RS232" programmierne kann - aber da lassen 
sich meistens nur best Texte bei einem Pegel an Pin 1-5 ausgeben. Sehr 
unflexibel.

Ergo: Selbst ist die Frau!

Klaus.

von Phantomix X. (phantomix)


Lesenswert?

So, nun habe ich mich hier auch einmal registriert, und kann Nachrichten 
empfangen :-)

von Bastler (Gast)


Lesenswert?

So wie Sarah hab ich auch angefangen.
LCD (4x20) wie bei jaLCD oder ähnlichem am LPT angeschlossen.
Dann hab ich mittels QBasic das LCD zum laufen gebracht.

Mittlerweile hänge ich die Dinger an einen µC und lass den Stand-Alone 
laufen (z.B. als Spannungs / Temperaturanzeige).
Das ändern der Ansteuerung geht am PC halt einfacher (man muss nichts 
irgendwo rüberladen).
Wichtig ist nur die Steuerleitungen im 8-Bit-Mode nicht vergessen 
anzusteuern!

von Sarah H. (saranda)


Lesenswert?

Hallo nochmal,

cool und was genau soll ich mir jetzt kaufen? Es gibt so viele 
verschiedene ATMEGA8´s gibt es da keine Komplettlösung als Bausatz oder 
sowas die ihr mir empfehlen könnten?
Selbst zusammenlöten und bestücken ist nicht so das Problem aber eine 
komplette Schaltung ausdenken - das kann ich nicht. :-(

Liebe Grüße,

SArah

von Sachich N. (dude) Benutzerseite


Lesenswert?

Breadboard, paar Mega8/16/32...

von El Patron B. (bastihh)


Lesenswert?

Bastler wrote:

> Wichtig ist nur die Steuerleitungen im 8-Bit-Mode nicht vergessen
> anzusteuern!

wieso? kannste auch im 4bit mode betreiben.

Vorteil: Mehr freie Pins am AVR
Nachteil: langsamer (wobei sich das eh nicht bemerkbar macht)

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

@Sarah
besitzt du denn schon ein Programmiergerät für die ATMega MCUs?
Ansonsten wäre vielleicht das Atmel STK500 für dich interessant.

Grüße,
Alex

von Sarah H. (saranda)


Lesenswert?

Hi,
nee sowas habe ich nicht wie gesagt bin ich totaler Anfänger im Bereich 
MC.
Ich lese mich gerade erst ein... .
Viele Grüße,
Sarah

von Phantomix X. (phantomix)


Lesenswert?

Wie viel du jetzt am Anfang ausgeben willst hängt davon ab, wie viel du 
später noch mit Mikrocontrollern machen willst sag ich mal so. Am Anfang 
brauchst du ein kleines, billiges board, das dir aber Zugriff auf alle 
Pins des Controllers gewährt. da gabs doch schon fertige zum 
bestellen... muss mal link suchen.

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Hi Sara,
am besten Du nimmst ein ATMega Entwicklungsboard von Pollin. Die sind 
recht günstig und für die ersten Schritte mehr als ausreichend.
Ich hab vor einigen Monaten ähnlich angefangen.
Displays kriegste bei Pollin auch für ein paar €.
Board, ATMega32 und Display für ca. 20€ plus Versand.

Und dann musst Du nur noch etwas löten können.

Meld Dich ruhig, wenn Du fragen hast, ich hab mir am Anfang hier auch 
viel Unterstützung geholt und auch bekommen.

Gruß
netdieter

von El Patron B. (bastihh)


Lesenswert?

vom Preis her würde sogar etwas von myAVR passen :)

Gibs auch fertig mit LCD Modul usw.
Einfach mal Nachgucken: www.myavr.de

von Phantomix X. (phantomix)


Lesenswert?

Wie wärs damit

http://www.arduino.cc/

Gibts als USB und Seriell

von Sarah H. (saranda)


Lesenswert?

Okay dann besorge ich mir erstmal zum rumstochern und ausprobieren von 
pollin das Board mit der Nummer 810 038 und am besten 2-3 Controller 
Nummer 100 910 - ist der denn geeignet für meine Zwecke?

Danke für EUre Hilfe,
Sarah

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Sarah Hof wrote:
> Okay dann besorge ich mir erstmal zum rumstochern und ausprobieren von
> pollin das Board mit der Nummer 810 038 und am besten 2-3 Controller
> Nummer 100 910 - ist der denn geeignet für meine Zwecke?
>
> Danke für EUre Hilfe,
> Sarah
Das ist der ATMega8 und der tuts wahrscheinlich für Deine Zwecke.
Wenn Du aber gleich den ATMega32 nimmst, dann hast Du für so ziemlich 
alle Zwecke den richtigen µC. Wegen des Unterschieds müsste man jetzt 
mal die Datenblätter vergleichen.

von Martin e. C. (eduardo)


Lesenswert?

Hallo Sara,

@Dieter Engelhardt
>> am besten Du nimmst ein ATMega Entwicklungsboard von Pollin. Die sind
>> recht günstig und für die ersten Schritte mehr als ausreichend.

habe so ein Board fertig gebaut getestet + Atmega8 (oder eventuell ein 
16) + ein LCD mit Hintergrundbeleuchtung.

für 22 Euro + Versand würde ich es verkaufen

Gruß
Eduard

von Jörg I. (mecrumble)


Lesenswert?

Hallo.

Ich bin auch neu in der AVR-Branche. Mache momentan eine Studienarbeit 
und habe ein kleines Problem mit dem Ansteuern von einem Display 
(TC1602E-01 von Pollin). Habe zwar schon alle Foren durchkämmt, komme 
aber nicht auf die Lösung. Ist für Profis wahrscheinlich auch trivial. 
Benutze die Routinen von Peter Fleury. Jetzt mein Problem. Wenn ich das 
Display an PortA anschließe wie standartmäßig im Quellcode angegeben 
läuft es einwandfrei. Schließe ich es genauso an PORTD und ändere im 
Header PORTA nach PORTD, kommt nichts mehr am Display an. Woran kann das 
liegen?

Hier der Quellcode der Header:

#define LCD_PORT         PORTA        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    0            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    3            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        6            /**< pin  for Enable line     */

geänderter Quellcode:

#define LCD_PORT         PORTD        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    0            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    1            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    2            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    3            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       4            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       5            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        6            /**< pin  for Enable line     */

und in der main:

int main(void)
{

      lcd_init(LCD_DISP_ON);

        lcd_clrscr();

        lcd_puts("Test1\n");

        lcd_puts("Test2");

    while(1)
    {
    }

}

Wie gesagt, am PORTA funktioniert es einwandfrei und wenn ich es genauso 
an PORTD anschließe und den Quellcode auf PORTD ändere funktioniert es 
nichtmehr.

Vielen Dank schonmal für eure Hilfe

Gruß Jörg

von Phantomix (Gast)


Lesenswert?

Siehe Fusebits -> JTAG abschalten, dann sollte es laufen

von Andreas K. (ergoproxy)


Lesenswert?

Doch sehr interessant zu sehen, wie sich der Umgangston ändert wenn sich 
hier ein Weiblein herverirrt ^.^

P.s. Das ist nicht böse gemeint und würd mir wünschen es gäbe mehr 
Bastlerinnen ^^

Für den billigsten Einstieg in die µC Welt kann ich die Seite hier 
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm empfehlen. Ich hab 
als ich angefangen hab zum auszuprobieren ob ich überhaupt in der Lage 
bin sowas zu machen den Programmer da zusammengelötet (naja Kunststück 
bei dem spartanischen Design ^^) und siehe da alles hat funktioniert. 
Wobei ich nur das STK500 empfehlen kann obwohl es etwas teuer ist, aber 
ich würde es nicht mehr hergeben.

Gruß ErgoProxy

von Phantomix (Gast)


Lesenswert?

ErgoProxy: Man will sie ja nicht gleich vergraueln ;-)

von M. M. (miszou)


Lesenswert?

Hi

@ Jörg Irzinger (mecrumble)
welcher Controller wird denn benutzt?

@Phantomix (Gast)
Wenn es der PortC wäre würde ich Dir zustimmen, aber nicht bei PortD.

Gruß MISZOU

von Sarah H. (saranda)


Lesenswert?

Huhu,
also ich habe mir jetzt dieses Board und den Atmega-Controller bestellt.
Hat jemand eine Empfehlung für ein LCD oder ist das im wesentlichen egal 
weil die Anschlüsse gleich belegt sind - hauptsache ich nehme eins 
basierend auf dem HD44780-Standard?

Viele Grüße,
Sarah

PS: Wie funtioniert das hier mit PN´s? Werden die automatisch als e-Mail 
verschickt? Phantomix, du solltest nämlich eigentlich eine haben.

von Martin K. (mkohler)


Lesenswert?

Sarah Hof wrote:
> PS: Wie funtioniert das hier mit PN´s? Werden die automatisch als e-Mail
> verschickt? Phantomix, du solltest nämlich eigentlich eine haben.

Die PMs werden als Email an den Empfänger weitergeleitet.
(You've got mail... ;-)

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Sarah Hof wrote:
> Huhu,
> also ich habe mir jetzt dieses Board und den Atmega-Controller bestellt.
> Hat jemand eine Empfehlung für ein LCD oder ist das im wesentlichen egal
> weil die Anschlüsse gleich belegt sind - hauptsache ich nehme eins
> basierend auf dem HD44780-Standard?
>
> Viele Grüße,
> Sarah
>
Im Prinzip ist es wohl egal welches LCD Du nimmst. Kommt wohl eher auf 
Deine Anforderung an. Größe, Farbe, Backlight, ...
Worauf ich achten würde, sind die Anschlüsse. Manche Displays kommen mit 
Folienleiter, z.B. das hier im Forum schon öfter erwähnte LCD-Modul 
WINTEK WD-C2704M-1HNN von Pollin. Wenn Du den Folienleiter durch ein 
Flachbandkabel ersetzen willst, dann ist das ein rechtes gefrickel beim 
Löten.
Im Prinzip musst Du Dir das Datenblatt zu deinem Display anschauen und 
sehen ob Du damit klar kommst.

Welchen ATMega hast Du Dir den jetzt bestellt?

von Tobias P. (hubertus)


Lesenswert?

Hoi Sarah,
ich hab nicht jeden Post hier gelesen, aber so wie ichs verstanden habe, 
fängst du grade erst mit Mikrocontrollern an.
Ich würde an deiner Stelle nicht gleich mit dem LCD anfangen, und zwar 
aus folgendem Grund:
Du musst erst ja noch irgendwie den Mikrocontroller programmieren. Dazu 
benötigst du einerseits irgend eine Entwicklungsumgebung, andererseits 
ein passendes Programmiergerät. Dann musst du ja auch noch irgend eine 
Programmiersprache beherrschen, mit der du den MC programmierst. So ein 
Standard-Einsteigerprojekt ist ne blinkende LED. Versuch das mal, 
meinetwegen mit nem AVR (ansonsten kann ich 8051er auch sehr empfehlen, 
mit denen habe ich angefangen). Wenn du das erst mal fertig gebracht 
hast, weisst du dann auch sicher, dass dein Programmiergerät, Compiler 
und so weiter funktioniert. Und dann kommt das LCD.
Anstatt am parallelen Port würde ich es aber lieber am seriellen 
anschliessen. Denn: der parallele Port ist relativ empfindlich. Ich hab 
zwar noch nie was zerschossen an meinem, aber anscheinend kann der 
kaputt gehen, wenn nur der geringste Kurzschluss auftritt. Das kann dann 
auch dein Mainboard grillen, weil der Controller für den parallelen Port 
im Chipset drin ist. Der serielle hingegen ist fast genauso einfach, und 
ausserdem Kurzschlussfest. Zudem hat er einen praktischeren Stecker 
(Parallelport ist ja recht klobig, ebenso das Kabel mit seinen vielen 
Adern).
Für den seriellen Port benötigst du noch einen Pegelwandler wie den 
MAX232, da er mit +/-12V-Pegeln arbeitet.
Viel Spass beim Basteln,
Gruss

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Tobias Plüss wrote:
> Hoi Sarah,
> ich hab nicht jeden Post hier gelesen, aber so wie ichs verstanden habe,
> fängst du grade erst mit Mikrocontrollern an.
> Ich würde an deiner Stelle nicht gleich mit dem LCD anfangen, und zwar
> aus folgendem Grund:
......
Wenn Du Dir dann doch mal die mühe machen würdest den Thread zu lesen 
...
Das Board, von dem Sarah spricht, ist bereits ein Programmiergerät und 
verfügt über einer RS232-Schnittstelle.
Das sie für die Programmierung auch noch die entsprechende 
Entwicklungsumgebung braucht ist doch wohl selbstverständlich, oder?

von Tobias P. (hubertus)


Lesenswert?

> Entwicklungsumgebung braucht ist doch wohl selbstverständlich, oder?

Natürlich. Aber nicht für jeden Controller gibts das fixfertig.
Ich musste mir meine selber basteln....

von Sarah H. (saranda)


Lesenswert?

Hallo,
danke für Eure Mühen. Ich kann zumindest sagen dass Grundkenntnisse in C 
vorhanden sind und ich zumindest erkennen kann was ein Programm macht 
bzw. machen sollen. Ich brauche für mein Projekt unbedingt ein LCD ich 
möchte ja etwas ausgeben. Mit blinkenden LED´s habe ich schon gearbeitet 
- zwar nicht indem ich Blinkfrequenzen usw. programmiert habe sondern 
als Test-LED und eben das will ich ja ersetzen durch eine Textausgabe 
auf einem LCD damit die Zählerei der Blinkimpulse durch den Anwender 
entfallen kann.
KLingt wahrscheinlich komplizierter als es ist aber die Winterabende 
sind ja bekanntlich lang und dunkel und im Bastelkeller ist es dafür 
umso heller und wenigstens war.
Viele Grüße,

Sarah

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
Noch kein Account? Hier anmelden.