
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo, Ich kann das folgende Programmbeispiel nicht testen, da ich kein LCD 4x40 besitze. Es sollte aber funktionieren. Die automatische Umschaltung des Beleuchtungsbits geschieht durch zusätzliche in die LCD-Routinen von CCTools eingefügte Programmzeilen. Die Positionierung des Cursors geschieht beispielsweise durch: "cmd = Line2 + 15 : gosub LCD_Line" --> Zeile 2, Position 15 (mögliche Werte für Position sind 0 ... 39) Sollten die Zeilen 1+2 mit den Zeilen 3+4 vertauscht sein, so muss die Zeile "if cmd and &h80 then LCDLight = on else LCDLight = off" in der Subroutine "#LCD_Line" durch die Zeile "if cmd and &h80 then LCDLight = off else LCDLight = on" ersetzt werden. Ob eine Abfrage der aktuellen Cursorposition möglich ist, weiß ich nicht. Gruß Mario Programmbeispiel: '-------------------------------------------------------------- 'Einsprungadressen von "int_i2c.s19" Release 19.09.04 '-------------------------------------------------------------- ' PCF8574: define PCFwrite &h101 define PCFread &h107 '-------------------------------------------------------------- ' Bausteine mit Byte-Adress-Register define WrByteBReg &h123 define WrWordBReg &h12F define RdByteBReg &h15C define RdWordBReg &h162 '-------------------------------------------------------------- ' Bausteine mit Word-Adress-Register define WrByteWReg &h139 define WrWordWReg &h141 define RdByteWReg &h16D define RdWordWReg &h175 '-------------------------------------------------------------- ' PCFLCD: define putCmd8Bit &h1a9 define putCmd &h17D define putChar &h1a3 define prnLCD &h1C2 '-------------------------------------------------------------- define PCF 64 define cmd byte[1] define LCDLight bit[192] define Line1 &h00 : define Line2 &h40 : define Line3 &h80 : define Line4 &hc0 gosub LCD_INIT pause 10 cmd = Line1 : gosub LCD_Line sys prnLCD,LCDLight,0,PCF : print "Line 1" cmd = Line2 : gosub LCD_Line sys prnLCD,LCDLight,0,PCF : print "Line 2" cmd = Line3 : gosub LCD_Line sys prnLCD,LCDLight,0,PCF : print "Line 3" cmd = Line4 : gosub LCD_Line sys prnLCD,LCDLight,0,PCF : print "Line 4" end ' ********** Routinen für I2C-LCD ********** #LCD_CLS LCDLight = off ' gosub LCD_CLS_sub ' eingefügt, um beide LCDLight = on ' Displayhälften #LCD_CLS_sub ' zu löschen sys putCmd,LCDLight,&b00000001,PCF return #LCD_Line ' Auswahl der Displaycontroler if cmd and &h80 then LCDLight = on else LCDLight = off ' Controler 1 für Zeile 1+2 und cmd = cmd or &h80 ' Controler 2 für Zeile 3+4 #LCD_CMD sys putCmd,LCDLight,cmd,PCF return #LCD_Char sys putChar,LCDLight,cmd,PCF return #LCD_Init LCDLight = off ' gosub LCD_Init_sub ' eingefügt, um beide LCDLight = on ' Displaycontroler #LCD_Init_sub ' zu initialisieren sys putCmd8Bit,LCDLight,&b00110000,PCF sys putCmd8Bit,LCDLight,&b00110000,PCF sys putCmd8Bit,LCDLight,&b00110000,PCF sys putCmd8Bit,LCDLight,&b00100000,PCF sys putCmd,LCDLight,&b00101000,PCF sys putCmd,LCDLight,&b00001100,PCF sys putCmd,LCDLight,&b00000001,PCF sys putCmd,LCDLight,&b00000110,PCF return ' syscode "int_i2c.s19" 'nur einmal laden, dann auskommentieren > Hallo Alle, > > Mein 4x40 LCD steuere ich an mit multitreiber von CCtools, http://cctools.hs-control.de/download/cc1/i2c_multitreiber.zip Alles arbeitet. > Den umschaltung, es ist ein dual HDD44780 LCD, geschied wie von http://www.henrik-reimers.de/control/mmsr.htm#lcd beschrieben. Ich benutze als steuer puls die beleuchtungs puls > Wenn ich den puls umschaltet kann ich in Linien 1 und 2 oder in Linien 3 und 4 Texte wiedergeben. > Ich versuche jetzt die umschaltung im programm einzubinden aber das kriege ich nicht hin. > Und ist es moeglich den aktuelle cursor position von Display abzufragen ? Und wie dann ? > Vielleicht kann einer von euch mir Rat geben? > > Benno > |
| Antwort schreiben |