Seiten: [1]
|
|
|
Autor
|
Thema: USB LCD Ansteuerung - Fragen (Gelesen 20138 mal)
|
Datendatenbank
LED-Tauscher
Karma: +0/-0
Offline
Beiträge: 27
Braucht Daten ...
|
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:
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
Beiträge: 27
Braucht Daten ...
|
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)):
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
Geschlecht:
Beiträge: 412
|
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
|
|
|
Gespeichert
|
|
|
|
|
|
Seiten: [1]
|
|
|
|
|