www.mikrocontroller.net

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


Autor: gamps (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: gamps (Gast)
Datum:

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

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SED1520 ist schon eine komplexere Sache. Da musst Du schon selber auch 
etwas Denkleistung einbringen.

Autor: gamps (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manfred B. (vorbeigeschlendert)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!!

Autor: Manfred B. (vorbeigeschlendert)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und das Headerfile dazu

Autor: gamps (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: gde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christopher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Diese "Ladungspumpe" wie funktioniert die genau ?


Grüsse

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

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.