MarkusM1S
07.06.2009, 20:00
Hi,
ich bin Schüler und habe mir das I²C-BUS LC-DISPLAY C-CONTROL I bei Conrad bestellt (http://www.conrad.de/goto.php?artikel=198330) und versucht es mit meinem atmega32 und einem Quarz von 16MHz zum Laufen zu bringen. Scl(Portc.0) und Sda(Portc.1) sind genauso wie V+ und Gnd angeschlossen.
Zum Programmieren habe ich mir die Lcd_i2c.lib heruntergeladen (http://www.mcselec.com/index.php?option=com_content&task=view&id=82&Itemid=57) und das beiligende Demoprogramm so umgeschrieben:
$regfile = "m32def.dat"
$crystal = 16000000
$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.0 'Configure i2c SCL
Config Sda = Portc.1 'Configure i2c SDA
Dim _lcd_e As Byte 'Needed to control 4 line LCD
'_lcd_e = 128 select E1, 64 select E2, 192 select both (for CLS or DefLCDChar etc.)
_lcd_e = 128 'Upper half of 4-line display is selected
'Here the LCD test program that is included in BASCOM follows
'and at the end there is a demo of the keyboard scan routine
Dim A As Byte
Config Lcd = 16 * 2 '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 = address will turn LCD into 8-bit databus mode
' use this with uP with external RAM and/or ROM
' because it aint need the port pins !
' Put your own strings here
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Wait 1
Lowerline 'select the lower line
Wait 1
Lcd "Shift this." 'display this at the lower line
Wait 1
For A = 1 To 10
Shiftlcd Right 'shift the text to the right
Waitms 250 'wait a moment
Next
For A = 1 To 10
Shiftlcd Left 'shift the text to the left
Waitms 250 'wait a moment
Next
Locate 2 , 1 'set cursor position
Lcd "*" 'display this
Wait 1 'wait a moment
Shiftcursor Right 'shift the cursor
Lcd "@" 'display this
Wait 1 'wait a moment
Home Upper 'select line 1 and return home
Lcd "Replaced." 'replace the text
Wait 1 'wait a moment
Cursor Off Noblink 'hide cursor
Wait 1 'wait a moment
Cursor On Blink 'show cursor
Wait 1 'wait a moment
Display Off 'turn display off
Wait 1 'wait a moment
Display On 'turn display on
End
Außer der Beleuchtung funktioniert nichts. Kein Cursur etc. ...
Auch mit einem an ein Display mit 16 * 2 angepassten Code, den ich aus dem Buch "Roboter selbst bauen" (http://books.google.de/books?id=tjUAeHXa33IC&pg=PT1&dq=roboter+selbst+bauen#PPA59,M1) entnommen habe, tut sich nichts.
Vielleicht hatte jemand das selbe Problem und hat es gelöst ?
Ich würde mich über Lösungen, Raschläge oder Fragen über Unklarheiten freuen ...
Gruß,
Markus
ich bin Schüler und habe mir das I²C-BUS LC-DISPLAY C-CONTROL I bei Conrad bestellt (http://www.conrad.de/goto.php?artikel=198330) und versucht es mit meinem atmega32 und einem Quarz von 16MHz zum Laufen zu bringen. Scl(Portc.0) und Sda(Portc.1) sind genauso wie V+ und Gnd angeschlossen.
Zum Programmieren habe ich mir die Lcd_i2c.lib heruntergeladen (http://www.mcselec.com/index.php?option=com_content&task=view&id=82&Itemid=57) und das beiligende Demoprogramm so umgeschrieben:
$regfile = "m32def.dat"
$crystal = 16000000
$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.0 'Configure i2c SCL
Config Sda = Portc.1 'Configure i2c SDA
Dim _lcd_e As Byte 'Needed to control 4 line LCD
'_lcd_e = 128 select E1, 64 select E2, 192 select both (for CLS or DefLCDChar etc.)
_lcd_e = 128 'Upper half of 4-line display is selected
'Here the LCD test program that is included in BASCOM follows
'and at the end there is a demo of the keyboard scan routine
Dim A As Byte
Config Lcd = 16 * 2 '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 = address will turn LCD into 8-bit databus mode
' use this with uP with external RAM and/or ROM
' because it aint need the port pins !
' Put your own strings here
Cls 'clear the LCD display
Lcd "Hello world." 'display this at the top line
Wait 1
Lowerline 'select the lower line
Wait 1
Lcd "Shift this." 'display this at the lower line
Wait 1
For A = 1 To 10
Shiftlcd Right 'shift the text to the right
Waitms 250 'wait a moment
Next
For A = 1 To 10
Shiftlcd Left 'shift the text to the left
Waitms 250 'wait a moment
Next
Locate 2 , 1 'set cursor position
Lcd "*" 'display this
Wait 1 'wait a moment
Shiftcursor Right 'shift the cursor
Lcd "@" 'display this
Wait 1 'wait a moment
Home Upper 'select line 1 and return home
Lcd "Replaced." 'replace the text
Wait 1 'wait a moment
Cursor Off Noblink 'hide cursor
Wait 1 'wait a moment
Cursor On Blink 'show cursor
Wait 1 'wait a moment
Display Off 'turn display off
Wait 1 'wait a moment
Display On 'turn display on
End
Außer der Beleuchtung funktioniert nichts. Kein Cursur etc. ...
Auch mit einem an ein Display mit 16 * 2 angepassten Code, den ich aus dem Buch "Roboter selbst bauen" (http://books.google.de/books?id=tjUAeHXa33IC&pg=PT1&dq=roboter+selbst+bauen#PPA59,M1) entnommen habe, tut sich nichts.
Vielleicht hatte jemand das selbe Problem und hat es gelöst ?
Ich würde mich über Lösungen, Raschläge oder Fragen über Unklarheiten freuen ...
Gruß,
Markus