Hallo, ich bin gerade dabei an einem DE0-Nano-Board ein altes 16x4 LCD-Modul zu betreiben. Dazu habe ich im QSYS das 'Character LCD' eingebunden und nach einigem hin und her, auch über nios-2 ein Beispielprogramm ausgeben können. Bei dem von Altera gestellten 'Character LCD' handelt es sich um den nicht konfigurierbaren 'Optrex 16207 LCD Controller core' eben für ein 16x2 Optrex 16207-Modul. Ich betreibe jedoch ein 16x4-Modul 'TM164AAA' http://pdf.datasheetcatalog.com/datasheets2/36/361888_1.pdf Ich weiß jetzt nicht so recht, ob/wie ich die unteren zwei Zeilen beschreiben kann. Die oberen werden mit dem Beispielcode beschrieben. Da ich es jetzt endlich am Laufen habe, würde ich nur ungern alles komplett neu machen ;) Im Anhang habe ich mal meinen display-code angehängt. Es geht um die Funktion 'test_lcd()' welche ich in der main aufrufe. Vielleicht hat jemand ein paar Tipps parat.
klar ist mir, dass hier die Zeile gesetzt wird: /* Set Address */ IOWR(LCD_0_BASE, LCD_WR_COMMAND_REG,0x80); 0x80 ==> 10000000 ==> Zeile 1 0xC0 ==> 11000000 ==> Zeile 2 Aus dem Datenblatt ist mir das ehrlich gesagt nicht ersichtlich. Durch probieren erwies sich 0x00 als Zeile 3 0x00 ==> 00000000 ==> Zeile 3 im Internet habe ich Standardadressen gefunden, aber die treffen bei mir leider nicht zu. DISPLAY POSITION 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 00 01 0F 40 41 4F 10 11 1F 50 51 5F
:
Bearbeitet durch User
Setz doch einfach mal den Cursor-Modus auf Increment und füll dann Zeichen 0x00 ... 0xF0 ins DDRAM (einfach den Wert schreiben, inkrementiert wird dann autom.), am Besten langsam, dann bekommst du die Reihenfolge und auch den Wert in jeder Zeile/Spalte. Evtl. helfen auch unterschiedliche Folgen 0x00..0xF0.
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.