www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik (wieder) LCD mit HD44780


Autor: Keith Grünberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi all!

Wieder mal ne Frage zu LCD´s mit HD44780 Chip!
Muss gleich vorausschicken: Bin anfänger bez. AVR´s!

Folgendes Problem:
Habe mit so ein Display mit 16*2 zugelegt und kanns auch ansteuern.
Jedoch nur die erste Zeile.
Ich verwende zwar den BASCOMAVR-Basic-Compiler, aber nicht die 
eingebauten Befehle wie "LCD" etc.
Habe die Funktion "händisch" nachprogrammiert.
Meine Frage: Wie kann man die Zweite Zeile ansteuern.
So wie ich das verstehe muss ich die DD-RAM Addr auf H40 setzten.
Ich mach das indem ich erstmal E auf Hi setzte, und RS aus Lo, 
anschliesend, lege ich am Datenbus die gewünschte Addresse plus 128, z.B 
192, also erstes Zeichen in der Zweiten Zeile.
Danach geht E auf Lo (damit wirksam), danach E auf Hi und Datan an den 
Bus, z.B. 65 f. "A" und dann setz ich E wieder auf Lo.
Wie gesagt, alles "händisch" nachprogrammiert.
Mit der Ersten Zeile funktionierts, aber ich komm einfach nicht in die 
2. Zeile!
Hat jemand eine Idee? Kann es sein, dass bei der Doku zu meinem Display 
ein Fehler drinn ist?
Danke für die Hilfe!

Cu
Scotty!

Autor: Jornbyte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Scotty

Du mußt erst den Cursor auf die Adresse H40 stellen und dann das Zeichen 
Schreiben.

mfg Jornbyte

Autor: Keith Grünberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jornbyte!

Danke für die Antwort!

Das ist mir schon klar aber es mag trotzdem nicht!

Listing sieht in etwa so aus:

PortD ist D0 bis D7
PortC.7 ist E, PortC.6 ist RS

.
init-Teil.
.
.
PortC=128          'E=1, RS=0 => es kommt ein Befehl
delay              'sicherheitshalber warten
PortD=192          'DDRamadr=H40 = 1Stelle 2. Zeile
delay              'sicherheitshalber warten
PortC=0            'E=0 RS=0 => Daten von Bus lesen u. verarbeiten
delay              'sicherheitshalber warten
PortC=192          'E=1, RS=1 => es kommen Daten
delay              'sicherheitshalber warten
PortD=65           '"A"
delay              'sicherheitshalber warten
PortC=0            'E=0, RS=0 => Daten von Bus lesen und anzeigen
.
.
.


So sollte es doch funken oder???
Wie gesagt, alles was ich ans Display sende kommt auf die erste Zeile, 
somit weiss ich, dass der Rest OK ist. Aber das mit der DDRamAddr. krieg 
ich nicht hin!
Sonst noch ne Idee??

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Wie hast du es denn initialisiert? 1 oder 2 zeilig, 5x7Dots? 5x10 Dots 
geht nur einzeilig.
Das Init für 8-Bit Datenlänge lautet:
$30 -> Pause 4,1ms ->$30->Pause >0,1ms ->$30 -> 
Pause0,04ms->$38(8Bit/2Zeilen) ->0,04msPause->$0C/$0E(Disp/Displ+Kursor 
ein)->0,04msPause->$01(Displ+RamAdr.=0)
Alles mit RS/RW = 0
Nun kannst du Zeilenadr. ausgeben. Ich sehe gerade was! Hast du $40 
geschrieben? Du musst DB7 auf 1(=$80) setzen, der Adressbereich lautet 
dann $C0-$CF.
Übrigens in der Codesammlung gibt es ein DCF77-Teil, da ist das alles 
verarbeitet.Leider nur ASM
Ich hoffe aber es gelingt jetzt.
Gruss  Uwe

Autor: Scotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI Uwe!

Danke für die Antwort!

Das mit dem Init funzt alles!
2 Zeilen
5x7 Dots
Clear geht
Cursor aus/ein geht
Blink ein/aus geht
Alles geht bis auf 2 Zeile!
Deshalb meine Frage ob es sein kann das in der Doku ein Fehler ist und 
evt. die Codes f. 5x7 und 5x10 vertauscht sind.
Kann aber fast nicht sein, da die Zeichen alle 5x7 sind.
Addresse C0 ist dez. 192!
Das hab ich!
Gibts einen bestimmten Grund das du $30 3 x schickst?

Danke f. den Tip mit DCF77 , schaus mir mal an!

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
$30 dreimal weil's in der Dock so steht, habe aber festgestellt wenn die 
Initzeit für das 1.mal hoch genug ist reicht einmal. Ist aber nicht 
belegt, es geht auch gleich mit $38.
Gruss Uwe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail ü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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.