Forum: Projekte & Code Routinen für SED1565 (z.B. für 128x64 LCD Hyundai HP12542


von Benedikt (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein paar Low Level Routinen um LCDs mit Controller SED1565 oder
ähnlichen anzusteuern, wie z.B. das 128x64 Hyundai HP12542R LCD von
Pollin.
Da viele Controller von Epson sehr ähnlich sind, funktioniert der Code
eventuell auch mit anderen LCD Controllern (das Pollin LCD hat nämlich
keinen SED1565, sondern irgendeinen anderen, kompatiblen)

von Herr Litz (Gast)


Lesenswert?

Für welchen µC sind die Routinen?

von Philipp Karbach (Gast)


Lesenswert?

MCU = atmega8515

dürfte aber auf den anderen auch laufen, ich wollte es bald mal auf nem
atmega8 ausprobieren. Der code benutzt nur Ports. allerdings 7, was für
den 8 ein bisschen doof ist.

von Benedikt (Gast)


Lesenswert?

Dann lass Reset des LCDs weg und häng ein RC Glied dran.
Ist zwar keine perfekte Lösung, geht aber.

von Philipp Karbach (Gast)


Lesenswert?

aber ich kann doch auch die bitmaske für D0-D7 auf zwei ports verteilen?
Ich weiß zwar nicht genau wie das geht und im moment zeigt mein lcd noch
gar nichts an aber das müsste doch gehen oder?

von Benedikt (Gast)


Lesenswert?

Du musst dann bei den s/cbi (xxxPORT, xxx) den Port ändern.

von Philipp Karbach (Gast)


Lesenswert?

ne für die steuerleitungen sind ja genug ports da, für D0-D7 aber nicht,
da hattest du einfach LCDP=byte; eingesetzt. sendest also die ganzen
8bit als 1 byte and den gesamten Port. Ich dachte mir dann ich sende zu
erst die ersten 6 bits und shifte dann byte << 6 runter und sende die
dann auf nem anderen port. Dumme idee? Hat auch leider nicht geklappt.

von Benedikt (Gast)


Lesenswert?

Theoretisch geht das, aber diese ganze Schieberei kostet halt einiges an
Rechenleistung (vor allem in C). Aber funktioniern tut es.

Ich rege mich auch andauernd über den mega8 auf, warum dieses Dreckteil
keinen UART+8bit Port hat.
Ansonsten bleiben dann entweder nur der tiny2313 oder gleich ein
mega8515.

von Philipp Karbach (Gast)


Lesenswert?

weiß jetzt nicht ob du genau den port meinst aber der hat doch UART? man
kann schließlich daten über nen max232 schicken.

von Tobias S. (tobias)


Lesenswert?

Hi,
ja aber das UART liegt natuerlich auf dem einigen verwendbaren 8 Bit
Port, wenn man ein Qurz am Controller hat.

Gruss Tobias

von Philipp Karbach (Gast)


Lesenswert?

da hast allerdings recht.

von Sausemann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle
@benedikt
ich hoffe du kannst mir weiterhelfen.
Habe mal deine Ansteuerung in Assembler umgesetzt.
Um diese zu testen habe ich die routine lcd_test eingefügt. Jedoch
springt das lcd nicht in die nächste page ... bin schon fast am
verzweifeln.
Hoffe du hast Rat ... danke

von Sausemann (Gast)


Lesenswert?

habe den Fehler gefunden ... war Hardware ... aber trotzdem danke

von Benedikt (Gast)


Lesenswert?

Solche Probleme kenne ich:
Hab vor kurzem 4 Stunden an einem OLED Display den Software Fehler
gesucht, bis ich merkte, dass ein Pin nicht richtig verlötet war.

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte das Pollin Display an meinem Atmega16 anschließen. Das habe
ich wie auf dem Schaltplan im Anhang getan.
Die Software habe ich wie folgt geändert:

#define RW  3
#define  Reset    4
#define CS    5
#define A0    6
#define Enable  7

#define LCDP  PORTC  //Port für D0-7
#define LCDPI  PINC
#define LCDDD  DDRC

#define LCD    PORTD  //Port für Steuerleitungen
#define LCDCDD  DDRD

Dabei habe ich allerdings RW fest auf GND verdratet und nicht am AVR
angeschlossen, weil ich die Pollin Anschlussplatine benutze.

Im makefile habe ich auch MCU = atmega16 geändert.

Blöderweise will das Display nichts anzeigen. In Ordnung ist es, da ich
es über die parallele Computerschnittstelle einwandfrei mit dem
Testprogramm benutzen kann.

Mir gehen so langsam die Ideen aus. Wahrscheinlich bin ich einfach an
einer Stelle zu blöd, aber wenn ich nur wüsste, wo?
Weiß jemand, was ich falsch mache, oder hat jemand eine Idee, wo ich
noch suchen müsste.
Bei der Software gehe ich ja mal davon aus, dass die richtig ist,
außerdem bin ich nach Überprüfung auch der Meinung es müsste so sein.

Meine Leitungen habe ich auch alle einzeln durchgemessen, die stimmen
alle, und eine Verbindung zwischen zweien ist eigentlich
ausgeschlossen, da das Display bei ausgestecktem AVR, aber ansonsten
gleicher Verdrahtung einwandfrei an der parallelen Schnittstelle
läuft.

Den AVR betreibe ich übrigens mit 3MHz Quarz, habe aber von 1 bis 8
auch schon durchprobiert und auch verschiedene Pausen zwischen den
Befehlen versucht.

Ich hoffe mir kann irgendwer auf die Sprünge helfen, bin jetzt seit
einer Woche am suchen, leider ohne Erfolg.

Grüße
Martin

von Martin (Gast)


Lesenswert?

Ich glaub ich habe den Fehler, ein Portpin schein kaputt zu sein.
Werde morgen mal etwas umbasteln und nochmal probieren.

von Simon (Gast)


Lesenswert?

hallo Martin,

ich stehe vor dem gleichen Problem. Habe das LCD an der Adapterplatine
angeschlossen. Von den Widerständen ausgehend habe ich Flachbandkabel
angelötet welche ich dann auf das STK500 stecken kann, das Display will
aber einfach nichts anzeigen.

Ich betreibe den Mega16 mit 14,3 MHz, vielleicht führt das dazu, dass
die Zeit, in welcher die noops ausgeführt werden, zu kurz ist.

Wenn ich etwas herausfinde melde ich mich wieder.

von Simon (Gast)


Lesenswert?

hallo,

es funktioniert. Liegt am Port.

Ich habe zuerst für die Datenleitungen Port C verwendet, das
funktioniert nicht. Mit Port B läuft es einwandfrei.

von SeppK (Gast)


Lesenswert?

Hat schon mal jemand von euch versucht Daten aus dem Display-RAM zu
lesen? Kommt nur Müll zurück. Ansonsten funktioniert das Display.
Ach ja: Habe die Routinen von Benedikt verwendet.

von Läubi (Gast)


Lesenswert?

Port C ist JTAG und kann per Fuse oder Software disabled werden (einfach
mal im Forum suchen gabs shcon 100x)

von Philipp Karbach (Gast)


Lesenswert?

hmmmm ich hab jetzt endlich meinen mega32 aufbau fertig krieg aber gar
kein signal auf dem display! meiner läuft mit 16mhz hab die
steuerleitungen auf PortA und die Datenleitungen auf PortB. Quarz ist
an, weiß jemand was :(?

von Philipp Karbach (Gast)


Lesenswert?

achja mit der pollin anschlussplatine, muss man da vor oder hinter den
widerständen drangehen? ich bin jetzt dahinter dran, ist das falsch?

von Michele B. (luxx) Benutzerseite


Lesenswert?

Hallo,
ich verwende auch die asm routine für das pollindisplay habe aber ein 
ptoblm, ich glaube dass das display initialisiert wird aber danch geht 
irgendwie nixmehr, alle pixel sind schwarz, mega16 läuft mit 1-4Mhz habe 
alles probiert aber ich komme nicht weiter, sind euch da noch andere 
fehlerquellen bekannt?

luxx

von kubi (Gast)


Lesenswert?

Hallo, ich möchte das Display von Pollin (mit SED1565) an einem M32C80 
Controller von Renesas betreiben, hat jemand da software für mich um 
dieses anzusteuern?
lg kubi

von Peter M. (avr_rider)


Lesenswert?

Hallo Zusammen!

Die Routinen von Benedikt laufen super, allerdings habe ich noch eine 
Frage offen: Wie kann ich einen String aus einer Variablen ausgeben? Der 
auszugebene Text steht im Beispiel direkt in der Methode ala 
lcd_string_P("Test"). Wenn ich aber ein lcd_string_P(ausgabestring) 
machen möchte, dann kommt ein "error: invalid initializer" Fehler.
Hat jemand eine Idee? Ich möchte einen Wert vom ADC auf dem LCD ausgeben 
und muss daher variablen Text ausgeben können, also einen char[] 
übergeben können

Schon mal vielen Dank!

von slater (Gast)


Lesenswert?

danke für die routinen,
funktionieren super mit mein atmega8, und haben mir somit ne menge 
arbeit erspart.

viel dank,
mfg slater

von Michael (Gast)


Lesenswert?

Hallo!

Kann sein das wie SeppK schon gesagt das Auslesen des Display-Rams nicht 
funktioniert? Hat das jemand schon mit Erfolg getestet?

Hias

von Theodore H. (thindy)


Lesenswert?

> Der code benutzt nur Ports. allerdings 7, was für den 8 ein bisschen doof ist.

Ich bin ganz neu bei AVRs aber ziehe auch einen mega8 in Betracht um so 
ein Display anzusteuern. Wiso ist das mit den 7 Ports doof bei einem 
Mega8?

Danke, Thindy

von misterblues (Gast)


Lesenswert?

Hallo,
soweit ich weiss muß man die Speicherzelle zweimal auslesen damit man 
den richtigen Wert bekommt. (Dummyread)Das liegt wohl an den internen 
Puffern.
Der andere Punkt ist das bei dem Pollin Parallelport der Anschluß fest 
auf schreiben eingestellt ist, aber das wir SeppK wohl wissen...

Gruß Misterblues

von juppo (Gast)


Lesenswert?

Hallo
Ist der SED1565 kompatibel zu KS0713  ??

Gruss Juppo

von F. P. (pl504)


Lesenswert?

Vielen Dank an Benedikt für die Mühe mit den Routinen.

Schlagt mich für diese Leichenschänderei, aber mich wundert, daß in den 
12 Jahren scheinbar noch niemand die Funktion lcd_stringr(unsigned char 
*s) benutzt hat. ;)

Bei mir hat sie nicht funktioniert (wurde nur unleserlicher Müll 
angezeigt), hier die Korrektur:
1
void lcd_stringr(unsigned char *s) {       //Display String from RAM
2
  unsigned char i;
3
  while (*s) {
4
    for (i=0; i<6; i++)
5
      lcd_writebyte(pgm_read_byte(&Font[*s][i]));
6
    s++;
7
  }
8
}

Der Fehler war, daß *s innerhalb der for-Schleife inkrementiert wurde. 
Vielleicht nützt es dem einen oder anderen?

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.