Willkommen Gast. Bitte einloggen oder registrieren.
November 26, 2024, 04:57:21
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  LCDs und -Software
| |-+  LCDs Allgemein (Moderator: xonom)
| | |-+  USB LCD Ansteuerung - Fragen
  « vorheriges nächstes »
0 Mitglieder und 1 Gast betrachten dieses Thema.
Seiten: [1] nach unten Drucken
Autor Thema: USB LCD Ansteuerung - Fragen  (Gelesen 20138 mal)
Datendatenbank
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Beiträge: 27


Braucht Daten ...


Profil anzeigen
USB LCD Ansteuerung - Fragen
« am: November 5, 2010, 18:24:44 »

Hallo LCD-Bastler,

ich denke, dass es besser ist, wenn ich einen neuen Thread eröffne. Es geht um ein merkwürdiges Problem. Ich steuere ein 20x2 Zeichen LCD über den USB Adapter von Ast an. Als Programmiersprache nutz ich Delphi mit der mitgelieferten DLL aus dem Tutorial. Die DLL und das hex File für den Attiny wurde nicht verändert.
Ich steuere mit diesem Code das Display an:
Code:
USB_LCD_Connect();
USB_LCD_Init(1, 1, 1, 1, 1, 1, 1, 0, 0);
USB_LCD_Command(128,0);     
data := Edit1.Text;
USB_LCD_Data(PChar(data),length(data),0);
Mein Problem ist, dass das Programm den Text erst an der zweiten Stelle ausgibt, d.h. die erste bleibt frei und der Text ist verschoben.
Vielleicht kann mir ja jmd. helfen.
PS: Ich nutze Delphi 2009 Professional.
« Letzte Änderung: Dezember 26, 2010, 18:54:28 von Datendatenbank » Gespeichert

Chuck Norris kann in jedem Byte 257 verschiedene Werte speichern.
Datendatenbank
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Beiträge: 27


Braucht Daten ...


Profil anzeigen
Re: USB LCD Ansteuerung - merkwürdiges Problem
« Antwort #1 am: Dezember 6, 2010, 17:35:11 »

So ich hab es immer noch nicht aufgegeben.

Hab das ganze jetzt nochmal unter Delphi 7 Enterprise probiert.
Das gleiche Ergebnis. Der Cursor steht am zweiten Zeichen.

Das interessante dabei ist jedoch, dass wenn ich STLCD nutze, dann startet alles an der ersten Stelle bastel ich jedoch an dem Programm wo es am zweiten Zeichen starten und ich führe dies aus, dann startet alles an der zweiten Stelle. Wenn ich jetzt nach diesem Programm STLCD ausführe, dann zeigt STLCD auch alles erst am zweiten Zeichen an.

Vielleicht kann ja Olav mal was dazu sagen, weil STLCD ist ja auch in Delphi programmiert. Vielleicht hab ich auch irgendwo ein Fehler.
Gespeichert

Chuck Norris kann in jedem Byte 257 verschiedene Werte speichern.
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: USB LCD Ansteuerung - merkwürdiges Problem
« Antwort #2 am: Dezember 7, 2010, 19:25:45 »

[LOGIKMODUS AN]
LCD reset, STLCD startet, alles ist perfekt.
LCD reset, dein Prog startet, nicht perfekt.

Was kann das wohl sein ?
[LOGIKMODUS AUS]

Ist doch klar, das der Fehler bei dir liegen muß, bei diesem Verhalten. Ich tippe auf einen +1-Offset-Fehler. In Delphi beginnen alle Indizes mit 1 (Arrays, Strings etc). In allen anderen Sprachen aber mit 0.
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Datendatenbank
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Beiträge: 27


Braucht Daten ...


Profil anzeigen
Re: USB LCD Ansteuerung - merkwürdiges Problem
« Antwort #3 am: Dezember 8, 2010, 16:47:02 »

Also an der Textausgabe liegt es definitiv nicht. Bei den Werten bei USB_LCD_COMMAND hab ich auch schon rumgespielt. Ohne Erfolg.

Dieser Fehler tritt ja genau, nach dem initialisieren auf. Der Fehler muss wohl in diesem Code sein:
Code:
USB_LCD_Connect();
USB_LCD_Init(1, 1, 1, 1, 1, 1, 1, 0, 0);
Gespeichert

Chuck Norris kann in jedem Byte 257 verschiedene Werte speichern.
Datendatenbank
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Beiträge: 27


Braucht Daten ...


Profil anzeigen
Re: USB LCD Ansteuerung - Fragen
« Antwort #4 am: Dezember 26, 2010, 18:54:05 »

Es klappt! Ich hab den Fehler gefunden.
So geht es bei mir (es wird am Anfang halt nicht der Cursor angezeigt, erst nach Textausgabe (ist aber nicht weiter schlimm)):
Code:
USB_LCD_Connect();
USB_LCD_Init(1, 1, 1, 1, 0, 0, 1, 0, 0);

So, vielleicht kann mir jemand verraten, wie ich nach dieser Tabelle (http://www.sprut.de/electronic/lcd/index.htm#cgram) meine Sonderzeichen (also das USB_LCD_Command) berechne.

@OlafSt: Vielleicht kannst du mir mal erklären, wie du das VU-Meter in deinem Programm gemacht hast, also die Anzeige.
Gespeichert

Chuck Norris kann in jedem Byte 257 verschiedene Werte speichern.
hackspider
Wakü-Poseidon

*

Karma: +4/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 412



Profil anzeigen
Re: USB LCD Ansteuerung - Fragen
« Antwort #5 am: Dezember 26, 2010, 21: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:

Code:
// 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:

Code:
//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
Gespeichert

Datendatenbank
LED-Tauscher

*

Karma: +0/-0
Offline Offline
Beiträge: 27


Braucht Daten ...


Profil anzeigen
Re: USB LCD Ansteuerung - Fragen
« Antwort #6 am: Dezember 26, 2010, 21:30:50 »

Ahh, jetzt hab ich das kapiert. Danke.
Gespeichert

Chuck Norris kann in jedem Byte 257 verschiedene Werte speichern.
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: USB LCD Ansteuerung - Fragen
« Antwort #7 am: Dezember 27, 2010, 14:25:38 »

Wie ich schon zuvor erwähnte: Datenblatt studieren und verstehen. Da stehts nämlich ganz genauso drin Wink
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Seiten: [1] nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.017 Sekunden mit 19 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!