Hallo,
nochmal danke für die Hilfe!!
wenn sich noch was ändert, werde ich es unter http://www.gerold-online.de/cms/index.php?id=146 veröffentlichen. Ebenso werde ich dort noch einen Schaltplan reinstellen.
Hallo Robert,
es läuft!!!!
Folgender Code ruft auf:Code:copyright = Guenter Gerold www = www.gerold-online.de/cms email = tv@gerold-online.de comment = I2C LCD Treiber libversion = 1.00 date = 07.07.2008 statement = Wer was zu verbessern hat kann sich bei mir melden... statement = history = Final. [_Init_LCD] _Init_LCD: *BASIC: waitms 20 *BASIC: i2cstart *BASIC: i2cwbyte gg_Displayport *BASIC: i2cwbyte &H06 *BASIC: i2cwbyte &H00 *BASIC: i2cwbyte &HE8 *BASIC: i2cstop Ldi _temp2, &H3c rCall _gg_i2c_config Ldi _temp2, &H0f rCall _gg_i2c_config _gg_i2c_config: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 *BASIC: I2cwbyte _temp2 *BASIC: I2cwbyte &H01 *BASIC: I2cstop *BASIC: Waitms 2 *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H00 *BASIC: I2cstop ret [end] [_CLS] _CLS: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 *BASIC: I2cwbyte &H01 *BASIC: I2cwbyte &H01 *BASIC: I2cstop *BASIC: Waitms 2 *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H00 *BASIC: I2cstop [end] [_Write_lcd] _Write_lcd: Ldi _temp2, &H05 rjmp _Write_lcd_Byte _Lcd_control: Ldi _temp2, &H01 _Write_lcd_Byte: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 *BASIC: I2cwbyte _temp1 *BASIC: I2cwbyte _temp2 *BASIC: I2cstop rcall LCD_Write_Enable ret LCD_Write_Enable: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H04 *BASIC: I2cstop ret [end]
Code:'############################################################################### '# # '# I2C-Display mit PCA 9555D # '# # '# (c) Günter Gerold # '# # '# Zum Pin sparen kann ein LCD-Display auch an einen I2C-Bus gehängt werden # '# Die eingebauten Bascom-Befehle können genutzt werden # '# # '############################################################################### $regfile = "m8def.dat" $crystal = 8000000 $lib "gg.lib" Dim A As Byte Config Scl = Portc.5 'Configure I2C SCL Config Sda = Portc.4 Const Gg_displayport = &H40 'Addresse des ICs Config Lcdbus = 8 Config Lcd = 16 * 1a Do Cls Lcd "123" Cursor Off Waitms 2000 Cursor On Waitms 1000 Cursor Blink Waitms 1000 Lowerline Lcd "456" Waitms 1000 Display Off Waitms 1000 Display On Cls Lcd "Shift" Waitms 1000 For A = 1 To 8 Shiftlcd Right Waitms 500 Next For A = 1 To 8 Shiftlcd Left Waitms 200 Next Waitms 1000 Loop
Hallo,
nochmal danke für die Hilfe!!
wenn sich noch was ändert, werde ich es unter http://www.gerold-online.de/cms/index.php?id=146 veröffentlichen. Ebenso werde ich dort noch einen Schaltplan reinstellen.
Hallo,
doch noch ein Hund drin:
LCD "123"
-funktioniert
dim a as string * 8
a = "123"
LCD a
-funktioniert nicht
Das dürfte der Unterschied sein, ob eine Variable im SRAM ist oder im Programmspeicher.
Kannst du deine letzte Version von allem + beide LCD Varianten hier reinstellen ? dann hacke ich mir kurz den Code auf, was die Schweinebacke da treibt.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo Robert,
so gehts:
so gehts nicht:Code:$regfile = "m8def.dat" $crystal = 8000000 $lib "gg.lib" Config Scl = Portc.5 'Configure I2C SCL Config Sda = Portc.4 Const Gg_displayport = &H40 'Addresse des ICs Config Lcdbus = 8 Config Lcd = 16 * 1a Cls Lcd "123" do loop
die Lib ist so wie schon gepostet.Code:$regfile = "m8def.dat" $crystal = 8000000 $lib "gg.lib" Config Scl = Portc.5 'Configure I2C SCL Config Sda = Portc.4 Const Gg_displayport = &H40 'Addresse des ICs Config Lcdbus = 8 Config Lcd = 16 * 1a dim a as string a = "123" Cls Lcd a do loop
Nach Studie von anderen Libs, bin ich jetzt einfach davon ausgegangen, das das aktuelle Zeichen für das Display in der Variable _temp1 steht, was anscheinend aus einem Register geholt wird. Ob das richtig ist weiss ich nicht. Wie ist an das aktuelle Byte der internen Routinen ranzukommen? Da wird das Problem liegen.
Alle anderen Befehle wie Upperline, Shift, Curser On Off Blink Noblink, CLS usw. laufen einwandfrei.
Versuch mal. Der Bascom hat bei SRAM-LCD die Register vernudelt.
Das erste Zeichen hätte er aber eigentlich noch zeigen müssen, dann aber Schrott
Code:copyright = Guenter Gerold www = www.gerold-online.de/cms email = tv@gerold-online.de comment = I2C LCD Treiber libversion = 1.00 date = 07.07.2008 statement = Wer was zu verbessern hat kann sich bei mir melden... statement = history = Final. [_Init_LCD] _Init_LCD: *BASIC: waitms 20 *BASIC: i2cstart *BASIC: i2cwbyte gg_Displayport *BASIC: i2cwbyte &H06 *BASIC: i2cwbyte &H00 *BASIC: i2cwbyte &HE8 *BASIC: i2cstop Ldi _temp2, &H3c rCall _gg_i2c_config Ldi _temp2, &H0f rCall _gg_i2c_config _gg_i2c_config: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 *BASIC: I2cwbyte _temp2 *BASIC: I2cwbyte &H01 *BASIC: I2cstop *BASIC: Waitms 2 *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H00 *BASIC: I2cstop ret [end] [_CLS] _CLS: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 *BASIC: I2cwbyte &H01 *BASIC: I2cwbyte &H01 *BASIC: I2cstop *BASIC: Waitms 2 *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H00 *BASIC: I2cstop ret [end] [_Write_lcd] _Write_lcd: Ldi _temp2, &H05 rjmp _Write_lcd_Byte _Lcd_control: Ldi _temp2, &H01 _Write_lcd_Byte: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H02 MOV r17, _temp1 RCALL _i2c_write MOV r17, _temp2 RCALL _i2c_write *BASIC: I2cstop rcall LCD_Write_Enable ret LCD_Write_Enable: *BASIC: I2cstart *BASIC: I2cwbyte gg_Displayport *BASIC: I2cwbyte &H03 *BASIC: I2cwbyte &H04 *BASIC: I2cstop ret [end]
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Robert was soll ich sagen,
es läuft!
Nun ja, ich könnte den Code noch ein bisschen "hübsch" machen...
Nochmals danke für deine Unterstützung.
Damit alle was davon haben werde ich es auf meiner Internetseite ein bisschen aufarbeiten.
Günter
Na fein !
Hab' mir grad deine HP angesehen, auch die Lib
Vielleicht sollte man wirklich ein wenig assemblermässigen professionellen kryptischen Schamanismus reinpacken. Sonst sieht das so brav aus
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen