Datum:
Angehängte Dateien:Hallo Forumgemeinde. nachdem ich bei Pollin das E0855-2 GLCD bestellt habe und nach langem Suchem im Netz nichts, aber auch garnichts, gefunden habe, habe ich beschlossen, einen eigenen Treiber zu schreiben (AVR-GCC). Ich möchte diesen allen zur Verfügung stellen, weshalb der nun hier in der Codesammlung erscheint. Bitte seid nicht zu streng was meinen Code angeht, es war für mich das erste mal. Folgendes kann der Treiber: -das LCD über SPI (Hardware-SPI) ansteuern, also genügt ein Port bei weitem -SPI wird über die Initroutine des GLCD mit-initialisiert -display löschen -page löschen -newline -beliebig alle Pages und Spalten setzen -ein Zeichen darstellen -einen String darstellen -numerische Integer-Werte darstellen -bis zu 10 Grafiken darstellen -auf alle Symbole des E0855-2 zugreifen und diese darstellen Was der treiber (noch) nicht hat oder kann: -einen Cursor -pixel direkt setzen -irgendwelche Grafikfunktionen (Kreise, Striche etc) -Scrollen Was man damit (schon) machen kann: - 16x4 Textdarstellung - Einrückungen von Text - automatischer Zeilenumbruch - max. 10 (in der PICS.c gespeicherte) Grafiken anzeigen - Zugriff auf alle Symbole Über (hoffentlich positive) Kommentare von Euch freue ich mich natürlich Viel Spass.
Datum:
Angehängte Dateien:Die Hintergrundbeleuchtung ist an, aber wegen Blitz leider nicht zu sehen!
Datum:
Angehängte Dateien:Und zu guter Letzt hier das Anschlussschma (angelehnt an das das von Pollin).
Datum:
Angehängte Dateien:Kleines Update mit weiteren Funktionen: -Sleep-Mode und Wakeup -Darstellung von Strings aus dem Flash -frei einstellbarer SPI-Vorteiler
Datum:
Angehängte Dateien:Ich habe den Font umgebaut damit man sich das "ReverseBitorder()" in "SED_putc()" sparen kann. Zusätzlich noch die Umlaute "ÄÖÜäöüß" an das Ende gehängt. Die Font Tabelle ist um überflüssige 25*6 Bytes gekürzt. Un noch eine kleines Goody. Die 7-Segmentanzeige...
/* ----------------------------------------------- * Zahl in Siebensegment-Anzeige darstellen * * Input: digit - dazustellende Zahl * Wertebereich 0 - 9 * segNo - Segment Nummer. Links = 0. * * Vorrausetzung: Page 8 bereits ausgewählt (SED_Chg_page(8)) * ---------------------------------------------- */ static void SED_showDigit(uint8_t digit, uint8_t segNo) { static uint8_t nr[] PROGMEM = { 0b01101111, 0b00101000, 0b01110110, 0b01111100, 0b00111001, 0b01011101, 0b01011111, 0b01101000, 0b01111111, 0b01111101 }; static uint8_t offs[] PROGMEM = { 64, 71, 81, 88 }; if(digit <= 9) { uint8_t segment = pgm_read_byte( &offs[segNo & 3] ) ); /* SEG */ uint8_t pattern = pgm_read_byte( &nr[digit] ); A0_Lo; // Enter SED1530 command-mode SPI_out(COL_Hi | ((segment & 0xF0) >> 4)); // Set Column Hi and Low 4-Bits SPI_out(COL_Lo | (segment & 0x0F)); A0_Hi; for(int i = 0; i < 7; i++) { SPI_out(pattern); pattern >>= 1; // Next bit in pattern } } } |
Datum:
@Werner B. Vielen Dank fürs Weiterentwickeln! Der treiber ist IMHO alles andere als fertig, genügte aber für meine Zwecke (zumindest bisher). Als (noch) Student mit chronischer Geldknappkeit und Bastelleidenschaft ist genau dieses Display recht optimal als ein 16x4 mit Grafikmöglichkeit @ very low cost. Ich würde mich sehr freuen, wenn noch viele (da draussen) den Treiber weiterentwickeln würden... Grüße
Datum:
@Marc Gute Arbeit! Kannst die EAGLE Lib für das Display rausgeben? Könnte ich mir dopppelte Arbeit sparen. Danke ;) Hein
Datum:
@Hein Danke für das Lob :-) Alles was Du brauchst bekommst Du direkt von Pollin. Hier der Download-Link - mit Alles und 2 MB rote Soße... http://www.pollin.de/shop/downloads/D120329S.ZIP Marc
Datum:
Angehängte Dateien:Ok, hier ist ein Update des Treibers etwas mehr Funktionalität: - Ich habe das berichtigte und erweiterte Fontfile von Werner eingebunden. (Danke nochmal an Werner :-) - Der Kontrast lässt sich nun in 32 Stufen ein- bzw. umstellen. Funktion: SED_contrast - Es gibt nun eine einfache Grafikfunktion mit der Bytemuster dargestellt werden können ( Funktion: SED_pixel) - Wenn CS und /CS "hartverdrahtet" sind, kann dies kann dies nun unter den "Portdefinitions" eingestellt werden. Damit sind insgesamt nur noch 4 Port-Leitungen zur Ansteuerung des Displays notwendig: Reset, A0, MOSI und SCK Der Treiber müsste auch mit Displays auf Basis eines SED1530, 1531,1532,1533 und 1534 klarkommen, ebenso mit GLCDs, die größer als das E0855-2 (96x32) sind.
Datum:
Angehängte Dateien:Hier noch ein Update! Eigentlich hatte ich wenig Lust dazu, aber jetzt ist eine Software-SPI implementiert worden (Hurra, freie Pinwahl). Mit dem Schalter SOFT_SPI=0 oder 1 kann zwischen Hardware -oder Software-SPI geschaltet werden. Getestet habe ich das mit einem MEGA8... Have Fun
Datum:
Hallo Marc &
gebt mir einmal bitte einen Tipp, wie das Display
anzulöten ist, habe etwas Angst die Folie zu zerstören.
Gruss
horst.
Datum:
In dem ZIP File von Pollin (s.O.) ist in der Platinenbeschreibung (E????.pdf) eine Lötanleitung.
Datum:
Hallo Marc, ich wollte dein aktuellstes SED1530.ZIP laden, leider gehen mur die vor dem 5.12., bei denen vom 5.12. kommt bei WINZIP die Fehlermeldung: Datei liegt micht im ZP2.0 Standardformat vor kannst du da was machen? Besten Dank Walter
Datum:
Angehängte Dateien:@Walter Bitte schön - nochmal gepackt. Hoffe, es läuft jetzt - lass was hören, wenn's probleme gibt. Bei der Gelegenheit: Ich habe den Treiber aktualiert, etwas erweitert und entwanzt :-) Der Treiber sollte auch mit dem LCD-Modul ALPS LSU7S1011A (auch Pollin) laufen, sogar mit mit dem obigen Schaltplan: Der PIN 41 vom ALPS LSU muss dazu nur auf den PIN 37 gelötet werden. Dann der Reihe nach (nach richtung PIN 1 der Platine) anlöten. Die Pins, die dann überstehen werden eh nicht verwendet, also einfach floaten lassen. Link zum Datenblatt des ALPS: http://www.pollin.de/shop/downloads/D120215S.ZIP Achtung: Das ALPS hat keine Hintergrundbeleuchtung... Have Fun!
Datum:
@Marc, ich musste etwas länger Rätseln um rauszubekommen was du in "SED_set_XY" vorhast. Viel zu kompliziert gemacht. Einfacher ...
//Select Page and Column void SED_set_XY(uint8_t Page, uint8_t Column) { #define COLUMN_ADDRESS_HIGH 0x10 #define COLUMN_ADDRESS_LOW 0x00 SED_Chg_page (Page); Column += 16; // COLUMN_OFFSET des Display addieren. A0_Lo; // Kommando Column-Address higher nibble SPI_out(COLUMN_ADDRESS_HIGH | ((Column & 0xF0) >> 4)); // Kommando Column-Address lower nibble SPI_out(COLUMN_ADDRESS_LOW | (Column & 0x0F)); A0_Hi; } |
Und noch ein SED_pixel das direkt Zeile und Spalte adressiert.
//Set or unset a Pixel (Parameters: column[0-95], row[0-31]) void SED_pixel(uint8_t X, uint8_t Y) { uint8_t mask = (0x80 >> (Y & 7)); SED_set_XY((Y/8) & 7, X); // SED_set_XY takes (Page/Column) //Send the vertical byte-pattern to the according Page SPI_out(mask); } |
Datum:
@Marc >Bitte schön - nochmal gepackt. >Hoffe, es läuft jetzt - lass was hören, wenn's probleme gibt. Danke für deine Mühe, ging aber leider immer noch nicht. Habe mir jetzt ultimatezip installiert da es das aktuelle WINZIP nicht mehr für W98 gibt. Ich kann zwar jetzt die Datei lesen, bin also soweit glücklich, aber vielleicht kannst du ja dein ZIP Programm so einstellen das es nicht das neue 2.0 Format verwendet. Ich denke das sonst auch andere Schwierigkeiten beim entzippen haben werden. Schönes Wochenende Walter
Datum:
@Werner Du hst schon recht, dass die SED_set_XY eigentlich viel zu kompliziert ist. Ich habe sie entsprechend geändert, bzw. gekürzt. Deinen Code habe ich auch ausprobiert - funktioniert bei mir nicht wirklich gut. Die SED_pixel Routine ist als eine vorbereitende Funktion gedacht, die später einmal die Vermischung von Text und Grafik ermöglichen soll. Das dumme mit der SPI-Geschichte ist, dass ich nicht aus dem SED-Speicher lesen kann. Wenn jetzt also ein Buchstabe spaltenmäßig aufgebaut werden soll und zusätzlich eine Grafik, dann habe ich mit der direkten Adressierung so meine Probleme, daher die Aufteilung in Page, Column und Bitmuster. CU
Datum:
Angehängte Dateien:Hier nun ein Update zum Treiber: -Fix: Hardware-SPI-Prescaler und andere Kleinigkeiten -neue Funktion: SED_7segment(Segment[0..3],Nummer[0..9]): Ansteuerung für das kleine integrierte7-Segment Display -wieder verkürzte Fonttabelle -Fonttabelle und Definitionen für die 7-Segmentanzeige sind ins EEPROM gewandert. Passen jetzt ins EEPROM z.B. eines Mega8 (standard ASCII). -Notes.txt mit Bemerkungen viel Spass
Datum:
Es gibt doch sicher eine einfache Möglichkeit aus einer Grafik den entsprechenden C-Programmcode zur Definition des Arrays zu generieren?
Datum:
Ok: // It is suitable to use Holger-Klabunde's "BMP2C" image converter to receive an image as a hex-string. // http://www.holger-klabunde.de
Datum:
Klaus W. wrote: > Ok: > > // It is suitable to use Holger-Klabunde's "BMP2C" image converter to > receive an image as a hex-string. > // http://www.holger-klabunde.de Äh, ja, das ist aber nur ein binary ohne Source. Und wie bekomme ich das jetzt auf Linux zum laufen?
Datum:
Also da ich auf die schnelle nichts gefunden habe, hier ein kleines C-Programm, das PBM Dateien der richtigen Größe so umformatiert, dass die Bitanordnung für das Display angepasst wird. Anschließend kann man dann einfach mit pbmtoxpm in C-Code convertieren.
#include <stdio.h> main() { char gfx[3072]; int x,y; do fscanf(stdin, "%d %d\n", x, y); while ( x==96 && y==32 ); fprintf(stdout, "P1\n#Vertical aligned for GLCD\n96 32\n"); x=0; while ( (gfx[x]=fgetc(stdin)) != EOF ) if ( gfx[x] == '1' || gfx[x] == '0' ) x++; for ( x=0; x<3072; x++) fputc(gfx[((x%8)*96)+((x/8)%96)+((x/768)*768)], stdout); } |
Aber vorsicht: Es muss sich um ein ASCII PBM-File handeln. Binary geht natürlich nicht. Viele Grüße! Klaus
Datum:
Angehängte Dateien:Hallo,
da ich noch nicht so viel Erfahrung mit habe dem µC habe ich den
Stromlaufplan vom 23.10.2007 14:56 Versucht nachzubauen.
Bin jedoch nicht sehr weit gekommen, da einiges nicht ganz klar ist. Die
Anschlüssen an den Mega16/32 lassen mir keine Ruhe.
Die Anschlüsse
PB7
PB5
PB3
konnte ich nicht so ganz zuordnen.
Auch mit Anschlüssen
TP10 -> X1-10
TP9 -> X1-9
kann ich nicht viel mit anfangen, außer dass diese auf dem Printerport
liegen
Währe prima wenn ihr mich in dieser Richtung aufklären könntet.
Danke, schon mal.
Viele Grüße
Ralf
PS: Anbei ein nachgezeichneter Plan um daraus eine Platine zu erstellen.
Datum:
Angehängte Dateien:@Ralf Franz Der Schaltplan vom 23.10.07 ist ein möglicher Aufbau zum Anschluss des Displays an ein STK500 (oder in meinem Fall an das Kanda STK200) über einen 10-poligen Stecker, mehr nicht. Zu Deinen Fragen: PB7 => SCK - Clock-Leitung PB5 => MOSI - Master-Out-Slave-In Leitung Diese beiden Leitungen sind die eigentlichen Steuerleitungen des SPI für das Display. Mit dem aktuellen Treiber (23.01.08) ist es völlig egal, wo Du das SPI hinlegst: entweder auf die dafür vorgesehen Portpins des MEGAxxxx (Hardware SPI) oder sonstwo (Software-SPI). PB3 => Reset - Reset Leitung, um das Display zurückzusetzen. TP10 liefert die Betriebsspannung des Displays (5V) TP9 ist das Ground (GND) (minus-Pol) Mit Printerport hat diese Zeichnung überhaupt nichts zu tun! Die Ansteuerung des Displays erfolgt über SPI und benötigt folgende Leitungen: MOSI, SCK, RST, A0 als minimale Konfiguration. Evtl. ein Portpin mehr um die Hintergrundbeleuchtung anzusteuern (TP7). Im Anhang ist eine Schaltung des Displays an einen MEGA8. Um 2 weitere Portpins einzusparen könnte man auch /CS1 auf GND und CS2 auf +5V legen. Das entstandene Veruchsboard wurde dann meiner Freundin vermacht als "Hab' Dich Lieb" Geschenk mit Grafik und Text (da bleibt kein Auge trocken- kann ich nur empfehlen :-)
Datum:
Hallo Marc, danke für Deine Hilfe. Marc Meise wrote: > Das entstandene Veruchsboard wurde dann meiner Freundin vermacht als > "Hab' Dich Lieb" Geschenk mit Grafik und Text (da bleibt kein Auge > trocken- kann ich nur empfehlen :-) Wolle so etwas ähnliches machen. Viele Grüße Ralf Franz
Datum:
Angehängte Dateien:Hallo, alle zusammen. Ich habe das Display Epson E0855-2 soweit im Betrieb. Allerdings habe ich noch Probleme mit der Kontrastregelung. Möglicherweise habe ich etwas übersehen: Ich habe das Display laut der Sequenz im bereitgestellten Datenblattes in Betrieb genoemmen, und die Hardware ebenso laut Datenblatt. Weiterhin habe ich von links nach rechts auf den Seiten 0-3 als Patter 0xAA ausgegeben, was dünne, waagerechte Linen auf dem Display hinterläßt. Das passiert schrittweise in kurzen Intervallen. Es sollte nichts weiter zur Sache tun, wenn ich erwähne, das ich das Display über einen PIC18F4550 ansteuere, desweiten via serieller Schnittstelle (SPI). Das Problem: Je weiter das die Linien von links nach rechts geschieben werden, desto krontrastärmer wird das Display. Dieser Kontrast kann via Software nachgeregelt werden. Meine Frage: Kann es sein, das dieses Verhalten nicht normal ist? Ich kann es zwar technisch nachvollziehen, aber in der Praxis sollte doch der Inhalt des Displays nichts mit dem Kontrast zu tun haben... Das Display sollte den Kontrast doch nachregeln. Habe ich irgendwo einen Schalter vergessen? Oder waren die Displays aus diesen Grund so preiswert? Ich bitte um Austausch von Erfahrungen mit Leuten, die dieses Display ebenso in Betrieb genommen haben. Danke im Vorraus.
Datum:
> Kann es sein, das dieses Verhalten nicht normal ist?
Ich kenne zwar gerade dieses LCD von Pollin nicht, allerdings fast alle
anderen :-)
Normal ist so ein Verhalten sicher nicht da es wohl daher kommt das
da eine Betriebsspannung zusammenbricht wenn die Belastung steigt.
Der Controller benoetigt ja eine externe Beschaltung zur
Spannungsvervielfachung. Ist die bereits auf dem LCD vorhanden, oder
musst
du die, wie bei den anderen, durch anschalten von Kondensatoren
erzeugen?
Eventuell hast du da was falsch gemacht?
Ausserdem konnte man die bei manchen ICs als 2x oder 3x beschalten.
Eventuell gibt es da noch einen Unterschied in der Programmierung.
Ich wuerd uebrigens nicht soviel auf den Beispielsource von Pollin
geben. Der ist sicherlich auch nur von einem Studenten im Nebenjob auf
die
schnelle Zusammengehackt um die Funktion zu demonstrieren. Da koennen
auch noch grobe Fehler drin sein.
Olaf
Datum:
> Das Problem: > Je weiter das die Linien von links nach rechts geschieben werden, desto > krontrastärmer wird das Display. Hm, also das kann ich so nicht bestätigen. Die Hintergrundbeleuchtung des Displays scheint nicht besonders hochwertig, weshalb der Gesamteindruck etwas "fleckig" ist, wenn die Beleuchtung an ist. Aber das von Dir beschriebene Verhalten kann ich nicht reproduzieren. Ich hätte jetzt auch am ehesten vermutet, dass mit der externen Beschaltung etwas nicht stimmt. Speziell die Kondensatoren zur Erzeugung der Betriebsspannungen. Man müsste sich mal überlegen, wie das Display eigentlich das Bild aufbaut, möglicherweise könnte man daraus Rückschlüsse auf die Art des Fehlers ziehen. Hast du die Spannungen denn mal nachgemessen? Evtl. Mit dem Oszilloskop? Mir ist jedoch auch aufgefallen, das der Kontrast des Matrixdisplays insgesamt etwas schlechter ist als bei den speziellen Segmenten drumherum. Vermutlich hängt das aber mit der Ansteuerung zusammen. Du schreibst, dass Du das Muster in "kurzen Intervallen" ausgibst. Wäre es denkbar, dass die Intervalle so kurz sind, dass die scheinbare Kontrastverringerung nach rechts einfach daher kommt, dass Du das Muster dort "kürzer" darstellst? Aber wenn das dann noch flimmerfrei passiert, müsste es schon sehr schnell sein. Wäre aber ein Ansatz für Graustufendarstellung :-). Hast du denn schon mal ein anderes Muster dargestellt? (0xFF/0x00) Vielleicht ist es eine Unzulänglichkeit des Controllers, die NUR bei diesem Muster auftritt? Na, auch eher unwahrscheinlich, aber man muss ja alles mal ausprobieren :-). Viel Erfolg! Klaus
Datum:
Danke Klaus und Olaf. Ja, ich habe auch andere Muster ausprobiert z.B. Schriftzeichen. Da sieht es noch merkwürdiger aus. Also: In der ersten, sichtbaren Seite(3) stelle ich Schriftzeichen dar. in den unteren drei Seiten (0,1,2) jeweils die Muster 0x00, 0xff, und 0xaa. Sieht dann sehr hübsch aus, weil die dunklen Balken dadrunter dann wie Barcodes ausehen. Lustig, aber nicht Ziel des Entwurfs. Ja, Klaus, ich denke auch das es an den 5 Kondensatoren liegt, die Datenblatt auf Seite 5-16, darstellung oben/links als C2 gekennzeichnet sind. Ich habe dafür Tantal-Elkos benutzt, und es ist denkbar, das es dort zu Spannungen kommt, die die Tantals nicht vertragen. Die werde ich nochmal nachmessen, oder direkt austauschen. Laut Datenblatt kann an den Punkten V1-V5 Spannungen im Bereich von +0,3 bis -18V auftreten. Gut ist, das ich nun weiß, da es sich um einen Fehler handelt, und das soetwas bei euch noch nicht aufgetreten ist. Demnach sollte ich den Fehler finden. Edit: Ich werde die Tantals gegen keramische Vielschichtkondensatoren austauschen. Zu den Mustern @Klaus: kurze Intervalle ^= 0,5 Sekunden Ich habe es nicht genau nachgerechnet. Aber ich habe mir dabei Zeit gelassen, um nicht einen Timingfeler zu provozieren. Die Muster werden immer am Ende angefügt. Siehe auch SED1530.text weiter oben. Im übrigen vielen Dank an Marc Meise. Ich habe mich auf das Datenblatt und seinen Quellcode gestützt um meinen eigenen Code zu schreiben.
Datum:
Datenblatt Epson 5-17: Note *2) Setup Example Damit könnte ich den Fehler finden, denke ich. Ich werde es heute Abend mal ausprobieren.
Datum:
Angehängte Dateien:Hallo Forumgemeinde, ich war zwischenzeitlich fleißig, aber leider ohne Erfolg. Mein Problem (s.o) besteht immer noch. Ich habe mir erlaubt, euch davon ein Foto schicken, und hoffe, das ihr damit etwas anfangen könnt. Foto: Display SED1530 auf Entwurfsplatine Fehlerbschreibung: Kontrastregelung oder Spannungsversorgung arbeiten nicht richtig, daher senkrechte Schlieren auf dem Display
Datum:
@Markus kontrollier' mal, ob alle kontakte vom Folienleiter auch richtig sitzen und keine (fast) kalten Lötstelle vorhanden sind. Du könntest auch während des Betriebs des LCD mit einer Stecknadel mal auf die Solpads der einzelnen kontakte des floienleiters leicht drücken. Vielleicht ist ja einfach nur ein Übergangswiderstand (durch eine schlechte Lötstelle) zu hoch.... Grüße
Datum:
Angehängte Dateien:Es war etwas ähnliches: Zwischen dem Kontakt V1 und dem benachbarten Kontakt Vdd(+5V) war offenbar ein winziger Metallspan. Ich hatte vorher über die Kondensatoren gemessen, und da hätte es eigentlich auffallen müßen. gemerkt habe ich es, weil halt der Kontakt V1 gegenüber +5V (als Referenzpunkt) 0V anzeigte. Konnte nicht sein. Jetzt klappt es! Blöder Fehler.
Datum:
Hm...was sagt es wohl ueber die eigene Persoenlichkeit aus wenn man zu Testwecken immer seinen eigenen Namen verwendet. :-D Olaf
Datum:
Könnte ja auch mein Zwillingsbruder sein, ne? :-)) Wie siehst du das Marc Meise?
Datum:
Gibt es für das Display auch einen Steckverbinder (Wäre mir lieber als ihn anzulöten)? Wenn ja, kann mir jemand Hersteller und Bezeichnung nennen? Danke Gruß Daniel
Datum:
> einen Steckverbinder
Du kannst genauso Erfolgreich versuchen einen Geldschein in den
Münzeinwurf eines Geldautomaten zu werfen.
;)
Werner
Datum:
Angehängte Dateien:Marc Meise wrote: > Hier nun ein Update zum Treiber: > > -Fix: Hardware-SPI-Prescaler und andere Kleinigkeiten > -neue Funktion: SED_7segment(Segment[0..3],Nummer[0..9]): > Ansteuerung für das kleine integrierte7-Segment Display > -wieder verkürzte Fonttabelle > -Fonttabelle und Definitionen für die 7-Segmentanzeige sind ins EEPROM > gewandert. Passen jetzt ins EEPROM z.B. eines Mega8 (standard ASCII). > -Notes.txt mit Bemerkungen > > viel Spass Kleiner Fehler: In SED_putc() muss der columncounter auch die Trennspalten zwischen den Zeichen mitzählen, sonst kommt newline zu spät!
Datum:
Angehängte Dateien:Danke Werner für den Hinweis. Der Fehler ist mir nicht aufgefallen. Ich habe die Veränderungen soweit eingebaut :-) und noch eine kleine itoa-Funktion dazu. Parallel dazu gib es das ganze auch aktualisiert für den LPC210x unter Beitrag "SED1530 Treiber für ARM" Grüße
Datum:
Marc Meise wrote:
> Danke Werner für den Hinweis.
Ich heisse zwar nicht Werner, aber das macht nichts :-).
Viele Grüße,
Klaus
Datum:
Warum ist die Funktion Reversebitorder eigentlich so umständlich? Könnte man aus
uint8_t ReverseBitorder (uint8_t Bits)
{
uint8_t ReversedBit;
ReversedBit = (Bits >> 4) | (Bits << 4);
ReversedBit = ((ReversedBit & 0xcc) >> 2 ) | ((ReversedBit & 0x33) << 2);
ReversedBit = ((ReversedBit & 0xaa) >> 1 ) | ((ReversedBit & 0x55) << 1);
return ReversedBit;
}
|
nicht
unsigned char ReverseBitorder (unsigned char Bits) { return ~Bits; } |
machen? Und warum verwenden alle uint8_t? Ist unsigned char nicht eindeutiger? Christian
Datum:
weil ReverseBitorder die Reihenfolge der Bits umdreht. Deine Version mit ~Bits bildet dagegen das Zweierkomplement der Zahl - das ist was ganz anderes.
Datum:
ok, hab das verwechselt. sollte eben nich mehr zu solch später stunde programmieren! danke!
Datum:
Hi, Kurze Frage von mir.. hat jemand einen Schaltplan, wie man dieses Display seriell anschliessen kann? Hab jetzt schon des oefteren in Datenblaettern etc gelesen, dass dies moeglich sein soll.. aber nichts gefunden, was einem Schlatplan oder so aehneln wuerde, der dies genauer beschreibt >< (Hab im endefekkt vor das Display an einen Arduino anzuschliessen), Danke schonmal. Martin
Datum:
Schau dir mal den Post: Beitrag "Re: Pollin E0855-2 SED1530-Treiber" und den Post an: Beitrag "Re: Pollin E0855-2 SED1530-Treiber" Das sind jeweils die Schaltpläne, in denen das Display per SPI angesteuert wird!
Datum:
Ich habe noch einen Fehler gefunden.
Init_SPI: Das SPI2X Bit ist im SPSR Register, nicht in SPCR.
Setzen mit "SPSR = (1<<SPI2X);" statt "|=", löschen mit "SPSR = 0;".
@Christian
> Und warum verwenden alle uint8_t? Ist unsigned char nicht eindeutiger?
Im Gegenteil. Mit uint8_t ist genau definiert wie viele Bits verwendet
werden sollen. Bei "unsigned char" kann/darf das auch anders sein, je
nach Compiler und Zielprozessor.
Datum:
Hallo, ohne Hintergrundbeleuchtung sollte http://www.pollin.de/shop/suchergebnis.html?S_TEXT... funktionieren Beschrieben hier auf der Seite Beitrag "Re: Pollin E0855-2 SED1530-Treiber"
Datum:
Angehängte Dateien:Wie schon durch meine Vorredner festgestellt wurde, ist das E0855-2 nicht mehr bei Pollin erhältlich. Der Nachfolgetyp LSU7S1011A läuft zwar auch mit dem SED1520-Chip verhält sich aber ganz anders. Wenn man sich näher damit beschäftigt fällt auf, dass dieses Display intern anders verschaltet sein muss. Das zeigt sich darin, dass die Pages anderen physischen Zeilen zugeordnet sind und teilweise auch die Bit-Anordnung vertauscht wurde. Das heißt, bei manchen Pages steht der Inhalt quasi auf dem Kopf. Es gibt auch eine Verschiebung des angezeigten Bereiches im Bezug auf den Display-RAM, der korrigiert werden musste. Ich habe den Ursprungscode von Marc Meise deshalb für das LSU7S1011A angepasst und einige Features hinzugefügt. Hier eine kurze Zusammenfassung: -vollständige Umsetzung des Projekts auf die Entwicklungsumgebung WinAVR- 20100110 -Anpassung des Makefiles für diese Umgebung -Pagezuordnung an reale Anordnung angepasst -Beschränkung auf die physisch vorhandenen Pages 0-4 -richtungsgesteuerte Byteausgabe unter Beachtung der aktuellen Page -Verschiebung des sichtbaren Bereichs, relativ zum Zeich-RAM nach rechts -Durch Wegfall der Spezialsymbole und der 7-Segment-Anzeige konnte das Zeichensatz-Array so gestrafft werden, dass es mit Umlauten und "ß" auch in den EEPROM passt, wenn man das so will. -Umkodierungstabelle zur Zeicherkennung implementiert, sodass die Umlaute direkt als Zeichen eingegeben werden können. -Codestraffung bzw. Wegfall einzelner Routinen. -Implementierung von 8 benutzerdefinierten Zeichen In beiliegendem Zip-File ist die aktuelle Version 2.0 des Displaytreibers LSU7S1011A enthalten. Nähere Informationen stehen im Projektfile.txt. Zusätzlich habe ich auch noch die Bauunterlagen für ein solches Display-Modul mit eingepackt. Sie stehen im TARGET3001-Format, zu öffnen mit der PCB-POOL-Version von TARGET, zur Verfügung. Diese kann bei Bedarf als freie Version bei pcb-pool.com, dort im Downloadbereich gesaugt werden. Wer das nicht möchte, kann die Entwicklungsunterlagen auch im PDF-File einsehen. Viel Spaß







