Forum: Mikrocontroller und Digitale Elektronik HD44780 an AVR32 3.3V


von Richard B. (rbrose)


Lesenswert?

Hallo zusammen,

ich habe das NGW100 Board mit einem AVR32 drauf.
Jetzt möchte ich ein HD44780 LCD 4x20 drauf anschließen.

Das Problem ist .. der AVR32 hat ja 3.3V an den Pins. Das LCD aber läuft 
mit 5V. kann ich die Pins einfach so an den AVR32 anschliesen? Oder muss 
ich es anders machen?

Vielen Dank im voraus für eure Hilfe.

von (prx) A. K. (prx)


Lesenswert?

Ein HD44780-Display wird 3,3V als high erkennen, das ist kein Problem. 
5V Stromversorgung benötigt das Display trotzdem.

Als Alternative kannst du die EA DOG Displays verwenden, die benötigen 
garkeine 5V.

von Michael E. (rince)


Lesenswert?

Hallo

Ich habe genau das gleiche auch gerade im Aufbau. Funktioniert 
einwandfrei. 3.3 V wird tatsächlich als high erkannt. Nur umgekehrt geht 
es nicht da die pins vom AP7000 nicht 5V-tolerant sind. Entweder 
arbeitet man also ohne das Busyflag auszulesen (meine Variante) oder man 
baut einen Levelshifter, zum Beispiel in Form eines Spannungsteilers.

Ich habe R/W direkt auf GND gelegt um sicher zu gehen dass ich den 
AP7000 nicht zerstöre.

Uebrigens gibt es auf dem board einen Jumper, J16 glaube ich, an dem man 
direkt die Spannungsversorgung vom Netzteil abrgreifen kann. Ganz 
praktisch um mit einem 7805 die Spannung für das LCD und das Backlight 
zu generieren.

Grüssse,

Michael

von Richard B. (rbrose)


Lesenswert?

Ich habe gesehen das an D4 - D7 und RS machne ein 10Kohm oder 390Ohm 
Widerstand einsetzt. Für was ist er gut?

von (prx) A. K. (prx)


Lesenswert?

Die eleganteste Lösung: R/W-Pin vom Display auf GND legen und eine feste 
Zeit warten statt das Busy-Flag abfragen. Keine Widerstände nötig.

von Richard B. (rbrose)


Lesenswert?

@Michael E.

Programmiert du den AVR32 direkt? Oder benutzt du es mit einem Linux 
System?
Wenn mit Linux, dann machst du den Treiber für das HD44780 als Kernel 
Modul oder Standalone Applikation?

Wie greifst du auch die Pins zu?

von Michael E. (rince)


Lesenswert?

Richard B. wrote:
> @Michael E.
>
> Programmiert du den AVR32 direkt? Oder benutzt du es mit einem Linux
> System?
> Wenn mit Linux, dann machst du den Treiber für das HD44780 als Kernel
> Modul oder Standalone Applikation?
>
> Wie greifst du auch die Pins zu?

Die Applikation läuft unter Linux und ist in Python geschrieben. Ich 
habe diese Sprache gewählt weil ich sie besser kenne als C und weil ich 
Daten aus dem Web anzeigen will und daher gute String- und 
Parserfunktionen brauche.

Das Programm läuft standalone und der Zugriff auf die I/O ist über das 
/config/gpio interface gelöst, d.h. das Skript erstellt die nötigen 
Verzeichnisse in /config/gpio und ändert die Pinzustände durch 
Schreibzugriffe auf /dev/gpioX.

Besonders elegant finde ich diese Lösung nicht aber sie funktioniert 
sehr gut.

Grüsse,

Michael

von Richard B. (rbrose)


Lesenswert?

@Michael E.

Vielen Dank für die Information.
Ich werde heute Abend das alles in C versuche, erstens als Standalone 
Applikation auch per /dev/gpioX und dann per Kernel Modul und memory map 
Zugriff auf die Pins.

von Benedikt K. (benedikt)


Lesenswert?

A. K. wrote:
> Die eleganteste Lösung: R/W-Pin vom Display auf GND legen und eine feste
> Zeit warten statt das Busy-Flag abfragen.

Ob das elegant ist, darüber kann man streiten. Mit dieser Methode sind 
schon etliche (auch große, bekannte Firmen) auf die Nase gefallen, als 
irgendwann eine andere andere Charge Treiber ICs mit langsamerem 
Oszillator verbaut wurden.
Folgendes ist eine elegante Lösung ist: Die Daten in eine FIFO schreiben 
und dann in einem Timer Interrupt mit mindestens der doppelten, 
typischen Wartezeit ins Display schreiben.

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.