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.
angepasst werden muss nur die variablen definition. um bilder anzuzeigen müsst ihr nur genau diesen code irgendwo einbetten. dazu noch die <pgmspace.h> includen den anderen mist den das programm erzeugt könnt ihr löschen
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.
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.
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
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
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.
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.
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
Hello All Can any one share us T6963C C library for dsPIC (MikroC dsPIC) because the one supported with the Compiler isn't flexible with dsPIC30F4011 Thank you
sorry i don't have this c library which you looking for. But i think you can easily adjust the definings to control the I/O's. the code to control the LCD Driver is standart c#
Ach ja. Unser Projekt ist so langsam fertig. Ihr könnt ein kleines filmchen und ein paar bilder downloaden unter: Download hinweise: Werbung wegklicken und dann auf den Donwload Button klicken. http://www1.file-upload.net/download_10.06.06/n2ihqg.rar.html
cooles ding, nur leider fragt sich, ob sich der aufwand sich für ein spiel auch lohnt.. vom spielspaß und dauer her gesehen.. aber wenn man snake-besessen ist :-)
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?
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
Hallo Florian, auf Deinem Bild sind so nette Schalter zu sehen... Woher hast Du die, wo bekommt man so etwas Fredy
Du meinst wohl mich, nicht Florian. ;-) Das Sind Printtasten von MEC "Navimec" ich hab sie von http://www.distrelec.com/ishopWebFront/catalog/product.do/para/language/is/de/and/shop/is/CH/and/id/is/01/and/node/is/aeacacacadbd/and/series/is/1.html Der dazugehörige print hab ich selber gelayoutet. @Felix Beschreib mal dein System. Schaltplan, Layout, Fotos usw.....
@ 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
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
Hi Nico, Du hast mir den Code damals auch geschickt - mein Projekt liegt zwar derzeit auf Eis, aber der Code tut´s prima (Danke nochmal). Gruß, Michael
Hallo, ich würde gerne wissen welches Display du einsetzt @Nico. Oder steht das hier schon irgendwo? Gruß Nico
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
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
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
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 :-)
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 ;-)
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
DDRx ist das "Data Direction Register" und schaltet zwischen Input und Output um.
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
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
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
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
Kann es sein, dass zusätzlicher Speicher neben dem t6963c vorhanden sein muss? Ich meine, dass der t6963c nicht ohne Erwiterung zum generieren der Custom Fonts in der Lage ist!??
Hallo, in welchem Source sind die Erweiterungen, um Eigene Fonts zu nutzen? Falls jemand so nett wäre, und ihn hier anhängen würde. Gruß Sascha
Was meinst du eigentlich mit "Erweiterungen" ?? Ich benutze die Library und ich weiß nicht genau um welche "Erweiterungen" es geht!
Um zum Beispiel dein Fontgenerator zu nutzen :) Dort ist zwar ein Code vorhanden, aber die im Generator benutze glcd_print2_P Routine nicht. Ein Beispiel für die Nutzung wäre nicht schlecht. Gruß Sascha
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!
> 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
AAAHHHHHHH! =:-O ja, du hast recht! die Dateien: font.h und font.c sind nicht im ZIP File! Hab's neu verpackt und raufgeladen ;o) Danke, Christian
Hehe, habe mich wohl ein wenig blöd ausgedrückt :) Werde es gleich mal ansehen. Danke........ Gruß Sascha
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.
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
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.
Hallo, kannst Du mir sagen, wo Du die Libary für CodeVision gefunden hast? Ich habe mich schon "wund" gesucht aber nix gefunden. Nur für AVR Studio begegnen mir Libary´s für den T6963. Wäre echt nett, wenn Du mir da was sagen könntest. Gruß Clyde
Die lib ist doch verlinkt? http://www.mikrocontroller.net/attachment/16196/T6963C_LCD_Controller.zip - siehe weiter oben.
Danke, und ich werde es nachher mal ausprobieren. So wie ich das verstanden habe, hat er sie angepasst auf AVR Studio... Und somit wäre si ja nicht mehr kompatibel zu CodeVision. Gruß Clyde
Mann Mann Mann 8) Bin ich blind gewesen... Habe es jetzt nach nochmaligem Lesen des Threads auch gesehen... peinlich peinlich... Vielen Dank Gruß Clyde
Die von mir verlinkte ist die CodeVision-Version ;) Die für AVR Studio angepasste Version hier: http://www.mikrocontroller.net/attachment/16194/t6963c.h
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
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 :(
Was sind die Mindestanforderungen der Library? Läuft sie auf einem Atmega 8-16 (ohne zusätzlichen Speicher)?
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
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
Hi, habe ein toshiba TLX 1013 E0 und bin noch nicht so der profi und wollte fragen ob ihr eure projekt mal uploaden könntet das ich mal ein wenig an das display ausprobieren kann. Gruß oobi
Seh ich das eigentlich richtig das das Display sowohl Grafik darstellen aknn als auch Text "drüberschreiben"?
>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.
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?????
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?
Wollte nur vermelden das ich das Display mit der Libaryund Marquee Demo erfolgreich in Betrieb genommen habe. Mußte nur bei den Includes ein bischen was anpassen an die GCC Version.
Alexander Lamprecht wrote: > Die für AVR Studio angepasste Version hier: > http://www.mikrocontroller.net/attachment/16194/t6963c.h Wolte nur mal anmerken, daß es bei mir auch funktioniert: MC: ATtiny461 (16MHz interner RC-Oszillator) Display: MG24065G (240*64) Peter
könnt ihr mir vllt eure fertige software geben weil mit der header datei bekomm ich nichts hin?? GRuß oobi
Mein komplettes AVR Studioprojekt für den Mega32 pinbelegung steht im headerfile, fertige HEX für 1Mhz liegt bei.
>habt ihr schon einen Programmtext für die C-Control Pro 128?
selbst schreiben .. oder weitersuchen
den C-contol basickram tut sich kaum einer an ^^
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.
Die Stromangabe bezieht sich nur auf das Backlight. Das sind LEDs und die brauchen halt einen Vorwiderstand oder eine Stromquelle. 5V+ sind 5V ohne Widerstand, maximal zieht der 50mA. Gruß Fabian
Achso, die LEDs sind bei diesem Datasheet nicht extra gelistet. Sind das dann die Anschlüsse Anode bzw. Kathode am rechten Rand des Displays?
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?
Kein Spannugsteiler, eineinfacher Vorwiderstand reicht doch. Der Widerstand errechnet sich mittels:
Rechnen darfst du selbst...und auch mal nach LED und Vorwiderstand suchen ;-) Gruß Fabian
Achso über die LED fallen definiert die 3,6V ab?! Na dann is gut. Dachte ich muss die mit 3,6V "versorgen". Aber mit Strom "versorgen" macht wohl mehr Sinn. :) Danke PS: Nur um sicher zu gehen: Es sollten dann die ~24,4 Ohm (wie oben) als reiner Vorwiderstand sein, oder?
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 :(
@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
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
Bei Port-C klingelt bei mir doch sofort die JTAG-Fuse-Klingel. Schau mal ob die Fuse für JTAG noch aktiv ist...die blockiert dir dann nämlich die Hälfte von Port-C Gruß Fabian
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
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
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....
Will nur etwas mit Hilfe der bib Anzeigen lassen. Benutze deswegen schon bereits fertige Projekte. Hier noch eins. Habe nur die Pinbelegung verändert aber wie oben schon bereits gesagt.....es tut sich nichts.. gruß serg
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
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
Was hast du denn da für ein Display dran? 240x128?? Zeigt es nur wilde Streifen und Muster? -> dann stimmt ja schon mal die Kontrastspannung.
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
Deine Difines scheinen erstmal in Ordnung zu sein. Was machst du mit dem MD2-Anschluss des Displays?
MD2 -> High wenn FontSelect = 8x8 (wide) MD2 -> Low wenn FontSelect = 6x8 (narrow)
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!
Hallo Gurke, hoffe das hilft dir weiter http://www.8051projects.net/out.php?link=http://en.radzio.dxp.pl/t6963/ gruß serg
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
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 :(
Arrg. Habs gefunden. Lag leider an einer Durchkontaktierung für den RD Pin. :) @Sergej: Die Bibliothek sollte also laufen, insofern du MD2 auch auf High oder Low ziehst. Falls du noch Hilfe brauchst, dann melde dich.
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
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.
Hallo Josef, danke für den Link. Habe den Fehler gefunden. Anstelle von glcd_print.... muss man lcd_print... schreiben, dann funktioniert es mit den Fonds einbinden. Danke dir. Gruß Serg
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.
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.
> 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
Das konkrete Problem ist diese Informationen in die Lib zu übernehmen... Ich weiß nicht, wo ich diese Informationen eintragen muss.
Vllt. könnte mir zumindest jemand sagen, wie ich vorgehen soll, um die Lib zu ändern, also ein paar erste Schritte...
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
EDIT:
> Ich schlage vor, dass du die Sourcen deiner Lib _verwendest_
Sollte natürlich postest heissen, sorry.
Ralf
Also hier ist die Lib die ich verwende. Ich schaue morgen mal rein, bin aber bis dahin dankbar für jeden Tipp.
Also ich habe mal reingeschaut und gesucht, aber so ganz klar ist mir noch nicht welche Funktionen dafür zuständig sind.
Also ich habe jetzt ein paar Sachen probiert, aber ausser Compilerfehlern habe ich nichts erreicht. Ich wäre für einen Tipp sehr dankbar...
Ich gebe bald auf. Kann mir bitte mal jemand helfen, dass in der Lib zu ändern. Ich finde nicht die genaue Stelle wo ich das umändern kann. Bzw. wie es hinzufügen kann.
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
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.
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...
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?
Ich hätt mal ne Frage und zwar welche Taktfrequenz muss ich den für einen Atmega32 nehmen? mfG
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
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
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
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.
Hast du auch ein TLX-1013-E0?? weil laut datenblatt ist bei mir Wr=5 , RD=6 , CE=7 , C/D=9 , rst=10 , D0-D7=11-18 mein display hat auch nur eine auflösung von 160x128 pixel. Gruß oobi
'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
>es ist ein TLX1013E0 160X128
Na gut, dann eben 160 statt 128. Und wieso trägst du es als 240er ein?
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
bei dieser Configuration arbeitet wenigstens die obere Hälfte präziese in Text und Grafigbefehlen von Baskom. Auch die einstellung 240x64 geht für die obere Hälfte. gerade noch mahl getestet.
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
nee ich nimm einfach die "WetterStationDisplay" software die hier in dem Beitrag jemand hochgeladen hat und passe einfach die Pins an. gruß oobi
habe gerade "WetterStationDisplay" in WinAvr geladen, versucht die pins anzupassen, kompeliert, gebrannt AVRm32, 2 wagerechte lienien das wars
fehler beim anpassen jezt läuft di obere hälfte des display. Ähnlich alter Bildschirmschoner (Rotierende Lienien)
@ hft47 was hast du für ein Board oder hast du einfach nur ein atmega32?? und an welchen Port hast du was jeweils dran das es mit der Wetterstation leuft? Gruß oobi
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 // ** // ** //***************************************
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
Dataport = Portc , Controlport = Portd , Wr = Portd.2 , Rd = Portd.3 , Ce = Portd.4 , Cd = Portd.5 , Reset = Portd.6 , Fs = Portd.7
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
Pins am GLCD Pin1 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
gut danke dir dann weiß ich schon mal das meine grund basis stimmt dann werde ich nochmal rum probierenund bescheid sagen wenn was geht. gruß oobi
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
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.
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
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
Ich glaube es wäre einfacher bei deinem Display A15 abzutrennen und an A12 anzuschliessen;)
>Was meinst Du mit A15 und A12
Die Adressleitungen vom T6963 zum RAM.
Dein Display ist ne Fehlkonstruktion;)
Siehe Bild. Rot durchschneiden und blau verbinden. Auf eigene Gefahr natürlich.
ich weis noch nicht recht. Habe zwar 4 Stück, werde es doch lieber erst mit Software versuchen. Schneiden kann ich immernoch mvf hft47 nabend
>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.
Hei Ich habe es riskiert!!! Jezt werden beide Hälften parallel angesteuert. Schade. Ewentuell falscher Pin? Werde mal Morgen weitermachen. mfg hft47
>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.
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
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:)
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
Hallo, guten Tag. Ich habe von Pollin ein Display mit 128x64 Pixel. Unter bascom funktioniert es. Wie kann man deine Routinen umsetzen, das der Kreis zb bei mir auch rund ist?
@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
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
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
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 ;).
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!
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 !
Hi, ich habe das gleiche Problem mit den Strichen, nur ich finde den Fehler nicht; JTAG ist inaktiv. Beitrag "T6963c Ansteuerungsproblem"
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); }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.