INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Mario, Es ist Super. Die software geht ohne problemen. Jetzt kann ich mir konzentrieren auf naechsten Kapittel von mein "Homebus". Danke ! Benno > 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 |