Wie kann man einzelne Bildpunkte mit dem oben genannten Controller
setzen?
z.B. soll auf einer Flüssigkristallanzeige mit 320x240 Bildpunkten bei
x =100
y =100
ein Punkt gesetzt werden.
Durch laufende Erhöhung des x-Wertes um 1 soll dann mal eine Linie
entstehen.
Eine Abwandlung des Programms einer funktionierenden 240x128 Anzeige mit
dem Controller T6973c ist mir leider nicht gelungen.
MfG
Wolfgang
Der 13305 kann nur Byteweise schreiben/lesen. Du musst also ein Byte
lesen, das entsprechende Bit in dem Byte setzen und dann das Byte
zurückschreiben.
Danke,
leider hab ich es nicht so richtig verstanden mit dem schreiben/lesen.
Vielleicht hilft mir ein Programmschnipsel mit etwas Kommentar. Hast Du
zufällig ein Beispiel in 'C', welches Du mir zur Verfügung stellen
kannst?
MfG
Wolfgang
> leider hab ich es nicht so richtig verstanden mit dem schreiben/lesen.
Ist doch ganz einfach, du liesst ein Byte aus dem Displayram und
kannst dann mir or/and ein Pixel setzen oder loeschen.
Olaf
>Ist doch ganz einfach, du liesst ein Byte aus dem Displayram und>kannst dann mir or/and ein Pixel setzen oder loeschen.
Wenn es für mich soo einfach wäre, dann hätte ich nicht gefragt.
Meine Anzeige hat 320 x 240 Bildpunkte
oder bei einer Zeichengröße von 8 x 8 Bildpunkten 40 Zeichen pro Spalte
und 30 Zeilen.
Mit dem Steuerbefehl 46h (Ao=H), gefolgt von 2 Bytes (Ao=L), schreibe
ich die Cursoradresse, an dem mit dem Steuerbefehl 42h dann ein Zeichen
geschrieben wird. (funktioniert)
Um wieder zur Ausgangsfrage zu kommen: welches Byte muss ich
schreiben/lesen, um z. B. an der Stelle x=100, y=100 einen Punkt zu
erzeugen?
Muss man die Anzeige speziell initialisieren? Vielleicht hat doch noch
jemand ein Programmschnipsel für mich.
MfG
Wolfgang
Wolfgang-G wrote:
> Um wieder zur Ausgangsfrage zu kommen: welches Byte muss ich> schreiben/lesen, um z. B. an der Stelle x=100, y=100 einen Punkt zu> erzeugen?
Habe ich doch schon gesagt: Das geht nicht so einfach !
Du kannst immer nur 8 Pixel auf einmal schreiben.
Man möchte ja nicht unhöflich sein, aber einmal sagt
Olaf: "Ist doch ganz einfach"
dann heißt es: "Das geht nicht so einfach!"
Vielleicht hat Olaf ein "einfaches" Programmschnipsel.
Wie ist das mit dem zu schreibenden Byte (8 Pixel) gemeint? Ein Byte
besteht doch aus 8 Bit und stellt in dezimaler Wertigkeit die Werte
0...255 dar. Man kann aber auch jedem Wert irgendetwas zuordnen.
MfG
Wolfgang
Wolfgang-G wrote:
> Man möchte ja nicht unhöflich sein, aber einmal sagt> Olaf: "Ist doch ganz einfach"> dann heißt es: "Das geht nicht so einfach!"
Es ist einfach, aber du stellst dir das zu einfach vor: Es sind ein paar
Befehle notwendig, einer alleine reicht nicht.
> Wie ist das mit dem zu schreibenden Byte (8 Pixel) gemeint? Ein Byte> besteht doch aus 8 Bit und stellt in dezimaler Wertigkeit die Werte> 0...255 dar. Man kann aber auch jedem Wert irgendetwas zuordnen.
Jedes Byte hat 8bit, und jedes Bit ist ein Pixel. In einem Byte stecken
also 8 nebeneinander liegende Pixel. Bisher alles soweit klar ?
OK, dann weiter:
Um jetzt 1 Pixel (=1bit) zu setzen, musst du die anderen Bits
beibehalten und nur dieses eine setzen. Dies geschieht durch eine ODER
Operation.
Du musst also das entsprechende Byte lesen, das eine Bit setzen und das
ganze zurückschreiben.
Einen fertigen Code habe ich dazu leider nicht, da ich mit dem 13305
recht wenig arbeite.
> Bisher alles soweit klar ?
Und sollte es aus irgendeinem Grund nicht klar sein, so kann man ja
einfach mal 0xaa, 0xf0 oder 0x0f ins Display schreiben. Wenn man
dann die Ausgabe auf dem LCD sieht sollte es nun aber allerspaetens
klar sein....
Olaf
>Bisher alles soweit klar ?
Ja, ich sag mal so: es dämmert.
Aber irgendwo muss bestimmt noch etwas eingestellt werden.
Entweder erhalte ich Textzeichen oder, wenn tatsächlich die gewünschten
Bildpunkte erscheinen, dann enthält der Bildschirm noch irgendwelche
Striche und Punkte. Aber das ist bei mir nur Probieren ohne richtiges
Wissen.
Vielleicht hat noch jemand einen Tipp.
MfG
Wolfgang
> Aber das ist bei mir nur Probieren ohne richtiges Wissen.
Also das DAtenblatt muss man schon noch selber lesen und verstehen.
Wenn man dazu nicht in der Lage ist dann wird das nie was.
Und es bringt auch nichts mit der ueblichen Abschreibmentalitaet
zu arbeiten weil der gerade dieser Displaycontroller wirklich
jede Menge Dinge einstellbar hat. (z.B mehrere Pages, position im
Displayram, Text-Mode, Grafik-Mode, Beides usw)
Ausserdem sollte man DRINGENST das Datenblatt vom Hersteller des LCDs
gelesen haben und schauen was der als Initialisierung vorschreibt. Da
gibt es naemlich unabhaengig vom Displaycontroller verschiedene
Moeglichkeiten.
Wenn man da was falsches reinschreibt weil man es von jemand anderem
abkupfert der ein anderes Display mit SED1335 benutzt dann kann man
damit
sein LCD zerstoeren.
Olaf
@Olaf
Leider bringt mich Dein belehrender Beitrag nicht weiter. Schade um die
Zeit, die Du dafür geopfert hast.
>Also das DAtenblatt muss man schon noch selber lesen und verstehen.>Wenn man dazu nicht in der Lage ist dann wird das nie was.
Ich gebe mir zwar Mühe, ein Datenblatt zu verstehen, aber zu meiner
Schulzeit gab kein Englisch. (nur Russisch)
>Wenn man da was falsches reinschreibt ...dann kann man damit sein LCD >zerstoeren.
Deshalb wollte ich ja auch nicht soviel probieren und suche hier
zusätzliche Hilfe bei Leuten, die sich damit besser auskennen.
>Text-Mode, Grafik-Mode, Beides usw
Vielleicht kannst Du mir hierzu doch einen Tipp geben, wo ich dazu im
Datenblatt etwas finde oder noch besser: was muss ich wie und wo
einstellen.
Wolfgang
> Leider bringt mich Dein belehrender Beitrag nicht weiter.
Das ist dann aber nicht zu aendern. Die Dinger sind zu kompliziert
als das man sie mal eben so erklaeren kann.
> Schulzeit gab kein Englisch. (nur Russisch)
Das ist zwar sicherlich aergerlich, aber fuer Elektronik ziemlich
unpraktisch. Vielleicht solltest du dann ein anderes Display in
erwaegung
ziehen. Der SED1335 ist wirklich ein eher schwerer Fall.
> Vielleicht kannst Du mir hierzu doch einen Tipp geben, wo ich dazu im> Datenblatt etwas finde oder noch besser: was muss ich wie und wo> einstellen.
Eigentlich ueberrall. Man muss das lesen und sich dann immer Werte zu
den Timings anhand des Panels ausrechen. Und weil das so problematisch
ist haben viele Hersteller die Initialisierungsequenz oft in ihrem
Datenblatt zum Panel stehen.
Es gab vom Hersteller des SED1335 auch eine Software wo du diese Werte
eintippen konntest und die hat dir dann einen C-Code generiert der das
Display initialisert hat.
Noch ein Tip, wenn du irgendwas rumprobierst schalte das Display immer
aus wenn du nicht draufschaust. Es kann dir sonst passieren das du mal
kurz aufs Klo gehst, oder 10min im Datenblatt liesst und wenn du wieder
auf dein Display blickst ist es verstorben weil das Timing nicht
gestimmt hat. Sobald die Pixel anfangen irgendwie komisch auszusehen,
abschalten!
Olaf
>mit der ueblichen Abschreibmentalitaet zu arbeiten
Na, na, das hat hier m. E. mit Abschreiben nichts zu tun, sondern mit
der Vermeidung von "uneffektiver" Lernarbeit, da die Programmierung von
LCD- Controllern nicht unbedingt zu den Grundlagen der Elektronik (wie
z.B. Operationverstärker-Technik oder Transistorschaltungen) gehört.
Nimm Dir mal ein Beispiel an Benedikt: immer konkrete Antwort
>Die Dinger sind zu kompliziert als das man sie mal eben so erklaeren kann.
Nun mach die Sache nicht schwerer als sie ist. Mit einigen konkreten
Hinweisen kann man auch hier Hilfe geben.
Falls jemand vor dem gleichen Problem (einzelne Bildpunkte setzen)
steht, dann kann er bei mir nachfragen. Man muss ja das Fahrrad nicht
noch einmal erfinden, denn so ein spezieller Controller und die
Bitschubserei gehört nicht zu den Grundlagen der Elektronik.
Ein Problem konnte ich allerdings noch nicht lösen: mir gelingt es
nicht, Text und das Zeichnen von Linien (Grafik) zusammen auf den
Bildschirm zu bringen.
Vielleicht hat jemand einen Tipp.
MfG
Wolfgang
Hallo!
Ohne Abschreiben hätte wohl Keiner eine Chance zu lernen. Also hier das,
was ich mal zum SED1335 fand und nach langer Probiererei zum laufen
brachte(s.Anhang, *.h folgt). Dem Schreiber sei Dank!
Das Timing und die ewige INIT- Befehlskette, welche notwendig ist, um
dem Display überhaupt eine Reaktion abzuverlangen, ist ziemlich
entmutigend gewesen. Sich DAS alles aus Datenblättern selbst zu
erarbeiten, ist wirklich harte Arbeit.
Ich benutze das OPTREX 128*128, was vor einiger Zeit mal bei Pollin
rumgeisterte.
Damit habe ich mal einen lahmen Oszi gebastelt, liegt halbbeendet auf
dem Schreibtisch...
Viel Spaß!
ulf.
Danke Ulf,
schade, dass Du erst jetzt mir Deine Hilfe anbieten konntest. Ich hätte
mir viel Zeit und
> wirklich harte Arbeit < sparen können.
Es war "nur eine Kleinigkeit", die ich ändern musste. Es lag an der
Größe des Bildspeichers für Text. Da hatte ich nur 40x30=1200 Adressen
vorgesehen. Es ist mir zwar noch nicht klar, warum der Bildspeicher erst
bei 4096 beginnen muss, aber das ist mir erst einmal egal.
Im Wesentlichen läuft die Anzeige jetzt zu meiner Zufriedenheit.
>Damit habe ich mal einen lahmen Oszi gebastelt, liegt halbbeendet auf>dem Schreibtisch...
nicht unbedingt liegen lassen, aber Verwendungszweck ändern.(evtl.
Temperaturverlauf aufnehmen, Wetterdaten schreiben; ich schreibe
EKG-kurven -Text ist für Anzeige der Pulsfrequenz)
MfG
Wolfgang
> Ein Problem konnte ich allerdings noch nicht lösen: mir gelingt es> nicht, Text und das Zeichnen von Linien (Grafik) zusammen auf den> Bildschirm zu bringen.
Es gibt da irgendwo ein Register wo du einschalten kannst was es
zu Darstellung bringen soll. Allerdings bin ich der Meinung das man
sich die Muehe sparen kann. Zum einen sieht der Zeichensatz im
Textmodus nicht so schoen aus, zum anderen mangelt es ihm an
Deutschen Sonderzeichen.
> Das Timing und die ewige INIT- Befehlskette, welche notwendig ist,> um dem Display überhaupt eine Reaktion abzuverlangen, ist ziemlich> entmutigend gewesen. Sich DAS alles aus Datenblättern selbst zu> erarbeiten, ist wirklich harte Arbeit.
Dies steht im Datenblatt des LCDs immer drin, ausserdem muss man danach
immer nochmal alles durchgehen weil man die Parameter ja seinen
Beduerfnissen anspassen muss. Und wenn bereits das Lesen eines
Datenblatt
harte Arbeit sein soll....
> EKG-kurven -Text ist für Anzeige der Pulsfrequenz)
Wenn du nicht immer nur den ganzen Bildschirm vollschreiben willst,
sondern
lediglich hier und da mal einen Satz ausgeben, so ist es viel besser
einen eigenen Zeichensatz zu verwenden. Zumal du ja dann sogar
entscheiden
kannst wie gross der sein kann.
Olaf