3. und 4. Zeile konnte ich nicht testen, so ein LCD habe ich nicht. Ich weiß auch garnicht, wo du den E2 schaltest am PCF.
Wenn ich beim Pollinboard die 2x7 Reihe
benutze, habe ich einen fetten Kurzschluß in der Stromversorgung...
Einzig die Beleuchtung macht was sie will. Beim Schreiben der 2. Zeile geht sie aus und bei CLS geht sie mit an.
Lcd_init 'LCD initialisieren
Waitms 50
Lcd_cls 'Clear Screen
Waitms 200
' ################################################
' # #
' #---------------Arbeitsschleife----------------#
' # #
' ################################################
Do 'Hauptschleife-Beginn
Hbl = Ein 'Beleuchtung ein
Lcd_ 1 , 1 , "CassioAVR-Praxis"
Waitms 100
Text = "Port.D= " + Bin(pind)
Lcd_ 2 , 1 , Text
Waitms 100
Lcd_ 3 , 1 , "1234567890123456"
Lcd_ 4 , 9 , "12345678"
Waitms 100
Hbl = Aus 'Beleuchtung aus
Waitms 100
Lcd_init
Waitms 50
Lcd_cls 'Clear Screen
Waitms 200
Loop 'Hauptschleife-Ende
' Polin I2C Platine für LCDs
'
$regfile = "m88def.dat"
$crystal = 14745600 'ext. Quarz '8000000 =intern
$hwstack = 128
$swstack = 128
$framesize = 128
' +---v---+
' (RESET) PC6 |1 28| PC5 (ADC5/SCL)
' (RXD) PD0 |2 27| PC4 (ADC4/SDA)
' (TXD) PD1 |3 26| PC3 (ADC3)
' (INT0) PD2 |4 25| PC2 (ADC2)
' (INT1) PD3 |5 24| PC1 (ADC1)
' (XCK/T0) PD4 |6 23| PC0 (ADC0)
' VCC |7 22| GND
' GND |8 21| AREF
' (XTAL1/TOSC1) PB6 |9 20| AVCC
' (XTAL2/TOSC2) PB7 |10 19| PB5 (SCK)
' (T1) PD5 |11 18| PB4 (MISO)
' (AIN0) PD6 |12 17| PB3 (MOSI/OC2)
' (AIN1) PD7 |13 16| PB2 (SS/OC1 B)
' (ICP1) PB0 |14 15| PB1 (OC1A)
' +-------+
Ddrd = &B_0000_0000 '1 ist Ausgang 0 ist Eingang
Portd = &B1111_1111 'auf Hi oder Low setzen
Ddrc = &B_11_0000 '1 ist Ausgang 0 ist Eingang
Portc = &B00_1111 'auf Hi oder Low setzen
Ddrb = &B_0000_0000 '1 ist Ausgang 0 ist Eingang
Portb = &B1111_1111 'auf Hi oder Low setzen
'Angaben zum Display einstellen=================================================
$include "_pollin_I2C_declare.bas"
'LCD-Funktionen sind:
'Lcd_ = zum Ausgeben von Zeichen/Text (nur String)
'Lcd_cls = Clear Screen
'Lcd_init = LCD initialisieren
'Hbl (Ein/Aus) = HintergrundBeLeuchtung Ein/Aus schalten
Lcd_zeilen = 2 '4 'Anzahl der LCD-Zeilen eintragen!
Lcd_spalten = 16 'Anzahl der LCD-Charakter angeben
Const Pcx_pollin = &H40 'I2C-Adresse des PCx8574(A)
' PCF8574A
' +--v--+
' A0 -o|1 16|o- Vdd
' A1 -o|2 15|o- SDA
' A2 -o|3 14|o- SCL
' D4------o|4 13|o- n.c. (INT)
' D5------o|5 12|o------HBL (HintergrundBeLeuchtung)
' D6------o|6 11|o------E1
' D7------o|7 10|o------RW
' GND -o|8___9|o------RS
' I2C-Hardware-Config===========================================================
$lib "i2c_twi.lbx"
Config Twi = 250000 'BUS-Takt,
Config Scl = Portc.5 'I2C SCL
Config Sda = Portc.4 'I2C SDA
'Config I2cdelay = 1
I2cinit
' Inits=========================================================================
Lcd_init 'LCD initialisieren
Lcd_cls 'Clear Screen
' PROGRAMMSCHLEIFE##############################################################
Do 'Hauptschleife-Beginn
Hbl = Aus 'Beleuchtung ein
Lcd_ 1 , 1 , "CassioAVR-Praxis"
Waitms 500
Text = "Port.D= " + Bin(pind)
Lcd_ 2 , 1 , Text
Waitms 500
'Lcd_ 3 , 1 , "1234567890123456"
'Lcd_ 4 , 9 , "12345678"
'Waitms 500
Hbl = Ein 'Beleuchtung aus
Lcd_cls 'Clear Screen
Waitms 500
Loop 'Hauptschleife-Ende
End 'end program
'SUB's##########################################################################
$include "_pollin_I2C_subs.bas"
blablub
Die HBL funzt bei mir genau verkehrt rum.
Dim I As Byte
For I = 0 to 255
Text = str(i) : Text = Format(text , "000")
Lcd_ 1 , 1 , Text
Waitms 50
Next I
Dim I As Byte
For I = 0 to 255
Text = bin(i)
Lcd_ 1 , 1 , Text
Waitms 50
Next I
Text = Bin(PORTD)
Lcd_ 1 , 1 , Text
Text = "PORTD=" + Bin(PORTD) + "OK"
Lcd_ 1 , 1 , Text
HBl Ein
Waitms 500
Hbl Aus
Waitms 500
HBl Ein
Waitms 500
Hbl Aus
Waitms 500
...für zusätzliche digitale IO's z.B. für Tasten oder LED's.
Oder liege ich da wieder falsch?