Zeige Beiträge
|
Seiten: 1 2 [3] 4 5 6 7 8 ... 28
|
31
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: Februar 27, 2011, 17:22:37
|
Hallo Datendatenbank,
der Testsigning Mode muss immer an sein, wenn du dein USB-LCD verwenden willst (nach meiner Anleitung).
Seit Version 1.2.0.0 der libusb-win32 soll eine Signatur vorhanden sein, die von M$ auch ohne den Testsigning Mode akzeptiert werden soll. Ich hatte aber bis jetzt noch keine Zeit mir das genauer anzuschauen.
Gruß hackspider |
|
|
34
|
LCDs und -Software / LCDs Allgemein / Re: USB LCD Ansteuerung - Fragen
|
am: Dezember 26, 2010, 20:27:00
|
Okay, weil Weihnachten ist,
du malst dir am besten dein Zeichen was du gerne hättest in ein 5x8 Karofeld. Über die 5 Spalten schreibts du dann von rechts nach links 1,2,4,8,16. Jetzt gehts du Zeile für Zeile durch und addierst die Spaltenwerte (1,2,4,8,16) bei denen du das Pixel gesetzt hast. Die Werte die da rauskommen, schreibts du jeweils rechts neben das Feld in die gleiche Zeile. Auf die linke Seite des Feldes nummerierst du die Zeilen mit 0 beginnend durch. Also 0,1,2,3,4,5,6,7. Wenn du das gemacht hast, musst du es nur noch in den CGRAM schieben, das geht wie folgt:
// Nach der Initialisierung USB_LCD_Command(64+0, 0); USB_LCD_Data(WertFürZeile1, 1, 0);
USB_LCD_Command(64+1, 0); USB_LCD_Data(WertFürZeile2, 1, 0);
USB_LCD_Command(64+2, 0); USB_LCD_Data(WertFürZeile3, 1, 0);
USB_LCD_Command(64+3, 0); USB_LCD_Data(WertFürZeile4, 1, 0);
USB_LCD_Command(64+4, 0); USB_LCD_Data(WertFürZeile5, 1, 0);
USB_LCD_Command(64+5, 0); USB_LCD_Data(WertFürZeile6, 1, 0);
USB_LCD_Command(64+6, 0); USB_LCD_Data(WertFürZeile7, 1, 0);
USB_LCD_Command(64+7, 0); USB_LCD_Data(WertFürZeile8, 1, 0);
So damit hast du ein Zeichen ins CGRAM geschireben. Du kannst allerdings bis zu 8 Zeichen speichern (mit der 5x8 font), für das zweite Zeichen fängt man dann halt bei 64+8 an für das dritte Zeichen 64+16, usw.
Um deine selbst generierten Zeichen anzuzeigen setzt du den Cursor auf die Position, an der er zu schreiben beginnen soll und verwendest die Werte 0-7 für das entsprechende Zeichen:
//Setzen des Cursor auf die erste Zeile erste Spalte Position USB_LCD_Command(128, 0);
//Schreiben des ersten Sonderzeichen USB_LCD_Data(0, 1, 0);
Gruß hackspider |
|
|
35
|
News und Off Topic / Off Topic / Re: Frohes Fest 2010
|
am: Dezember 24, 2010, 10:37:06
|
Hallo Community,
von meiner Seite natürlich auch ein frohes Fest und erholt euch alle, sodass wir im neuen Jahr dann wieder viele tolle Projekte sehen werden.
Gruß hackspider
|
|
|
39
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: November 1, 2010, 20:02:14
|
Hallo,
es ist halt so, dass die Ansteuerung des USB LCD mehr oder weniger identisch mit der klassischen Ansteuerung ist. Für die Ansteuerung auf die klassische Art (direkte Schnittstelle via LPT oder IO-Ports eines Mikrocontrollers) wurden alle Fragen schon auf die ein oder andere Weise durchgekaut, was spätestens beim dritten mal für den Erklärer furchtbar ermüdent ist (nicht so für den Fragensteller). Aus diesem Grund wurden auch unzählige HowTos, Tutorials und FAQs verfasst um Einsteigern alle aufkommenden Fragen zu beantworten. Diese ganzen Artikel sind hier auf die USB LCD Lösung ohne weiteres übertragbar. Das einzige was von Einsteiger erwartet wird ist, dass er diese Angebote nutzt.
Das Anfänger gerne auf die bestehenden Ressourcen verwiesen werden, hat in der Regel (jedenfalls in diesem Forum) nichts mit Arroganz oder Überheblichkeit zu tun. Anstatt gar nicht auf die Fragen zu antworten, möchte man dem Fragensteller zumindest in die richtige Richtung lenken, sodass man ihn nicht ganz im Regen stehen lässt. Das ich mir im Moment die Zeit nehme dir auf deine Fragen so ausführlich zu antworten versteh ich selber nicht ganz, da bei mir in den nächsten Tagen wieder Klausuren anstehen. Viele, die die hier alles genau erklären könnten, sind durch andere Projekte oder Arbeit ähnlich ausgelastet und sparen sich die Energie für andere Sachen.
Kommen trotz Studiums der verfügbaren Einsteigerartikel Fragen auf oder bei der Implemtierung entsteht eine Situation die sich der Anfänger nicht erklären kann (z.B. wie deine Problem mit dem Cursor an der zweiten Stelle) greifen wir dir hier so weit wir können unter die Arme.
Was die Dokumentation des USB-LCD angeht so ist das für den durchschnittlichen Softwareentwickler durchaus ausreichend, dass sich ein Anfänger damit allein gelassen fühlt kann ich aber auch nachvollziehen. Wenn sich jemand findet, der sich der Sache annimmt und, einen von dir angesprochenen Artikel, verfasst wäre das eine tolle Sache, jedoch glaube ich nicht, dass sich hier jemand in näherer Zukunft damit befassen wird. Die Veröffentlichung des Sourcecodes für das Testprogramm gestaltet sich schwierig, weil Ast(der Verfasser des Testprogramms) das letztemal im Juni diesen Jahres hier aktiv war.
Um deine "einfache" Frage zu beantworten: Alle Aktionen die du brauchst (damit sind die Sonderzeichen eingeschlossen) werden mit einer Kombination aus Aufrufen aus USB_LCD_Command() und USB_LCD_Data() umgesetzt. Bei diesem Thema leite ich dich nochmals hier hin weiter. Dort ist das besser erklärt als ich das jetzt auf die schnelle könnte.
Um dir bei deinem konkreten Problem zu helfen.
Bei mir steht der Cursor mit diesen Aufrufen an erster Stelle:
USB_LCD_Connect(); USB_LCD_Init(1, 1, 1, 1, 1, 1, 1, 0, 0); USB_LCD_Command(128,0);
sollte das bei dir im Programm gleich aussehen und der Cursor steht nicht an der ersten Stelle, so ist der Fehler nicht im Programm zu suchen . Wo jetzt genau der Fehler liegt ist von meiner Position aus nicht mehr auszumachen. Wenn du die Firmware und die DLL nicht veränderst hast, wüsste ich nicht mehr worin dieses Phänomen begründet ist.
Gruß hackspider |
|
|
40
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: November 1, 2010, 07:54:31
|
Hallo Datendatenbank,
ich muss hier Olaf Recht geben, das Datenblatt des HD44780 wäre die bessere Anlaufstelle als das Forum hier. Treten dann spezielle Probleme auf helfen wir gerne weiter. Um Grundlagen der CLCD-Programmierung zu vermitteln ist das Forum hier allerdings nicht da. Schon aus dem Grund, weil sich viele Andere die Mühe gemacht haben diese Informationen anfängergerecht aufzuarbeiten.
Ganz ohne Hilfe lass ich dich jetzt aber nicht stehen .
Wenn dein LCD immer an der zweiten Stelle beginnt zu schreiben kann es sein, dass du ein Command mit dem Wert 129 sendest anstatt 128. Wenn du den Commandwert in einer Variable speicherst und mit dieser "arbeitest" kann es sein, dass ein Off-By-One Fehler vorliegt. Natürlich kann das auch passieren wenn du ein Leerzeichen vor dem eigentlichen Text stehen hast. Falls auch das nicht der Fall sein sollte kannst du ja mal nachschauen ob das D0 Signal während des Command senden auf HIGH geht. Wenn ja ist es ein SW-Problem.
Hier nochmal die Anlaufstellen für deine weiteren LCD Programmierungsversuche: - HD44780 Datenblatt - LCD Einführung
Diese Links solltest du selber finden können .
Falls dir das Datenblatt nicht verständlich sein sollte, empfehle ich dir den zweiten Link wenigstens einmal komplett durchzulesen. Dort wird alles behandelt was du brauchst und ist dazu noch anfängerfreundlich beschrieben.
Gruß hackspider |
|
|
41
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: Oktober 29, 2010, 19:39:43
|
Okay, ich versuchs nochmal ,
1000 0000 = 128
damit setzt du den DDRAM Zeiger auf 0 (erste Zeile erstes Zeichen)
1000 0001 = 129
damit setzt du den DDRAM Zeiger auf 1 (erste Zeile zweites Zeichen)
bei einem 2x20 LCD hat die erste Zeile die Werte 0-19 also command von 128 - 147.
die zweite Zeile hat dann die Werte 64 - 83 also command von 192 - 211.
um den Cursor also in die zweite Zeile zu bringen musst du sowas hier machen:
USB_LCD_Command(192,0) USB_LCD_Data(pchar('Hello World'),11,0)
Grüße hackspider
PS: Wenn es einem der Moderatoren hier zu unübersichtlich wird, kann er diese Diskussion gerne in die 'LCDs Allgemein' Section verschieben. |
|
|
42
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: Oktober 27, 2010, 17:32:55
|
Hehe so funktioniert das auf LCDs nicht. LCDs haben einen internen Textbuffer, der die anzuzeigenden Daten repräsentiert. Mit dem setzten der DDRAM-Adresse kann man an bestimmte Positionen springen.
Dafür musst du ein Command absetzen der in etwa so aussieht:
0b1XXXXXXX
wobei XXXXXX die Speicheradresse ist.
Je nachdem was du für ein LCD hast musst du dir hier die Adressen raussuchen.
Gruß hackspider |
|
|
43
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: Oktober 19, 2010, 17:57:34
|
Hi,
also erstmal der Curser. Willst du von dem gar nichts sehen, musst du C_on und B_on auf 0 setzten sprich:
USB_LCD_Init(1,1,0,0,1,1,1,0,0);
C_on schaltet den Cursor gänzlich an und aus und B_on gibt an ob nur ein Unterstrich oder ein gesamtes Feld blinken soll.
Warum du dann aber:
USB_LCD_Command(1,0);
aufrufst ist mir nicht ganz klar, eigetlich setzt man mit dem Wert 128 den DDRAM Adresse auf 0 sodass man an die erste Position im LCD springt (sprich erste Zeile erste Spalte).
Nochmal: ich kenne Delphi nicht und weiß auch nicht wie da Strings gehandhabt werden. Für mich (als C/C++ Entwickler) sieht es danach aus, dass Delphi nicht ein Byte pro Char verwendet sondern mehrere (genau genommen zwei). Vielleicht kannst du ja mal folgendes Testen:
USB_LCD_Data('Hello',10);
Da müsste dann sowas rauskommen:
Hello
Das ist nur so geraten, weil ich wie gesagt kein Delphi programmiere.
Gruß hackspider |
|
|
44
|
Alles rund ums Modden / Tutorials / Re: USB-LCD Lowcost Edition
|
am: Oktober 19, 2010, 12:54:22
|
Hi,
vorweg: ich programmiere nicht mit/in Delphi, aber ich kann dir ja mal die Aufrufe und die entsprechenden Parameter geben:
USB_LCD_Connect() USB_LCD_Init(1, 1, 1, 1, 1, 1, 1, 0, 0) USB_LCD_Command(128,0,0) uint8_t data[] = "Hello World" USB_LCD_Data(data,11,0)
vielleicht hilft dir das ja weiter.
Grüße hackspider |
|
|
|
|