stfan1409
14.04.2012, 16:49
Hallo,
ich habe mir eine Platine von Pollin(810145) besorgt auf der ein PCF8574 ist, den ich über I²C ansteuern möchte. Nun hab ich den standard Code von Bascom genommen um das LCD anzusteuern.
Wenn ich ein LCD mit 2*16 Zeichen nehme funktioniert der Code.
Wenn ich ein LCD mit 4*20 Zeichen nutze sehe ich nur Balken.
Gibt es da noch etwas zu beachten?
$regfile = "m644def.dat" 'AT-Mega664
$crystal = 14745600 'Quarz: 14,7456 MHz - Quarz auf Platine
$baud = 9600 'RS232 Baudrate definieren
$hwstack = 250
$swstack = 250
$framesize = 450
$lib "Lcd_i2c.lib" 'My i2c driver for the LCD
Config I2cdelay = 1
Const Pcf8574_lcd = &H40 'Defines the address of the I/O expander for LCD
Config Scl = Portc.5 'Configure i2c SCL
Config Sda = Portc.4 'Configure i2c SDA
Dim _lcd_e As Byte 'Needed to control 4 line LCD
Enable Interrupts
Config Lcd = 20 * 4 'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
_lcd_e = 64 'select E2
Cls
Lcd "64_1" 'wird auf 2*16 angezeigt
Lowerline
Lcd "64_2" 'wird auf 2*16 angezeigt
Thirdline
Lcd "64_3"
Fourthline
Lcd "64_4"
Wait 1
_lcd_e = 128 'select E1
Cls
Lcd "128_1"
Lowerline
Lcd "128_2"
Thirdline
Lcd "128_3"
Fourthline
Lcd "128_4"
_lcd_e = 192 'select both halfs for defining characters
Cls
Lcd "192_1"
Lowerline
Lcd "192_2"
Thirdline
Lcd "192_3"
Fourthline
Lcd "192_4"
'-------------------------------------------------------------------------------
_lcd_e = 64 'select E2
Cls
Locate 1 , 1
Lcd "L64_1" 'wird auf 2*16 angezeigt
Locate 2 , 1
Lcd "L64_2" 'wird auf 2*16 angezeigt
Locate 3 , 1
Lcd "L64_3"
Locate 4 , 1
Lcd "L64_4"
Wait 1
_lcd_e = 128 'select E1
Cls
Locate 1,1
Lcd "L128_1"
Locate 2 , 1
Lcd "L128_2"
Locate 3 , 1
Lcd "L128_3"
Locate 4 , 1
Lcd "L128_4"
_lcd_e = 192 'select both halfs for defining characters
Cls
Locate 1,1
Lcd "L192_1" 'wird auf 2*16 angezeigt
Locate 2 , 1
Lcd "L192_2" 'wird auf 2*16 angezeigt
Locate 3 , 1
Lcd "L192_3"
Locate 4 , 1
Lcd "L192_4"
Do
Loop
End
ich habe mir eine Platine von Pollin(810145) besorgt auf der ein PCF8574 ist, den ich über I²C ansteuern möchte. Nun hab ich den standard Code von Bascom genommen um das LCD anzusteuern.
Wenn ich ein LCD mit 2*16 Zeichen nehme funktioniert der Code.
Wenn ich ein LCD mit 4*20 Zeichen nutze sehe ich nur Balken.
Gibt es da noch etwas zu beachten?
$regfile = "m644def.dat" 'AT-Mega664
$crystal = 14745600 'Quarz: 14,7456 MHz - Quarz auf Platine
$baud = 9600 'RS232 Baudrate definieren
$hwstack = 250
$swstack = 250
$framesize = 450
$lib "Lcd_i2c.lib" 'My i2c driver for the LCD
Config I2cdelay = 1
Const Pcf8574_lcd = &H40 'Defines the address of the I/O expander for LCD
Config Scl = Portc.5 'Configure i2c SCL
Config Sda = Portc.4 'Configure i2c SDA
Dim _lcd_e As Byte 'Needed to control 4 line LCD
Enable Interrupts
Config Lcd = 20 * 4 'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
_lcd_e = 64 'select E2
Cls
Lcd "64_1" 'wird auf 2*16 angezeigt
Lowerline
Lcd "64_2" 'wird auf 2*16 angezeigt
Thirdline
Lcd "64_3"
Fourthline
Lcd "64_4"
Wait 1
_lcd_e = 128 'select E1
Cls
Lcd "128_1"
Lowerline
Lcd "128_2"
Thirdline
Lcd "128_3"
Fourthline
Lcd "128_4"
_lcd_e = 192 'select both halfs for defining characters
Cls
Lcd "192_1"
Lowerline
Lcd "192_2"
Thirdline
Lcd "192_3"
Fourthline
Lcd "192_4"
'-------------------------------------------------------------------------------
_lcd_e = 64 'select E2
Cls
Locate 1 , 1
Lcd "L64_1" 'wird auf 2*16 angezeigt
Locate 2 , 1
Lcd "L64_2" 'wird auf 2*16 angezeigt
Locate 3 , 1
Lcd "L64_3"
Locate 4 , 1
Lcd "L64_4"
Wait 1
_lcd_e = 128 'select E1
Cls
Locate 1,1
Lcd "L128_1"
Locate 2 , 1
Lcd "L128_2"
Locate 3 , 1
Lcd "L128_3"
Locate 4 , 1
Lcd "L128_4"
_lcd_e = 192 'select both halfs for defining characters
Cls
Locate 1,1
Lcd "L192_1" 'wird auf 2*16 angezeigt
Locate 2 , 1
Lcd "L192_2" 'wird auf 2*16 angezeigt
Locate 3 , 1
Lcd "L192_3"
Locate 4 , 1
Lcd "L192_4"
Do
Loop
End