Forum: Mikrocontroller und Digitale Elektronik 4x20 LCD init


von Michael B. (minimichi)


Lesenswert?

Servus,
ich benutze ein atmega168PA mit externen 18,432MHz und bin gerade dabei 
mein 4x20 LCD (KS0073) ein zu binden, allerdings klappt das nicht so wie 
ich will.
Habe es mit zwei Librarys probiert.
1. mit dem Tut von 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
hier klappt das initialisieren, habe alles angepasst, so das die Zeilen 
auch passen. Allerdings habe ich ein eigenartiges Problem, dass ich mir 
nicht erklären kann....
Wenn ich z.B. was in die erste Reihe schreibe, kopiert es ab dem 13ten 
bis inklusive den 20ten Charakter in die nächste Reihe.
Bsp:
  Zeile1 : 1 2 3 4 5 6 7 8 9 0 1 2 (3 4 5 6 7 8  )
  Zeile3 : 3 4 5 6 7 8  
  Zeile2 :
  Zeile4 :

das gleiche passiert auch mit dem anderen Zeilen, Zeile 3 kopiert die ab 
einem bestimmten Punkt an das Ende von Zeile 1.

Ich selbst nehme hier an, das es an meinem 4x20 LCD liegt, da der 
Kontroller nur nahezu 100% kompatibel ist....

2. peter fleury lib
hier habe ich ja sogar die schöne Option für meinen Kontroller, 
allerdings habe ich es nicht gepackt mein LCD zu initialisieren. Ich 
habe alles durch gegangen und auch das nötige eingestellt, aber nichts.

  #define XTAL 18432000
  #define LCD_CONTROLLER_KS0073 1

  #define LCD_LINES           4
  #define LCD_DISP_LENGTH    20
  #define LCD_LINE_LENGTH  0x40
  #define LCD_START_LINE1  0x00
  #define LCD_START_LINE2  0x40
  #define LCD_START_LINE3  0x14
  #define LCD_START_LINE4  0x54
  #define LCD_WRAP_LINES      0

  #define LCD_IO_MODE      1

  Port habe ich PORTC benutzt, die Belegung gelassen.



Sitze schon den ganzen Tag an diesem Problem und verzweifle, weil ich 
einfach nicht weiter komme. Bitte daher um eure Hilfe.

mfG Michael

von Nachtschicht (Gast)


Lesenswert?

Du wirst nicht drum herumkommen, das Datenblatt des Kontrollers KS0073 
zu lesen und die dort beschriebene Initialisierung mit einer deiner 
libraries zu vergleichen.

PS: Wenn du Hersteller und Typ deines LCD nennst bekommst du ggf. mehr 
Hilfe

von Michael B. (minimichi)


Lesenswert?

Hey, super vielen dank dass sich jemand noch um die Uhrzeit die Mühe 
macht mir zu antworten :D TOP!.
Ich habe ein EA DIP204-4
Habe allerdings das Problem vor kurzem selbst gelöst. Hier im Forum hat 
sich einer die mühe gemacht dazu auch ne Library hoch zu stellen, die 
ich ausprobiert habe. Zuerst hat auch diese nicht funktioniert bis ich 
einfach mal seine vorkonfigurierten PINS verwendet habe und siehe da! es 
klappt ....
Ich bin mir nicht sicher warum, aber es funktioniert bei mir nur mit dem 
PortD. ich habe auch vorher schon andere aus probiert, allerdings nicht 
mit PortD, weil ich hier über die ersten zwei Pins RS232 UART laufen 
habe und Pin 3 als interrupt benutze. Naja da ich das LCD als 4Bit 
benutze hat das nun doch noch super dahinter gepasst und funktioniert.
Die Library aus dem Forum kann ich auch empfehlen:
Beitrag "LCD EA DIP204-4 Initialisieren"

Selbs habe ich aber nun die von peter fleury benutzt:
http://homepage.hispeed.ch/peterfleury/group__pfleury__lcd.html

mfG Michael

von Pete K. (pete77)


Lesenswert?

Du hast also so lange gesucht, bis Du eine Lib gefunden hast, die 
funktioniert, weisst aber immer noch nicht, warum der erste Ansatz 
nicht funktioniert hat :-)

von Michael B. (minimichi)


Lesenswert?

Nene, so kann man das nicht sagen.
Wenn du den mit dem ersten Ansatz, die Lib aus dem Tutorial meinst:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
dann weis ich schon warum das nicht geklappt hat. Es lag an der 
Initialisierung. Die Commandos meines Displays sind andere als die in 
dieser Library eingestellt sind.
Also habe ich mir ne Lib gesucht, die ich meiner Meinung nach, für mich 
besser einstellen kann.
Warum allerdings der "erste" Ansatz auf dem PortC so halbwegs 
funktionierte aber der "zweite" Ansatz dann erst ging nach dem ich PortD 
verwendet habe, ist mir leider wirklich noch ein Rätsel.

mfG Michael

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.