Hi, ich würde gerne auf einer LCD-Anzeige direkt auf andere Stellen schreiben. Bisher habe ich es so gemacht, das ich einige Leerzeichen dazwischen geschoben habe um von der ersten Zeile in die Dritte zu kommen. Gerne würde ich auch mitten in der Zeile schreiben ohne jedesmal Leerzeichen zu setzen. Es zieht so das Programm ziemlich in die Länge Mir ist es auch nicht gelungen direkt in Zeile 3 anzufangen. Ich muss immer Zeile 1 solange fortlaufen lassen bis ich in der Dritten bin. Die Initialisierung habe ich nicht selber geschrieben. Sie ist aus dem Buch(da von der CD) Elektrotechnik PIC16-Mikrocontroller.(auch nur für 2x20 gedacht) Die ASM Datei hänge ich mit an. Vllt erkennen auch einige mein Problem, beim ausgeben der Buchstaben an die LCD-Anzeige. Auf dem Display hätte ich gerne das ein Symbol sich im Kreis bewegt.(nur eine Spielerei ^^) Das Programm wäre nach der Methode, von mir dann ziemlich groß.
Moin normalerweise kannst du einstellen wo der text beginnt (Curserposition) du musst es nicht immer komplett beschreiben (steht im Datenblatt) Zu dem Text senden mach das per Lockuptabelle dürfte für festen Text das einfachste/übersichtlichste sein
Hi >Mir ist es auch nicht gelungen direkt in Zeile 3 anzufangen. >Ich muss immer Zeile 1 solange fortlaufen lassen bis ich in der Dritten >bin. Der Befehl 'Set DDRAM address' setzt die Schreibposition auf eine beliebige Stelle des Displays. Das nutzt du schon in _line_1 und _line_2. Du musst nur an die Stelle movlw b'10000000' ; 1. Zeile ^^^^^^^^ die Adressen 0x14 (3.Zeile) oder 0x54 (4.Zeile) einsetzen. MfG Spess
> Zu dem Text senden mach das per Lockuptabelle dürfte für festen Text das > einfachste/übersichtlichste sein Davon habe ich noch nichts gehört. Werde mich mal genauer darüber informieren. > Der Befehl 'Set DDRAM address' setzt die Schreibposition auf eine > beliebige Stelle des Displays. Das nutzt du schon in _line_1 und > _line_2. Du musst nur > an die Stelle > > movlw b'10000000' ; 1. Zeile > ^^^^^^^^ > > die Adressen 0x14 (3.Zeile) oder 0x54 (4.Zeile) einsetzen. Das mit den Adressen habe ich noch nicht verstanden. Habe ein bischen herumgespielt und herausgefunden das es für Zeile 3. b'10010100' und für Zeile 4. b'11010100' ist. Funktioniert wunderbar. Die Beiden rechten Bits setzen die Schrift 1-3 Kästchen weiter. Allerdings habe ich noch nicht herausgefunden wie ich es 5 Kästchen weiter setzen kann.
chris H. schrieb: > Funktioniert wunderbar. Die Beiden rechten Bits setzen die Schrift 1-3 > Kästchen weiter. > Allerdings habe ich noch nicht herausgefunden wie ich es 5 Kästchen > weiter setzen kann. Nicht die beiden "rechten Bits". Normalerweise zählt man das einfach zusammen. (UNd an dieser STelle ist Binärschreibweise nicht das gelbe vom Ei, siehs ganz einfach als Zahlen an. Denn was anderes ist das nicht) Deine 3. Zeile beginnt bei 0x94. D.h. die nächsten Zeichenpositionen sind 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, etc. etc. Einfach zur Zahl für den Anfang der Zeile (für die 3.te Zeile dann eben 0x94) die Spaltennummer ( 0 bis n ) addieren.
Hi
>Allerdings habe ich noch nicht herausgefunden wie ich es 5 Kästchen
weiter setzen kann.
Indem du zur Anfangsadresse einer Zeile 5 addierst
Also für die 4. Zeile: 0x54+$05 = 0x59 (b'01011001'). Dann den Befehl
b'10000000' dazu. Ergibt b'11011001'.
MfG Spess
chris H. schrieb: >> Zu dem Text senden mach das per Lockuptabelle dürfte für festen Text das >> einfachste/übersichtlichste sein > > Davon habe ich noch nichts gehört. Werde mich mal genauer darüber > informieren. > http://www.pictutorials.com/Lookup_Table_Example.htm mfg
Hallo chris, Schau doch mal auf die Seite von Sprut [http://www.sprut.de/index.htm], dort findest du gute Erklärungen zu den LCDs bezogen auf PICs: [http://www.sprut.de/electronic/lcd/index.htm] Sprut zeigt dort auch eine leicht verständliche und gut funktionierende Initialisierung für LCDs mit dem HD44780-chip: [http://www.sprut.de/electronic/pic/programm/lcd.zip] ; Ein 4x20 LCD hat diese Zeilenadressen Zeile 1: 00h-13h Zeile 2: 40h-53h Zeile 3: 14h-27h Zeile 4: 54h-67h nehmen wir an Du willst in Zeile 3, Digit 4 (fängt bei Digit 0 an!) schreiben: Adresse ist dann 14h+4h = 18h ;Methode sinngemäß zu der LCD_INIT von sprut movlw 0x18 ;copy DDRAM-adresse ins WREG iorlw b'10000000' ;OR DDRAM-adress mit HD-Befehl "set DDRAM adress" movwf Lcd_Control ;HD44780-Befehl für Adresse 0x18 in Übergabeparam. ;jetzt noch das zu übertragende Zeichen: movlw "1" ;Zahl 1 im ASCII-code ins WREG movwf Lcd_Data ;und in Übergabeparameter kopieren ; HD44780-Befehl und Zeichen ans LCD übertrgen CALL Send_4Bit_Control;Adresse ans LCD senden CALL Send_4Bit_Data ;Zeichen ans LCD senden damit ist das Zeichen "1" in Zeile 3, Digit 5 übertragen. mfG Ottmar
Jetzt habe ich das soweit auch verstanden ^^ jetzt ergibt es für mich auch alles ein Sinn. Vielen Dank für die Schnellen und Informativen antworten. Die haben mir sehr geholfen ^^ MfG Chris
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.