Forum: Projekte & Code C Code für SED1520, Dip122 oder DIP180


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von gamps (Gast)


Lesenswert?

Hallo zusammen,

auch wenn es für einige ermüdend ist, ich bin auf der Suche nach einem 
lauffähigen C Code, um das DIP-180 anzusteuern. Mir würde eine Routine 
für einen einzelnen  SED1520 dabei ja schon reichen.
Alles was ich bisher hier gefunden habe, war leider nicht ausreichend, 
um mein Display zum Laufen zu bringen. Hat irgendjemand einen Code, der 
bei ihm selber schon mal funktioniert hat ?

Für Hilfe wäre ich sehr dankbar.

Viele Grüße

Stephan

von Maxx (Gast)


Lesenswert?


von gamps (Gast)


Lesenswert?

Danke für die schnelle Antwort. Hatte vergessen zu schreiben, daß es 
idealerweise für einen Atmega16 sein sollte.

von Maxx (Gast)


Lesenswert?

SED1520 ist schon eine komplexere Sache. Da musst Du schon selber auch 
etwas Denkleistung einbringen.

von gamps (Gast)


Lesenswert?

Sehr kluge Worte..hätte ich nicht schon seit Tagen daran rumprobiert, 
hätte ich die Anfrage auch gar nicht gestellt...

Wie dem auch sei. Hab jetzt einen lauffähigen Code auf Basis einer Datei 
von
http://en.radzio.dxp.pl/sed1520/

Bin gerade dabei das Programm auf den DIP180 mit seinen 3 SED1520 
Controllern anzupassen.
Sobald der Code fertig ist, stelle ich ihn hier rein. Wenn ihn schon 
jemand
vorher benötigt, kann er mich gerne per eMail kontaktieren.

von Manfred B. (vorbeigeschlendert)


Angehängte Dateien:

Lesenswert?

OK, dann hier mal mein Beitrag... das ein oder andere kann man sicher 
noch verbessern/schöner/schneller/anders machen, aber so klapperts im 
Moment ganz ordentlich.

Das sind nur die LowLevel-Routinen für ein EA DIP180B-5NLW, 180x32 Pixel 
verteilt auf 3 SED1520, Linien, Kreise etc gibt es ja zuhauf...

Da ich diese Routinen in ähnlicher Form auch für die DOG-Displays nehme 
(aus denen man ja das DisplayRAM nicht zurücklesen kann) benutze ich 
auch hier ein ShadowRAM im Controller für den Displayinhalt

Die Portdefinitionen sind im zugehörigen Headerfile (kommt gleich)

Kommentare, Hinweise zu Fipptehlern, Fehlern, Verbesserungen, Tips etc 
sind willkommen!!

von Manfred B. (vorbeigeschlendert)


Angehängte Dateien:

Lesenswert?

und das Headerfile dazu

von gamps (Gast)


Angehängte Dateien:

Lesenswert?

Hier der versprochene Code. Damit läßt sich z.B. das Dip180 (180x32 
pixel mit 3 SED1520 Controllern) ansprechen.
Es ist eine einfache Font Datei mit dabei.
Funktionen wie GLCD_Rectangle, GLCD_Line, GLCD_Circle, GLCD_WriteString, 
GLCD_SetPixel sind getestet und funktionieren über die Controllergrenzen 
hinweg.
Es gibt noch mehr Funktionen in den graphics Dateien. Diese sind jedoch 
noch nicht getestet.
Ich hoffe das hilft dem ein oder anderen Zeit bei der Ansteuerung von 
graphischen Displays zu sparen.

Viele Grüße

Stephan

von gde (Gast)


Lesenswert?

Hallo.

Versuche gerade den Code von gamps zum laufen zu bringen.
Mein Problem ist, dass ich keinen Kopletten Port frei habe.

kann ich die Zeilen

#define SED1520_DATA_PORT   PORTD //Data Port
#define SED1520_CONTROL_PORT   PORTA //Control Port for RW, Ao, 
E1,E2,E3,RES

auch auf mehrer ports verteilen? also

(pseudocode)
#define SED1520_DATA_PORT   = [PORTA0,PORTA2,PORTB4,PORTB7,...]
#define SED1520_CONTROL_PORT   = [PORTC0,PORTC1,PORTD0,PORTD2,...]
(/pseudocode)

Wenn ja wie? oder geht das nicht?

Danke schon mal..

von Christian (Gast)


Lesenswert?

Natürlich kannst du die benötigten acht Bit auf mehrere Portpins 
verteilen. Allerdings nicht so, wie du das hier geschrieben hast.
Du mußt schon die einzelnen Bits auf den jeweiligen Portpin schreiben,
z.B. so (in ein schönes Define verpackt):

#define SED1520_DATA_PORT(a) PORTA0 = a & 0x01; /* Bit 0 */ \
                             PORTA2 = (a >> 1) & 0x01; /* Bit 1 */ \
                             PORTB4 = (a >> 2) & 0x01; /* Bit 2 */ \
                             ...

Das ganze ist halt für den Controller ein wenig aufwendiger und drückt 
dementsprecht die Gesamtperformance. Anstatt eines 8bit Portzugriffs 
müssen mehrere Schiebe-, Maskier- und Schreibzugriffe durchgeführt 
werden.

von Christopher (Gast)


Lesenswert?

Hallo,

Diese "Ladungspumpe" wie funktioniert die genau ?


Grüsse

von Franz (Gast)


Lesenswert?

Hi,

hat jemand einen Schaltplan für den Demo-Code von gamps?

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.