LCD Library T6963c

Gast #370782
Lesenswert?

Hallo

Ich hab ne T6963 Library gefunden, die jedoch für das codevisionAVR
programmiert war. Ich hab sie convertiert, sodass sie mit dem GCC
Kompilliert werden kann. Ich hab jedoch mein Print noch nicht erhalten
um das ganze zu testen. Wenn jemand lust hat das ding auszupobrieren,
soll er es machen.

PS zu dem source: Es ist zwar nicht c Standart, aber ich hab halt alles
ins header geschmissen.
Angehängte Dateien:
Gast #370785
Lesenswert?

Klasse Library. Klappte ganz Problemlos.

Ich habe auch gleich eine Mini-Demo geschrieben: Die bekannten Flying
Lines oder unter Windows "Marquee" - komisch, daß die auf meinem 8Mhz
ATmega weniger ruckeln, als auf einem PIV-Power-bis-zum-abwinken ;-)

Anbei noch ein paar Tips:
- es wäre schön, wenn Du die Kommentare nicht mit "//**" machen
würdest, da das meinen Compiler aus den Tritt bringt und er mich mit
warnings überhäuft: warning: "/*" within comment
- Die Funktionen könnten noch ein paar Kommentare vertragen - ebenso
wie einzelne Anweisungen. Dann fällt das Verständnis leichter.
- Hinweis darauf, daß man den Pin FS für Font Select des Displays
unbedingt gegen GND schalten muß, da er von der Library nicht
angesteuert wird, obwohl der in der Pindefinition aufgelistet ist. Mit
dem narrow Font klappt's nicht und ein in der Luft baumelnder Pin
führt auf dem LCD zu tollen Effekten.
Angehängte Dateien:
Gast #370786
Lesenswert?

Ich habe mir mal erlaubt, die Library von Nico zu überarbeiten.

Jetzt kann man die FS-Leitung ansteuern, um den schmalen oder den
normal breiten Font zu benutzen. In Abhängigkeit des eingestellten
Wertes werden die Speicheradressen usw. berechnet.
Angehängte Dateien:
Gast #370787
Lesenswert?

Hallo florian

Was hast denn du für einen Compiler, dass der ausruft bei den komischen
komentaren? Ja ich weiss, es herrscht ein bisschen ein Chaos in dem
Code. Man sollte mal ein .h und ein .c file erstellen. Um da ein
bisschen Ordung rein zu bringen.

Das Fontselect schalte ich extern mit font_big(); und font_small(); Ist
es notwendig die speicheradressen neu zu berechnen, wenn die schrift
geändert wird? Ich hab es noch nicht genau angeschaut. (Es ist noch
Montag morgen ;-))

Ich hab mal dein Code auf meinen Proz geschmissen, sieht toll aus!.

mfg
Gast #370788
Lesenswert?

Ich wollte noch ein Bild von meiner geilen Entwicklungsumgebung
hochladen. Das ganze ist Schulprojekt und sollte mal ein Spiel mit 2
displays geben, auf dennen man zu zweit das berühmte Snake Spiel
spielen kann.
Das ganze wird dann aufgestellt an Messen und an Schulen, als
Demonstration für den Elektroniker Beruf
Angehängte Dateien:
Gast #370789
Lesenswert?

Nicht schlecht. Gegen diesen Profi-Aufbau sieht es bei mir sehr
frickelig aus. Aber nach dem ich das Display bei ebay aus Hong Kong
günstig bekommen hatte und es nach gerade mal einer Woche bei mir war,
mußte es schnell gehen mit dem Anschluß und da mußte dann halt ein
fliegender Aufbau her. Besonders elegant ist sicherlich der gegen
Kurzschlüsse eingetütete Trimmer für den Kontrast ;-)

Ich nutze WinAVR und der meckert halt bei //** wenn das in einem /* ...
*/ steht. Ist eigentlich auch korrekt, denn /* ... */ ist mehrzeiliger
Kommentar und darin ist dann wieder der Anfang von einem mehrzeiligen.

Ist ja nicht so schlimm, habe die Kommentare einfach ein wenig
geändert. Ich wollte nur nicht zu viel in Deiner Datei rumpfuschen.
Klar ist das noch in der Entwicklung. Wenn's denn mal weiter gediehen
ist, kann man ja noch die Sache schick machen.

Der Speicher muß neu berechnet werden. zumindest bei meinem Display.
Ist auch irgendwie logisch, denn es sind ja mehr Bytes pro Zeile.
Deshalb habe ich die Defines am Anfang eingebaut und im Code
entsprechend berücksichtigt.

Derzeit erprobe ich die Möglichkeiten, eigene Fonts zu gestalten. Nach
anfänglichen Schwierigkeiten klappts nun auch. Sobald das steht, äußere
ich mich dazu.

Inzwischen habe ich auch bemerkt, daß der Windows Bildschirmschoner
Mystify und nicht Marquee heißt - aber das ist wohl auch egel.
Angehängte Dateien:
Gast #370790
Lesenswert?

Weil's so schön ist: Hier noch eine neuere Version.

Beim lesen von Daten glcd_dget() war ein kleiner Fehler: Es wurde nicht
gewartet. Jetzt läuft auch dies.

Jetzt gibt es auch eine Funktion, um eigene Zeichen zu definieren.

Außerdem eine Funktion, um die Größe der Standardzeichen zu verdoppeln
und daraus neue Zeichen zu generieren.

Weiterhin eine langsame Funktion zum Zeichnen von Teilkreisen. Die
liefert noch keine schönen Kreise.
Angehängte Dateien:
Gast #370791
Lesenswert?

Hey Florian
Habe jetzt mein Display aus Honkong. Freu ! Funktioniert auch. Wie
machst Du das mit den Fonts ? Über den Fontedit erhalte ich ne
C-Definition, die kann ich einbinden und dann ? Muss ich noch eine
Funktion schreiben die das in den Graphicspeicher an die richtige
Stelle schreibt oder habe ich die Funktion bei Deinem Quelltext
uebersehen ?

Freudi
Gast #370796
Lesenswert?

Ich denke snake ist ein spiel welches nicht so schwierig ist zum
programmieren, darum haben wir es auch gewählt. hättest du dann eine
bessere idee gehabt für ein spiel, welches nicht weniger aufwändiger
gewesen wäre?
Gast #370797
Lesenswert?

Hallo Jungs!

Ich habe jetzt mein LCD (www.microelect.com/lcd/graphic/cgm32064.PDF)
an einen M16 angefalnscht, und versuche dieses seit nunmehr einigen
Tagen vergeblich zum Laufen zu bewegen ;) bin aber bisher erfolglos
geblieben. Die Verbindungen stimmen alle. Die Initialisierung scheint
soweit auch zu funktionieren. Was auch einwandfreigeht, ist der befehl
sget (Statusabfrage) hier konnte ich mit dem Scope nachweisen, dass die
gewünschten Signale aus dem LCD kommen ob sie im µC auch richtig
ankommen ist eine andere Frage. Was mir sehr komisch scheint ist , dass
 ich wenn ich während dem Befehl cleartext oder cleargraph (also die
speicher-Überschreib befehle) messe, am Datenbus (D0...D7 geht auf
PORTC) e-Funktionen(!) messe. Daher denke ich, dass irgendwas mit dem
Daten-Port nicht stimmt, also Direction oder sowas.

Währe echt klasse, wenn mir jemand von euch weiter helfen koennte.

MFG Felix Fellhauer
Gast #370800
Lesenswert?

@ Nico

Ich habe das Problem mittlerweile selber loesen koennen. Ich habe den
DCL-Datenport auf einen anderen port gelegt; jetzt geht es einwandfrei.
Ich nehme an, dass der controller entweder bereits beschädigt war, also
der B-Port defekt oder dass die alternativen funktionen aus welchen
gründen auch immer aktiviert waren und somit der port nur teilweise zu
nutzen war.

trotzdem danke

Gruß Felix
Gast #370801
Lesenswert?

Da ich immer wieder mal angefragt werde, ob ich ihnen den Codevision
code zu dem Displaytreiber T6963C zusenden könne, stelle ich dieses
Archiv mal hierhin. Die Daten wie sie sind hab ich so gefunden, also
nichts verändert. Kann auch nicht sagen ob er funktionniert in cvAVR.

mfg Nico
Angehängte Dateien:
Gast #370804
Lesenswert?

Hallo Zusammen,
die Bilder sagen doch schon ein super Tool für die Steuerung des GLCD
vorraus, aber hat sich schon mal jemand die Mühe gemacht die Header in
eine .h und .c Datei unzustricken? Wäre sehr nett, wenn sowas existiert
das dann auch im Netz zu finden... Denn wir sind ja alle Arbeitsfaul ;o)
!!

@Nico & Florain
Sehr gute Arbeit!!! Ich werde den Source gerne verwenden.

Andere Frage: Welchen Controller habt Ihr für eure Einheiten verwendet
(@Nico)? Reicht dafür noch der mega128 oder muss ich dann schon einen
größeren Controller haben?

Danke schon mal!!

Gruß
Benjamin
Gast #370805
Lesenswert?

Hallo Benjamin nö hab ich noch nicht gemacht. --> "Never change a
running System" ;-). Nein, es wäre eigentlich schon schön, aber
eigentlich bin ich zu faul ;-).
Ich habe einen 128er auf meinem System, da wir sehr viele Bilder drin
haben. Anfänglich hatten wir einen Mega64. Es wird auch gehen mit einem
32er wenn du keine Bilder benötigst. Kommt halt auf das draufan was du
machen willst.

Gruss Nico
Gast #426812
Lesenswert?

Reply to this:

Autor: Nico Sachs (Gast)
Datum: 27.02.2006 14:06


Hello!
I'm using your t6963C library for WinAVR, and it works very fine!
I have a question: How did you converted an image to data for the C 
code? (like in picture_beispiel.txt). I want to show a bitmap on my LCD, 
wich I draw in the Paint program on Windows.

Thanks!
Thomas
#440387
Lesenswert?

Hallo Felix,

Du hast zwar schon eine Lösung (umlöten) gefunden, aber um zum 
Ursprungsproblem zurückzukommen: Hattest Du in den Fuses den JTAG-Port 
disabled? Die M16er kommen vom Hersteller mit defaultmässig JTAG 
enabled. Dann macht Port C (zumindest an den JTAG-Pins) recht 
merkwürdige Dinge, die nur entfernt unbedingt mit PORTC und DDRC zu tun 
haben :-)
Gast #440590
Lesenswert?

naja, für ein spiel lohnt es sich meiner meinung nach halt nicht...wie 
oft spielst du denn?

wie wär's mit 'ner erweiterung um einen netzwerkanschluss, über den der 
bootloader die spiele dann aus dem netz besorgt. und es ermöglicht 
multiplayer ;-)
Gast #486967
Lesenswert?

Hallo zusammen,

ich bin gerade dabei den Code auf dem R8C13 zum laufen zu bringen. Was 
mir nicht klar ist:
Wozu dient die Funktion DDR(...)=... in glcd_setup()??
Ist das was AVR spezifisches?
Ich habs einfach mal auf gut Glück rausgelassen. Die Initialisierung 
wird auch ausgeführt, ebenso glcd_print(...) aber es erscheint nix auf 
dem Display...
Wenn ihr mir sagen könnt, was die DDR() eigentlich macht, bekomme ichs 
vielleicht doch noch zum laufen...

Besten Dank,

mfg
Johannes
Gast #493687
Lesenswert?

Hallo allerseits!

Ich bin vor einigen Tagen hier auf die C-Library zur Ansteuerung eines 
240x180 Grafikdisplays mit dem T6963c-Controller von Toshiba gestoßen.


Habe sie gleich ausprobieren müssen, und läuft super!! Klasse Arbeit!

Nur habe ich ein paar Fragen zur verwendung der einzelnen Funktionen.

1. Zum Display(Powertip PG 240128-A) selbst. Es hat einen Pin der MD2 
heißt, und irgen etwas mit den Spalten zu tun hat. Nur weiß ich nicht 
genau was, ich glaube es schaltet von 32 auf 40 Spalten um. Wird dieses 
Feature in der lib auch verwendet, oder werden immer fix die 40 Spalten 
verwendet?

2. In der Lib gibt es die Funktion "glcd_set_myfont". Gehe ich richtig 
davon aus, dass die Funktion dem Display sagt welchen Zeichensatz es zu 
verwenden hat. den muss ich also mit einem fonteditor erzeugen lassen 
und in includieren und als adressparameter (mem) übergeben. Stimmt das 
so in etwa? Ich habe einen Font editor verwendet, der noch einen ganzen 
Haufen andere includes erzeugt, mit denen weiß ich dann nicht was 
anfangen.

3. Im beispiel von Nico oben (3. oder 4. post) wird eine grafik am lcd 
ausgegeben. ich includiere in meinem programm also das "Bild" als 
rohdaten, habe das beispielbild einfach hinenkopiert, nur, wie schreibe 
ich die grafik dann ans lcd? mit glcd_print?? oder mit glcd_show?? funkt 
leider bei beiden nicht.


so, mir wäre echt weitergeholfen, wenn mir jemand etwas dazu sagen 
könnte. im vorab will ich mich entschuldigen, sollten meine fragen zu 
banal sein, oder einfach nur idiotisch...


vielen vielen dank und schöne grüße

philipp
Gast #598826
Lesenswert?

Ich versuche gerade das Beispiel hier aus dem Thread zum laufen 
zubringen mit der letzten Winavr Version bekomme aber immer einen Fhler, 
dass die elf Datei nicht gefunden wird.

Hat wer eine Idee woran das liegen kannß

mfg wayne
Gast #632439
Lesenswert?

Hallo,

erstmal ein großes Lob an die Entwickler!

Ich scheitere allerdings an der Benutzung der Custom Fonts.

Das Generieren ist ja kein Problem, aber hat vielleicht jemand ein 
Beispiel, wie ich mit 'glcd_set_myfont', 'glcd_make_big_font' und 
'glcd_print_big' umzugehen habe?

Schonmal vielen Dank im voraus

Schorsch
#632632
Lesenswert?

Hallo Schorsch,

um beliebige Fonts zu generieren habe ich folgendes Tool geschrieben:
Beitrag "GLCD T6963C Font-Tool"

Vielleicht ist das interessant für dich.

Tool starten, Button: Font... Font auswählen,
angeben, welche Buchstaben als generiert werden sollen,
Ränder, Fixe Größe und Namen vergeben und dann Button Generate drücken.

Dialog mit Ok zumachen und in der Auswahlbox im Hauptfenster den Font 
auswählen.
x, y Koordinaten angeben, Text eintippen und "Print" drücken.

Den Font kann man auch über "Export" als .c file auf die Platte 
schreiben!

Viele Grüße,
Christian
#687382
Lesenswert?

aaaalso:

Mein Font-Konverter erzeugt für Lib, die auch im Zip enthalten ist, die 
richtigen Funktionsaufrufe im Trace-Fenster!

zB
- Font-Generator starten...
- Font... Button drücken und Font, sowie die Zeichen wählen, die du als 
.c file exportiert haben möchtest.
- Generate Button drücken
- Ok Button drücken

Dann im Hauptfenster rechts in der Auswahlbox (links neben dem Font... 
Button) den neuen Font auswählen.

Mit der Maus in den blauen (Display-) Bereich klicken (dort, wo das 
Element hinkommen soll)

dann mit der Maus einen Doppelklick in eine der x,y Koordinaten Textbox 
(rechts neben "invers")

Text in die längere Textbox rechts daneben eintippen ... und auf "Print" 
drücken!


Darauf erscheint der Text, gezeichnet mit dem ausgewählten Font und in 
der Listbox darunter steht dann zB
glcd_print2_P(18, 73, "Test Text", &Snap_ITC__18, 0);

diesen Text kannst du 1:1 in deinen Sourcecode kopieren.

Um den Font als .c file zu exportieren: Export Button drücken und einen 
Dateinamen und Pfad wählen. Den musst du dann nur noch in dein AVR 
Projekt aufnehmen!


Hmmm ... eine Tool-Beschreibung wäre nicht schlecht! Ich weiß! 
Allerdings, da das Teil eh niemand verwendet - hab ich mir auch die 
Arbeit (noch) nicht angetan ;o))


Viel Glück!
Persönliche Seite #687385
Lesenswert?

> Darauf erscheint der Text, gezeichnet mit dem ausgewählten Font und in
> der Listbox darunter steht dann zB
> glcd_print2_P(18, 73, "Test Text", &Snap_ITC__18, 0);
>
> diesen Text kannst du 1:1 in deinen Sourcecode kopieren.


Das habe ich auch schon festgestellt :)

Aber wo finde ich die Funktion glcd_print2_P ?????

Die ist in den Sources nicht vorhanden..

Gruß Sascha
Gast #740763
Lesenswert?

Ich würde gerne die marquee-Graphik-Anwendung (oder auch andere 
AVR-basierte   T6963-Kontroller basierte Graphik-LCD-Anwendungen) 
'nachstricken', um an diesem Beispiel die Funktionsweise der 
LCD-Ansteuerung nachzuvollziehen bzw. zu verstehen.
Für welchen AVR wurde die marquee-Anwendung ausgelegt, oder besser 
gefragt, mit welcher Frequenz muß der Mikrokontroller getaktet sein, 
damit die Anwendung läuft? Kann ich das (an welcher Stelle) dem Code 
entnehmen?

Danke.
Gast #916045
Lesenswert?

Hallo

Toll die T6963 Library.....:-) :-)
Hätte dazu aber noch ein blöde Frage ;-)
Wie kann ich auf dem Display eine Variable ausgeben?
Vielleicht kann mir jemand auf die Sprünge helfen :-)

Danke.
l.G. Roberto
Gast #999607
Lesenswert?

Code anschauen...
void glcd_print(int x,int y,const char *string);     // send string of 
characters to LCD

Du kannst also einfach deine function mit einer Variablen/einem Array 
vom Typ char statt einem String aufrufen.
Gast #1002492
Lesenswert?

Hat jemand von euch Erfahrung mit dem 'scheinbar' kompatiblen Typ 
SAP1024 der als 1:1 Ersatz des t6963 gelten soll.

Bsp. bei Powertip ist der 6963-Displaytyp fast nicht mehr zu beziehen.


grüssle hans
Gast #1003070
Lesenswert?

Hm mir fällt gerade auf... ich kann die lib leider nicht benutzen da ich 
noch einen "alten" AT89C5131A benutze und deshalb mit RIDE 6.1 
arbeite... Würde jemand so nett sein und mir die lib dafür umschreiben?
Habe dazu leider selbst noch nicht genug erfahrung :(
Gast #1041478
Lesenswert?

Hallo,

ich versuche die Lib zu verwenden, allerdings wird bei mir nichts außer 
Datenschrott dargestellt.

Ich habe mit einem Oszi die Leitungen durchgeklingelt und alle zeigen 
plausible Werte an.
Mein Mega2560 hat an PortB die Datenleitungen und an PortH die 
Controll-Leitungen.

Der AVR wird mit 18,432MHz getaktet und ich vermute, dass hier das 
Problem liegen könnte. Das Display könnte mit der Geschwindigkeit nicht 
klar kommen.

Welche Taktraten habt ihr verwendet? Evtl nur 8MHz?

Es sind ein paar Pausen in der Lib eingebaut, die nur mit ASM ein paar 
NOP Befehle ausführen. Das ist natürlich absolut nicht 
Geschwindigkeitsunabhängig. Darum wäre es toll, wenn man jemand sagen 
würde, für welchen Takt das ganze bisher ausgelegt ist.

Das 0x03 Statusbyte scheint jedenfalls normal ausgelesen zu werden, da 
die Initialisierung einwandfrei durchläuft.

Irgendwelche guten Tipps? :)

MFG
Timo
#1042232
Lesenswert?

Hi,
also ich habe sie heute mal getestet da ich sonst immer die von Holger 
Klabunde verwende aber sie läuft sauber. Ich verwende den ATMega 32 mit 
16MHz. Hatte zu Anfang aber auch das Problem mit dem "Datenmüll" aber es 
lag an falschen Portzuweisungen und falsch belegter Reset(wird bei mir 
nicht an Board geführt). Scheinbar muß man auch wirklich die neuste 
Version benutzen vom Autor:  Florian (Gast) am Datum: 08.03.2006 16:43

Schöne Grüße
Harry
Gast #1127428
Lesenswert?

>Seh ich das eigentlich richtig das das Display sowohl Grafik darstellen
>aknn als auch Text "drüberschreiben"?

Beim T6963? Ja das geht. Du kannst eine Grafik unter dem
Text scrollen ohne das der sich auch nur rührt.
Gast #1127556
Lesenswert?

der text ist auch eine art grafik das display hat einer relativ große 
auflösung und kann text und grafik anzeigen hat halt viel mehr pixel als 
so ein 2x16.

Bekomm ich die software zum ansteurn des display?????
Persönliche Seite #1130384
Lesenswert?

holger wrote:
>>Seh ich das eigentlich richtig das das Display sowohl Grafik darstellen
>>aknn als auch Text "drüberschreiben"?
>
> Beim T6963? Ja das geht. Du kannst eine Grafik unter dem
> Text scrollen ohne das der sich auch nur rührt.

Sehr schön danke :)
Noch irgenwelche "Fallstricke" zu beachten bevor ich mich die Tage mal 
um den Anschluß des Displays kümmere?
#1489774
Lesenswert?

Hallo,

super Library. Ich wollte das ganze mit dem Display von Reichelt "LCD 
240X128 BL :: LCD Grafik-Modul, 240 x 128 Punkte" (Artikel-Nr.: LCD 
240X128 BL) verheiraten.
In der Beschreibung habe ich gelesen, dass es sich um ein Display mit EA 
W240-7KHLW handelt und in dem Datasheet steht dazu:
"[...] niedrigen Stromverbaruch von typ. 180mA @ 3,6 V (max. 270 mA). 
Der Strom muss über einen externen Vorwiderstand angepasst 
werden.[...]".
Was beudeutet das? Die Kontrasteinstellung ist damit ja wohl nicht 
gemeint, oder? Diese variiere ich ja mit einem einstellbaren 
Spannungsteiler an Pin 3 und 17. Ansonsten kann ich bei den Pins nichts 
finden, an dem ich irgenwo einen Vorwiderstand einbauen sollte. Pin 2 
(+5V) bleibt noch, aber daran muss ich doch nichts machen außer an 5V 
anschließen, oder? :)

Außerdem bin ich mir nicht sicher was "#define glcd_rv_PIN" definiert. 
RV finde ich bei den Pins nicht. Bei mir bleibt nur noch MD2 (Pin 18) 
über, welcher die Funktion "Textmode L: 40 columns, H: 32 columns" hat.

Schon mal danke fürs lesen.
#1495482
Lesenswert?

Hallo nochmal,

ich bin gerade am überlegen, wie man denn die 3,6V für die 
Hintergrundbeleuchtung einrichtet.
Ich habe bei meinem Aufbau 8V zur Verfügung. Ich dachte daher an einen 
Spannungsteiler mit ~24,4 Ohm und 20 Ohm. Dabei sollte sich ein Strom 
von 180mA einstellen. Aber was ist dann am Knotenpunkt, an dem das 
Display auch seine 3,6V für die Hintergrundbeleuchtung abgreift?
Funktioniert das denn so, oder sollte ich das evtl mittels 
Festspannungsregler machen?
Gast #1502086
Lesenswert?

Hi,

ich habe auch versucht die t6963c lib zum laufen zu bekommen aber bei 
mir tut sich da überhaupt nichts.

Ich benutze ein SDK500 mit einem ATMega644 dazu ein display mit einem 
t6963c controller (Bolymin 240128a).

Bei sämtlichen Beispielprogrammen die ich jetzt ausprobiert hab tut sich 
genau gar nichts und ich krieg einfach nicht raus woran es liegt :(
#1502136
Lesenswert?

@zumlin: wenn die LEDs mit 3,6V angegeben sind im DB dann werden wohl 
etwa 3,6V bei Nennstrom an ihnen abfallen. LEDs haben eine 
Flussspannung, die sich bei einer bestimmten Stromstärke einstellt. 
Weniger Strom -> weniger Spannung fällt an der LED ab und vice versa.

Bzgl. des Widerstandes: denk daran, dass da bei einem rnd. 25Ohm 
Widerstand und 180mA ca. 0,8W Leistung verbraten werden. Also nimm 
lieber einen ausreichend dicken R, oder auch zwei kleinere in Reihe. Du 
kannst aber auch durchaus mal mit 62Ohm oder sogar 100 Ohm 
experimentieren... die LED Helligkeitskennlinie ist alles andere als 
linear.

@Dennis: mein Auto ist kaputt und ich weiss nicht warum, helft mir! ;-)
Mehr Details, Anschlussplan, Software, was genau passiert...

Gruß
Fabian
Gast #1502225
Lesenswert?

Anschlussplan:

Display                STK500
PIN1  FRAME GND        PORTC GND
PIN2  GND              PORTA GND
PIN3  Vdd +5V          PORTA 5V
PIN4  Contrast         hängt an nem Poti...
PIN5  /WR              PORTA0
PIN6  /RD              PORTA1
PIN7  /CE              PORTA2
PIN8  C/D              PORTA3
PIN9  Vee - 16V        am Poti...
PIN10 /RESET           PORTA4
PIN11 DATA0            PORTC0
PIN12 DATA1            PORTC1
PIN13 DATA2            PORTC2
PIN14 DATA3            PORTC3
PIN15 DATA4            PORTC4
PIN16 DATA5            PORTC5
PIN17 DATA6            PORTC6
PIN18 DATA7            PORTC7
PIN19 FS               PORTA5
PIN20 RV               PORTA6

Software: ich hab die Daten von Läubi benutzt hier aus dem Beitrag 
(Datum: 02.02.2009 18:56 )
AVR Studio 4, GCC Plugin 1.0.0.11

Hardware: STK500, ATMega644, Display: Bolymin 240128a mit t6963c 
Controller

Ich kann alles wunderbar kompilieren und auch auf den ATMega644 hoch 
schieben. Während das passiert flackert das Display mal kurz und zeigt 
dann einfach nichts an (je nach kontrast eben nur ein schwarzes viereck 
oder nichts)
Bei einem reset auf dem STK500 erscheinen kurz linien auf dem Display 
dann wieder nichts.

Die Pin Belegung wurde natürlich in der t6963c.h angepasst, ansonsten 
wurden keine veränderungen am Code vorgenommen.

mfg Dennis
Gast #1502302
Lesenswert?

JTag war wirklich noch gesetzt und nach dem entfernen kommt jetzt 
zumindest mal Pixelmüll an :)

Ich hab gerade nochmal die Belegung und Verdrahtung überprüft und glaube 
eigentlich alles richtig gemacht zu haben. (wie oben beschrieben)

Im Anhang die aktuelle Ausgabe auf dem Display
Angehängte Dateien:
#1503266
Lesenswert?

Stimmt deine Clock und auch die Fuses dazu? Ist die Init-Sequenz 
richtig? Stimmen die Timings in der Init-Sequenz (hier sind wir wieder 
bei der Clock)?

Klassischer Fehlgedanke: "Ich nehm mal den internen Oszillator mit 
8MHz", aber man vergisst die CLKDIV Fuse zu deaktivieren.

Gruß
Fabian
Gast #1546938
Lesenswert?

Hallo habe das gleiche Problem wie der Dennis. Bin schon am 
verzweifeln....
Bekomme die Bibliothek einfach nicht zum laufen. Die verdrahtung stimmt. 
Habe schon viele andere Bibliotheken ausprobiert aber die laufen auch 
nicht. Benutze einen atmega128 und winavr. Wisst ihr was ich da falsch 
mache?
Im anhang mein Projekt....
Angehängte Dateien:
#1550406
Lesenswert?

Eine Frage an die, die ein Initialisierung schon mal selber geschrieben 
haben. Könnte mir jemand helfen und erklären was man da genau machen 
muss. Verstehe das nicht mit ce, cd, rw und rst. Habe schon mal ein 
Textdisplay zum laufen bekommen aber das war wesentlich einfacher...
Gruß Serg
#1552060
Lesenswert?

finde es schade das sich bisher keiner gemeldet hat.
Für denjenigen der mir hift das LCD anzusteuern gibt etwas Kleingeld.
Bei Fragen schreibt mir. Schreibe zur Zeit eine Diplomarbeit und komme 
mit dem LCD nicht weiter. Muss dringend das LCD angesteuert bekommen.
Gruß serg
#1557930
Lesenswert?

Hallo, danke für die Antwort.
Ja das ist ein 240x128 Display. Im Anhang das Datenblatt.
Beim Anzeigen kommt es immer darauf an welche Bibliothek ich benutze. 
Manchmal zeigt er mir nur einen Streifen an, manchmal bewegt sich dieser 
Streifen und ein anderesmal wird nichts angezeigt. Habe gedacht dass es 
vieleicht am JTAG liegt, weiß aber nicht wie ich ihn Ausschalten soll. 
Benutze AVR Studio. Gruß Sergej
Angehängte Dateien:
Gast #1558500
Lesenswert?

Moin,
Ich dachte mir, das ich hier wohl richtig sein würde. Immerhin quatscht 
ihr hier nun ein par Jahre ;)

Ich habe mir ein ATMEGA 32-16 DIP bei Reichelt gekauft
http://www.reichelt.de/?ACTION=3;ARTICLE=45026;PROVID=2402
Außerdem noch ein Grafik LCD "LM6270SYL" bei Pollin.de gekauft welcher 
mit einem toshiba t6963c angesteuert wird.

Nun wollte ich mit dem ATMEGA das LCD anzusteuern. Programmieren wollte 
ich es mit dem Programmer:
http://www.reichelt.de/?ACTION=3;ARTICLE=45040;GROUPID=;SID=31hY-ebKwQAR8AADGMjIcf47f37152011c67f87b0c7ea27ff9ebf


Könnt ihr mir da ein Schaltplan liefern, wie ich die alle verbinden 
muss? Und wie kann ich das Display ansteuern? Habt ihr da schon so 
Standard-Codes zum auszuprobieren, auf denen man dann aufbauen kann?

Danke schonmal!

Gruß
GURKE

PS: Als wir diese Sachen gekauft hatten, hatte mein Bruder die Sachen 
ausgesucht weil er davon am meisten Ahnung hat. Nun hat sich allerdings 
rausgestellt, das er im Grunde genommen kein Ahnung hat. Ich hoffe ihr 
könnt mir da helfen!
#1558950
Lesenswert?

Hallo Steffen,
weißt du wie ich ein bereits vorhandenes Programm an einen atmega128 
anpasse?(Einstellungen etc.) Habe eine neuere Headerdatei gefunden, 
diese ist aber für einen Atmega16 und wenn ich nur den Prozessortypen in 
der Option ändere dann bleiben im rechten fenster immer noch die Ports 
vom atmega16, ungeändert und unten im Fenster wird der atmega16 als 
Prozessortyp angezeigt. Machen ich ein neues Projekt und binde die 
Dateien neu ein so bekomme ich viele Fehlermeldungen.
Im Anhand die neue BIB
vielen Dank für die Mühe
meine email ansergej@gmx.de
Gruß Serg
Angehängte Dateien:
#1560542
Lesenswert?

Hallo,

habe ziemlich das gleiche Problem wie Sergej. Habe ebenfalls das Display 
von Reichelt und einen AT90CAN128 als µC.

Hier mal meine defines in der T6963c-Bib:
1
/*
2
 *  GND               (1)  ground 
3
 *  VDD               (2)  LCD logic supply  +5 DC
4
 *  Spanungsteiler    (3)  
5
 *  CD                (4)  <--> 
6
 *  /RD               (5)  <--> 
7
 *  /WR               (6)  <--> 
8
 *  D0                (7)  <--> 
9
 *  D1                (8)  <--> 
10
 *  D2                (9)  <--> 
11
 *  D3                (10) <--> 
12
 *  D4                (11) <--> 
13
 *  D5                (12) <--> 
14
 *  D6                (13) <--> 
15
 *  D7                (14) <--> 
16
 *  /CE               (15) <--> 
17
 *  RS                (16) <-->
18
 *  Spannungsteiler   (17) 
19
 *  MD2               (18) <-->
20
 *  FS                (19) <-->
21
 *  NC                (20) NC
22
 */
23

24

25
/****************************************
26
// **    PIN DEFINITIONS      // **
27
// **
28
*****************************************/
29

30
#define glcd_wr_PIN    0      // **
31
#define glcd_wr_PORT  PORTC   // **
32

33
#define glcd_rd_PIN    1      // **
34
#define glcd_rd_PORT  PORTC   // **
35

36
#define glcd_ce_PIN    2      // **
37
#define glcd_ce_PORT  PORTC   // **
38

39
#define glcd_cd_PIN    3      // **
40
#define glcd_cd_PORT  PORTC   // **
41

42
#define glcd_rst_PIN  4      // **
43
#define glcd_rst_PORT  PORTC // **
44

45
#define glcd_fs_PIN    5     // **
46
#define glcd_fs_PORT  PORTC  // **
47

48
#define glcd_rv_PIN    6     // **  //gibt es bei mir nicht
49
#define glcd_rv_PORT  PORTC  // **
50

51
#define glcd_DATA_PORT   PORTA // **
52
#define glcd_DATA_PIN  PINA    // **
53
#define glcd_DATADIR  DDRA     // **
54

55
#define glcd_md2_PIN  7       // **
56
#define glcd_md2_PORT  PORTC  // **                  
57
//***************************************
58
//***************************************

Leider klappt bei mir schon glcd_init() nicht. Gleich beim ersten Befehl 
glcd_dput(glcd_G_BASE%256) bleibt mein µC in einer Endlosschleife in 
glcd_dput() in Zeile 1 hängen, da die Antwort von glcd_sget immer 0x00 
ist:
1
do {} while ((0x03 & glcd_sget()) != 0x03); // wait until display ready

Ansonsten bleibt das Display leer ohne zu flacker. Das liegt evtl daran, 
dass ich MD2 geschalten habe. In der originalen Bib wird der benötigete 
Pin am µC ja nie als Ausgang geschalten. War ja auch nicht nötig.

Trotzdem läuft bei mir das Display auch nicht :(
#1562333
Lesenswert?

Hallo,
vielen Dank für eure Hilfe. Habe den Fehler jetzt gefunden. Da ich einen 
Atmega128 verwende muss der 103-Kompabilitäts Fuse entfernt werden. 
Jetzt geht es.....
Weiß jemand von euch wie ich eine andere Schriftart verwenden kann, oder 
wie ich Sie an mein Programm anpasse?
Das Prog habe ich hinzugefügt.
Gruß Serg
Angehängte Dateien:
#1565340
Lesenswert?

Hallo

ich versuche gerade die Funktion Big_Font Funktionen zu nutzen und 
möchte mir dabei aus der internen Codemap ein paar Zeichen vergrößer. 
Leider funktioniert das nicht ganz. Sobald ich einen neuen Bereich 
vergrößern will, Zeigt das Display für diesen nur Müll an.
Hier mal der relevante Teil:
1
  //TEST
2
  glcd_clear_graph();
3
  glcd_clear_text();
4
  //, - . / 0 bis 9
5
  glcd_make_big_font (0x0C, 0x19, 128);  //bis 141  0 bis 13
6
  //h i j k l m
7
  glcd_clear_graph();
8
  glcd_clear_text();
9
  glcd_make_big_font (0x48, 0x4D, 142);  //bis 147  14 19
10
  
11
  glcd_print_big (1, 3, 0, 128);
12
  glcd_print_big (3, 3, 13, 128);
13
  glcd_print_big (5, 3, 14, 128);
14
  glcd_print_big (7, 3, 19, 128);



@Sergej

Ich glaube in dem Beitrag "GLCD T6963C Font-Tool" wurde das 
ganz gut erklärt.
Gast #1661034
Lesenswert?

Hi
So die Display Rutine läuft bei mir klasse. Ich habe aber noch ein 
Problem. ich habe mir das Grafik Konvertierungstool von Klabunde geladen 
und mir ne C-Datei mit dem Bild erstellt. Wie bekomme ich die jetzt auf 
den Display dargestellt? Bitte mit diese Library, weil das die einzige 
ist die bei mir funktioniert hat.
Gast #1706279
Lesenswert?

Hallo zusammen,

ich verwende das Display TLX-1013 von Toshiba mit einem Atmega 128. Das 
Display ist richtig angeschlossen, aber es funktioniert nur teilweise. 
Nur die obere Hälfte des Displays funktioniert. Auf der unteren Hälfte 
wird nur Datenmüll angezeigt. Dieses Problem haben wohl auch schon 
andere mit dem Display gehabt, jedoch konnte ich keine Lösung zu diesem 
Problem finden. Der einzige Hinweis den ich gefunden habe, ist, dass ich 
irgendwas im Adressbereich ändern muss. Ich habe versucht mir aus den 
angehängten Datenblatt die Informationen herauszulesen, bin jedoch auf 
nichts gestoßen, was mich weiterbringen könnte. Die Informationen auf 
Seite 10 sehen aber nicht uninteressant aus.
Das Display hat 160x128 Pixel und ich verwende die Library aus diesem 
Thread.
Danke schonmal für eure Antworten.
Angehängte Dateien:
Gast #1706309
Lesenswert?

> Die Informationen auf Seite 10 sehen aber nicht uninteressant aus.
Dann verwende die Infos doch:
Daten für die obere Hälfte des Display liegen im Adressbereich von 
0x0000-0x0FFF, und für die untere Hälfte von 0x8000-0x8FFF, macht also 
zweimal 4kB.
Die Software muss das halt passend umbiegen. Also wo konkret ist das 
Problem?

Ralf
Gast #1706775
Lesenswert?

Hi Benedikt,

> Das konkrete Problem ist diese Informationen in die Lib zu übernehmen...
> Ich weiß nicht, wo ich diese Informationen eintragen muss.
Siehste, dass ist ne Aussage mit der ich was anfangen kann :)

Okay, du musst folgendermaßen vorgehen:
- lokalisiere die Funktionen, die Text- und Grafikdaten ins RAM des 
Displays schreiben (wenn die Lib was taugt, sollten das genau zwei 
Funktionen sein)
- diese Funktionen musst du so erweitern, dass sie die RAM-Zugriffe 
entsprechend umbiegen, d.h. du musst erkennen, wo adressmäßig die obere 
Hälfte endet und demnach auf die Adresse der folgenden Zugriffe 0x8000 
dazu addieren

Hört sich schwieriger an, als es (wahrscheinlich) ist. Wenn du 
Schwierigkeiten hast, das umzusetzen, frag nochmal. Ich schlage vor, 
dass du die Sourcen deiner Lib verwendest (ich mag nicht eine der weiter 
o.g. Sourcen verwenden, für den Fall dass die nicht mehr aktuell sind 
o.ä.)

Ralf
Gast #1709572
Lesenswert?

Ich würde mal vermuten, dass die Funktion "glcd_set_address()" der erste 
Ansatzpunkt ist. Es wird das Problem nicht auf einen Schlag lösen, 
müsste aber dafür sorgen, dass du in der unteren Hälfte auch was 
siehst...

Ralf
Gast #1709702
Lesenswert?

Ja genau die Funktion habe ich auch als Ansatzpunkt genommen, komme da 
aber nicht weiter. Habe auch mal bei glcd_T_BASE 0x8A00 eingetragen 
anstatt 0x0A00
Jetzt erscheinen aber auf der unteren Hälfte vielen Pixel und mittendrin 
die Zeichen die ich gesendet habe. Auf der oberen Hälfte erscheint das 
gleiche dann ohne die Pixel.
Gast #1711504
Lesenswert?

Also ich habe nochmal alles probiert, aber ich komme auf keinen grünen 
Zweig.
@Ralf: Könntest du mir dabei helfen die Lib etwas umzuschreiben. Ich 
arbeite mich gerade in das µC Gebiet ein und lerne gerade alles über ADC 
etc.
Display Rams etc wollte ich erst später durchgehen.
Ich habe leider kein anderes Display hier, sonst würde ich so lange 
einfach ein anderes nehmen...
Gast #1713937
Lesenswert?

Wenn ich unter #define glcd_T_BASE 0x8A00 eingebe anstatt #define 
glcd_T_BASE 0x0A00 und bei #define glcd_G_BASE 0x8000 anstatt #define 
glcd_G_BASE 0x0000 wird nicht, wie erwartet nur die untere Hälfte des 
Displays angesteuert, sondern beide Hälften parallel. Es erscheint exakt 
das gleiche auf beiden Hälften.
Würde jetzt nur die untere Hälfte angesteuert, hätte ich einfach beide 
Hälften einzeln über die Software nachher angesteuert. SO verstehe ich 
es aber nicht. Wie könnte ich den nur die untere Hälfte ansteuern?
Gast #1726214
Lesenswert?

Hi,

habe ein TLX-1013-E0,
an einem NetIO mit atmega 32 mit 16Mhz.
Daten Port C,den rest an Port D.

Nur ich finde überall andere pin belegungen??
Es kommen Symbole und das Display blinkt.
Welcher ist der RV pin??

Fuse müssten eigentlich soweit passen.
Verkabelung auch.
Liegt es an JTAG? wenn ich den ausmache kann ich nicht mehr per ISP 
flashen?

Gruß
oobi
Gast #1728792
Lesenswert?

Hei oobi


Habe gerade Deinen Eintrag gelesen und das Datenblatt von Pollin 
geladen.
Ein bekanter von mir hat das gleiche.
In dem ist für ISP der Port B,also Miso,Mosi,SCK zuständich.
 Wenn Du den Port C frei benutzen willst, must Du JTAG deaktivieren.
Ich versuche auch gerade ein TLX-1013-E0 zum laufen zu bringen(am 
mega32). Bei mir liegt das Poblemm auch darin, das nur die obere Hälfte 
ordentlich arbeitet. Ich programiere mit Bascom. Habe es auch mit C 
versucht, aber leider noch kein funktionierendes Programm, das ich mit 
WinAvr an meine Aufgabe anpassen könte, gefunden.

vileich bekomme ich doch noch Hilfe. habe 4 Displays.

mfg
hft47
Gast #1728907
Lesenswert?

Hi
ja bei dem NetIO liegt ISP aber doch auch port B.

Habe mitlerweile alle Ports ma durchprobiert im moment habe ich Daten 
auf Port C und den rest auf Port A.

hft47 kannst du mir mal die Pin belegung schicken und welche pins 
benutzt werden, bin mir nicht ganz sicher ob das alles so richtig 
ist,weil die Software die ich von hier habe und mein display 
unterschiedliche belegung hat.

Gruß
oobi
Gast #1728953
Lesenswert?

Hier eine Config
Config Graphlcd = 240 * 128 , Dataport = Portc , Controlport = Portd , 
Wr = 2 , Rd = 3 , Ce = 4 , Cd = 5 , Reset = 6 , Fs = 7 , Mode = 8

Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portd , 
Wr = 2 , Rd = 3 , Ce = 4 , Cd = 5 , Reset = 6 , Fs = 7 , Mode = 8
eigentlich egal welche pins. Gehen alle. Leider bei meinen Displays 
immer nur die obere Hälfte.
Gast #1729103
Lesenswert?

'The connections of the LCD used in this demo
'LCD pin                  connected to
' 1        GND            GND
 '2        GND            GND
 '3        +5V            +5V
 '4        -9V            -9V potmeter
 '5        /WR            PORTC.0  (PORTD.2)oder Porta.0 oder B.0
 '6        /RD            PORTC.1  (PORTD.3)
 '7        /CE            PORTC.2  (PORTD.4)
 '8        C/D            PORTC.3  (PORTD.5)
 '9        NC             not conneted
 '10       RESET          PORTC.4  (PORTD.6)
 '11-18    D0-D7           PA      (PB oder c
 '19       FS             PORTC.5  (PORTD.7)
 '20       NC             not connected
Angehängte Dateien:
Gast #1729174
Lesenswert?

die untere Hälfte wird von der Bascom glcd.lib eben leider nicht 
unterstüzt.
Auch in C-Programmen habe ich nichts finden können, wo das geht. Da die 
Anzeigen doch schon relatiev alt sind, gab es früher einige Beiträge. 
Mit keinem richtigen suchervolg auf eine lib für dieses Display. siehe 
oben
Gast #1729204
Lesenswert?

was ich nicht verstehe ich habe die WetterStationDisplay software von 
hier benutzt und auch so angeschlossen aber es ging nicht ne zeitlang 
kamen seltsame zeichen und das Display hat geblinkt.
Jetzt habe ich es wieder anderes angeschlossen und jetzt bleibt das 
Display dunkel.
Eigentlich müsste ja "Hello World" kommen?
Ka was ich noch machen soll.
Jemand ne idee??

Gruß
oobi
Gast #1729460
Lesenswert?

ich benutze zum testen ein Bort von Pollin.
Ich habe im prog t6963c.h geändert

/*
 *  FG                (1)  frame ground
 *  GND               (2)  ground
 *  VDD               (3)  LCD logic supply  +5 DC
 *  VO                (4)  Contrast
 *  /WR               (5)  <-->
 *  /RD               (6)  <-->
 *  /CE or /CS        (7)  <-->
 *  CD or RS          (8)  <-->
 *  /RST              (9)  <-->

 *  D0                (10) <-->
 *  D1                (11) <-->
 *  D2                (12) <-->
 *  D3                (13) <-->
 *  D4                (14) <-->
 *  D5                (15) <-->
 *  D6                (16) <-->
 *  D7                (17) <-->

 *  FS                (18)           font select       HI : narrow 
LOW : Wide   ( normal )
                                                       40 with 6x8 font 
30 with 8x8 font
 *  Vout              (19)           Variable Resistor (~5K Ohm) with 
GND and centre with VO ( Pin 4 ). Used for contrast adjustment.
 *  BLA               (20)           Back light + (+5V DC)
 *  BLK               (21)           Back light - (GND)
 *  DSPON             (22)           I don't Know   but i think means 
display ON or ...
 */



/****************************************
                  // **
           PIN DEFINITIONS      // **
                  // **
*****************************************/
                  // **
#define glcd_wr_PIN    2      // **0
#define glcd_wr_PORT  PORTD    // **
                  // **
#define glcd_rd_PIN    3      // **4
#define glcd_rd_PORT  PORTD    // **
                  // **
#define glcd_ce_PIN    4      // **1
#define glcd_ce_PORT  PORTD    // **
                  // **
#define glcd_cd_PIN    5      // **3
#define glcd_cd_PORT  PORTD    // **
                  // **
#define glcd_rst_PIN  6      // **2
#define glcd_rst_PORT  PORTD    // **
                  // **
#define glcd_fs_PIN    7      // ** 0, PortD
#define glcd_fs_PORT  PORTD    // **
                  // **
#define glcd_rv_PIN    1      // **
#define glcd_rv_PORT  PORTD    // **
                  // **
#define glcd_DATA_PORT     PORTC  // **
#define glcd_DATA_PIN    PINC  // **
#define glcd_DATADIR    DDRC  // **
                  // **
//***************************************
Gast #1729513
Lesenswert?

Stimmt jetzt das



/*
 *  FG                (1)  frame ground
 *  GND               (2)  ground
 *  VDD               (3)  LCD logic supply  +5 DC
 *  VO                (4)  Contrast
 *  /WR               (5)  <-->
 *  /RD               (6)  <-->
 *  /CE or /CS        (7)  <-->
 *  CD or RS          (8)  <-->
 *  /RST              (9)  <-->

 *  D0                (10) <-->
 *  D1                (11) <-->
 *  D2                (12) <-->
 *  D3                (13) <-->
 *  D4                (14) <-->
 *  D5                (15) <-->
 *  D6                (16) <-->
 *  D7                (17) <-->

 *  FS                (18)           font select       HI : narrow
LOW : Wide   ( normal )
                                                       40 with 6x8 font
30 with 8x8 font
 *  Vout              (19)           Variable Resistor (~5K Ohm) with
GND and centre with VO ( Pin 4 ). Used for contrast adjustment.
 *  BLA               (20)           Back light + (+5V DC)
 *  BLK               (21)           Back light - (GND)
 *  DSPON             (22)           I don't Know   but i think means
display ON or ...
 */


oder die Pin belegunf?

'The connections of the LCD used in this demo
'LCD pin                  connected to
' 1        GND            GND
 '2        GND            GND
 '3        +5V            +5V
 '4        -9V            -9V potmeter
 '5        /WR            PORTC.0  (PORTD.2)oder Porta.0 oder B.0
 '6        /RD            PORTC.1  (PORTD.3)
 '7        /CE            PORTC.2  (PORTD.4)
 '8        C/D            PORTC.3  (PORTD.5)
 '9        NC             not conneted
 '10       RESET          PORTC.4  (PORTD.6)
 '11-18    D0-D7           PA      (PB oder c
 '19       FS             PORTC.5  (PORTD.7)
 '20       NC             not connected



Muss zwischen 19 ein 5K wieder stand zu +5V


Gruß
oobi
Gast #1729567
Lesenswert?

das schon klar,
ich mein die Pin belegung von dem LCD welcher pin was ist.

 FG                (1)  frame ground
 *  GND               (2)  ground
 *  VDD               (3)  LCD logic supply  +5 DC
 *  VO                (4)  Contrast
 *  /WR               (5)  <-->
 *  /RD               (6)  <-->
 *  /CE or /CS        (7)  <-->
 *  CD or RS          (8)  <-->
 *  /RST              (9)  <-->

 *  D0                (10) <-->
 *  D1                (11) <-->
 *  D2                (12) <-->
 *  D3                (13) <-->
 *  D4                (14) <-->
 *  D5                (15) <-->
 *  D6                (16) <-->
 *  D7                (17) <-->

 *  FS                (18)

oder

1        GND
 '2        GND
 '3        +5V
 '4        -9V
 '5        /WR
 '6        /RD
 '7        /CE
 '8        C/D
 '9        NC
 '10       RESET
 '11-18    D0-D7
 '19       FS
 '20       NC

Gruß
oobi
Gast #1729608
Lesenswert?

ich probiere gerade mit WinAvr die t6963c.h an 160x128 anzupassen. Habe 
von 240 auf 160 pixelbreite und 20 zeichen 8x8 umgestellt. Obere Hälfte 
läuft priema. "Hallo World" wird beim zeichnen der linien an 
denPixeltreffponkten invertiert und nach weiterziehen der Liniern wieder 
richtig Dargestellt.

mfg
hft47
Gast #1730651
Lesenswert?

Versuch mal das in deiner T6963c.h

void glcd_set_address(unsigned int addr){
if(addr >= 0x1000 )
{
 addr -= 0x1000;
 addr += 0x8000;
}

glcd_dput(addr%256);
glcd_dput(addr>>8);
glcd_cput(0x24);
}

Das ist wahrscheinlich noch nicht die ganze Miete,
aber evtl. siehst du dann was auf der unteren Hälfte.
Gast #1730784
Lesenswert?

Danke für deinen Tip.
habe folgende Änderungen gemacht:
/* ----- Definitions concerning LCD internal memory  ------ */

#define glcd_FONT_SELECT 0        // Which Font? 1 = FS HIGH = narrow 
(6x8) / 0 = FS LOW = normal (8x8)

//#if glcd_FONT_SELECT          // narrow font
//    #define glcd_FONT_WIDTH 6      // pixel width
//  #define glcd_BYTES_PER_ROW 0    // 40 chars per row
//  #define glcd_G_BASE 0x0400      // base address of graphics memory
//#else                  // normal font
  #define glcd_FONT_WIDTH 8      // pixel width
  #define glcd_BYTES_PER_ROW 20    // 30 chars per row
  #define glcd_G_BASE 0x0000      // base address of graphics memory
//#endif

#define glcd_T_BASE 0x0a00        // base address of text memory

#define glcd_XMAX 160        // 240 limits of (x,y) LCD graphics drawing
#define glcd_XMIN 0
#define glcd_YMAX 128
#define glcd_YMIN 0

Zahlen hinte // sind die alten Werte
Gast #1730807
Lesenswert?

jetzt Dein Vorschlag:

// ------------------------------------------------------------
void glcd_set_address(unsigned int addr){
if(addr >= 0x1000 )
{
 addr -= 0x1000;
 addr += 0x8000;
}

glcd_dput(addr%256);
glcd_dput(addr>>8);
glcd_cput(0x24);
}

altes auskommenteirt:

/*void glcd_set_address(unsigned int addr){
glcd_dput(addr%256);
glcd_dput(addr>>8);
glcd_cput(0x24);
}
*/

Keine Änderung.
bin leider absoluter Anfänger in C
daher sehr auf Komentare angewiesen.
wenn ich die werte der glcd_G_BASE von 0000h auf 8000h und
glcd_T_BASE 0x0a00 auf 0x8a00 ändere, werden obere und untere Seite 
gleich beschrieben. Also untere Seite ganz! Setze ich die alter Werte 
und Brenne neu, bleibt der untere Teil erhalten, der Obere wird neu 
beschrieben.


fht47
Gast #1730967
Lesenswert?

>ich weis noch nicht recht.

Jetzt wo es spannend wird machst du nen Rückzieher;)
Naja, musst du selber wissen. Ist schon ok.
Das Ding ist aber ne echte Krücke. Das muss man quasi
wie zwei getrennte Displays behandeln.
Gast #1732301
Lesenswert?

>Habe Adr13 auf Adr15 gelegt.
>Die gleiche Sch...

Bringt alles nichts. Schliess A15 wieder so an wie es vorher war.
Laut Datenblatt wird das Display bei 160 Breite im Dual Scan betrieben.
Da lässt sich nichts dran ändern. Du hast dann zwei Displays mit 160x64.
Eins geht von 0x0000 bis 0x07FF. Das zweite von 0x0800 bis 0x0FFF.
Da müsste man einiges an der Software ändern damit da was geht. Wenn
du über Zeile 63 gehst musst du einen Offset von 0x800 zur Adresse
addieren. Leider sind sowohl der Grafik als auch der Textbereich dann
in zwei Teile gesplittet. Viel Spaß beim umrechnen.
Gast #1732598
Lesenswert?

Kann man diese Konstanten:

#define glcd_T_BASE 0x0a00  // base address of text memory
#define glcd_G_BASE 0x0000  // base address of graphics memory
in variable umwandeln ???
dan könte man sie im laufenden Programm hin und her umschalten in
obere oder obere und untere Hälfte!
glcd_G_BASE 0x8000  // base address of graphics memory
glcd_T_BASE 0x8a00  // base address of text memory

nach umschalten auf obere Hälfte bleibt die untere Anzeige erhalten.
Erst beide Hälften, dan obere Hälfte neu beschreiben

geht das?????????

mfg
hft47
Gast #1754140
Lesenswert?

Hallo alle zusammen,

zunächst einmal großes Lob und vielen Dank für die Autoren der Library!

Nach langem Suchen und Testen bin ich hier fündig geworden und die Sache 
läuft soweit einwandfrei. Ich nutze die Version die am 08.03.2006 16:43 
von Florian hier hochgeladen wurde.

Nun meine Frage: Welche Funktion ist zum Anzeigen von Bitmaps gedacht? 
Die glcd_show() sieht dafür doch erstmal nicht verkehrt aus. Doch Frage 
ich mich, warum Nico in seiner Beispiel-Bitmap den Datentyp "uint8_t" 
für das Array nutzt (char erwartet von der Funktion). Kann jemand bitte 
kurz ein Codeschnipsel posten, wie ich das Bild aus der 
"picture_beispiel.txt" anzeigen würde?

Würde mich über eine Antwort freuen:)
Gast #1754766
Lesenswert?

Hallo zusammen,

ich benutze die Library jetzt seit ein paar Tagen, wirklich gut :)
Eine Frage habe ich aber:

Mir gefällt der Standard-Font von meinem T6963 ganz gut, den man über 
glcd_print(int x, int y, const char *string) ausgeben kann.

Über x und y gibt man aber ja die Spalte und Zeile an, nicht aber die x 
bzw. y-Koordinate auf dem LCD, wie der Name vermuten lässt.

Wie kann ich mit der Library an beliebigen Positionen auf dem Display 
etwas ausgeben? Mit der Font-Erweiterung (Font generieren) klappt das 
ja, geht das auch mit der Standard-Libary?

Besten Dank schon einmal,
Daniel
Gast #1805593
Lesenswert?

@bastler

warum sollte dein Kreis nicht rund sein? Wie sieht er denn aus? 
gestaucht oder verschoben? Beschreibe das mal ein wenig.

Um meine eigene Frage zu beantworten. mit glcd_show() werden Bitmaps 
gezeigt. Man muss dazu jedoch sagen die BMP's müssen die volle Breite 
des LCD haben und somit ist eine Darstellung von 2 Bmps nebeneinander 
nicht möglich. Man gibt die Zeile (0-15 bei einem 128 pixel hohem 
Display) an und dann die Höhe der BMP in Pixel.

Ich habe mir darauf basierend eine eigene Funktion geschrieben. die mir 
eine flexibelere Positionierung ermöglicht und auch bmps nebeneinander 
passen.

Generell sei noch gesagt, dass das Array vom typ "const char []" sein 
sollte und pixel/byte der fontbreite entsprechen muss. Ein gutes Tool 
zum konvertieren ist das hier
http://en.radzio.dxp.pl/bitmap_converter/
funktioniert perfekt ;)

Viele Grüße
Gast #1984631
Lesenswert?

Hey AtmegaMan,

ich bin gerade dabei auch ein Bild anzeigen zu lassen, ich hab momentan 
das Problem, daß zwar alles angezeigt wird, aber seltsamerweise der ganz 
rechte Teil wird links vom Bildschirm angezeigt.
Kannst du bitte mal dein Code posten, ich vermute ich starte nicht oben 
links in der Ecke mit anzeigen an. Ich hab eine Base adresse von 0x0200,
ich vermute da liegt mein Fehler.
Ich finde nirgends ein Codeschnipsel über das Anzeigen von Bildern.

Gruß
Bernd
Gast #2035882
Lesenswert?

Grüß euch,
Ich probiere und programmiere jetzt schon eine ganze Weile herum, um 
eine Grafik richtig auszugeben...
Ich habe die aktuellste t6963c.h für mein 128x128 Display angepasst und 
habe nun folgendes Problem:
Wenn ich eine Linie von 0,0 bis 64,64 zeichne sieht die Ausgabe so aus, 
wie ich es im beiliegenden Bild gezeichnet habe, jede zweite Zeile wird 
sozusagen eine Zeile nach oben geschoben..
Ich vermute, dass das Problem nicht am Display liegt, sondern am Code, 
da eine vorherige Version (die ich versehentlich überschrieben habe) 
bereits Grafiken (Linien und Kreise) richtig dargestellt hat.
Weiters vermute ich, dass der Fehler in der Funktion glcd_pixel liegt, 
da der besagte Fehler sowohl beim Zeichnen von Kreisen, als auch bei 
Linien auftritt, welche ja beide die glcd_pixel Funktion nutzen.

Die Textausgabe funktioniert ohne Probleme. Ich hoffe mir kann jemand 
weiterhelfen, und bedanke mich schon mal im Voraus :)

grüße
bernhard
Angehängte Dateien:
Gast #2036045
Lesenswert?

Hab den Fehler jetzt gottseidank schnell gefunden..
Ich hab die Adresse für den AdressPointer mit 128 statt 0xFF maskiert, 
um HighByte und LowByte nacheinander ins 16Bit Register schreiben zu 
können.
Saublöder Denkfehler ;).
Gast #2080579
Lesenswert?

Hallo!

ich habe nun auch die Library zum laufen bekommen, möchte jetzt in einem 
Text ein Zahl darstellen lassen können so wie:

printf("Raum 1 %i °C",temp_r1);

wie kann ich das machen ??? sprintf ?

danke!
Gast #2084224
Lesenswert?

Hallo,

ich kann auch soweit super damit arbeiten, nur habe ich das Problem wenn 
ich das Display mit FS umschalte auf 40 Zeichen pro Zeile kann ich nicht 
mehr einen Kreis zeichnen bzw. ein Viereck. Kreis sieht aus wie ein Ei 
und es fehlen Pixel und beim Viereck
geht mal ein Strich ab??

Bitte um Hilfe !
Gast #5995270
Lesenswert?

Hallo Moba2 und Mike,

das Problem mit dem Strich, wie schon richtig im Thread "Problem mit 
Kreis" erörtert wurde, liegt am Berechnungsfehler der Pixeladresse und 
Bitzuordnung. Ich habe hierzu folgenden Korrekturvorschlag:

//********************************************************************** 
*******
//  Pixel
//  Input:  Zeile,Spalte,Set/Clear
//  Output:  -
//********************************************************************** 
*******
void glcd_PIXEL(unsigned int ui_x,unsigned int ui_y, unsigned char 
uc_show1)
{
unsigned int ui_addr;       // memory address of byte containing pixel 
to write
unsigned int ui_xn;
unsigned int ui_pixels;

   if ((ui_x >= glcd_XMAX) || (ui_y >= glcd_YMAX)) return;

   if (glcd_BYTES_PER_ROW > 30) ui_pixels = 6; else ui_pixels = 8;

   ui_addr = ui_y  glcd_BYTES_PER_ROW  ui_pixels + ui_x; //Pixel, was 
veraendert werden soll

   ui_xn = ui_addr;
   ui_addr = ui_addr /ui_pixels;         //n-tes Byte ermitteln
   ui_xn= ui_xn - ui_addr * ui_pixels;   //Bitposition ermitteln
   ui_addr = ui_addr + G_BASE;    //RAM Adresse ermitteln

   glcd_set_address(ui_addr);   // set LCD addr. pointer

   if (uc_show1) glcd_cput(0xf8 | ((ui_pixels -1) - ui_xn %8)); 
//entsprechende Bitposition setzen
            else glcd_cput(0xf0 | ((ui_pixels -1) - ui_xn %8));  //oder 
ruecksetzen
}


void glcd_setpixel(int column, int row)  // set single pixel in 240x64 
array
{
   glcd_PIXEL(column,row,1);
}


void glcd_clrpixel(int column, int row)  // set single pixel in 240x64 
array
{
   glcd_PIXEL(column,row,0);
}




//********************************************************************** 
*******
//  GetPixel
//    Input:  x,y
//  Output:  0,1
//********************************************************************** 
*******
unsigned char glcd_GETPIXEL(unsigned int ui_x, unsigned int ui_y)
{
unsigned int ui_pixeldata;
unsigned int ui_addr;       // memory address of byte containing pixel 
to write
unsigned int ui_pixels;
unsigned int ui_xn;

   if ((ui_x >= glcd_XMAX) || (ui_y >= glcd_YMAX)) return(0);

   if (glcd_BYTES_PER_ROW > 30) ui_pixels = 6; else ui_pixels = 8;

   ui_addr = ui_y  linechars  ui_pixels + ui_x;
   ui_xn = ui_addr;
   ui_addr = ui_addr /ui_pixels;
   ui_xn= ui_xn - ui_addr * ui_pixels;
   ui_addr = ui_addr + G_BASE;
   glcd_set_address(ui_addr);   // set LCD addr. pointer

   glcd_cput(0xE0);
   ui_pixeldata = glcd_dget();
   return(((ui_pixeldata & 0x00FF) >> ((ui_pixels -1) - ui_xn %8)) & 
0x01);
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren