Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Dual LCDPCF+ Cursor ansteuerung Kategorie: C-Control I V1.1 (von Benno - 29.11.2005 19:34)
 Als Antwort auf Re: Dual LCDPCF+ Cursor ansteuerung von Naturbanause - 29.11.2005 15:35
Benno nutzt:  CC1-M-Unit V1.1
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

Bisherige Antworten: