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: LCD an PCF8574 Kategorie: C-Control I V1.2/2.0 (von Falk - 23.10.2004 16:09)
 Als Antwort auf Re: LCD an PCF8574 von DIE HARD - 23.10.2004 15:58

>
> >
> >
> > Hallo,
> >
> > habe eine M-Unit2.0 und habe ein LCD-Display über einen PCF8574 angeschlossen.
> > Funktioniert soweit alles, blos die Ansteuerung ist etwas sehr umständlich.
> > Gibt es eine Möglichkeit, die Munit2.0 internen LCD-Befehle auf den PCF8574 umzuleiten?
> >
> > Mfg
> >
> > Falk
>
> Hallo....
> Ja, ich weiss, das ist recht umständlich.
> Es geht aber leider nicht anders weil PRINT"xyz"
> schon auf dem IIC-Bus geschickt wird, aber als Byte.
> Und das LCD läuft ja im NIBBLE-Mode, d.h dass die Hälfte
> der 8 Bit Steuersignale sind und die andere Hälfte ist das halbe
> Datenbyte.
> Es würde mit 2x PCF8574, gehen da das LCD normal einen 8Bit
> Datenbus hat. Der 2. PCF erzeugt die Steursignale.
> ciao......
>
> Hallo,

erst mal vielen Dank für die schnelle Antwort,
hab aber noch ein Problem, und zwar hab ich ein 4Zeilen Display mit 2 getrennten Controllern
wie kann ich in dem unten stehenden Programm eine Umschaltung realisieren wenn Enable 1 auf Port6 und Enable2 auf Port 7 liegt?
(dieses Programm ist nicht von mir, hab ich auf der Conrad-Seite gefunden)

'Hier sehen Sie, welche PCF 8574 Ports dem LCD zugeordnet sind:
'Port 0  LCD DB4
'Port 1  LCD DB5
'Port 2  LCD DB6
'Port 3  LCD DB7
'Port 4  LCD R/W
'Port 5  LCD RS
'Port 6  LCD EN
'-------------------------------------------------------------------
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'--- IIC INTERFACE  -------
define SDA      port[9]
define SCL      port[10]
define EXTPORT  byteport[10]
'--------------------------
'------ SYSTEM MEMORY -----
'--------------------------
'--- IIC INTERFACE  -------
define OUTBYTE      byte[2]
define LCDDATA      byte[3]
define BUF          byte[4]



'---- ZEICHENSATZ DEFINITION -------------
define Z0&H30:define Z1&H31:define Z2&H32:define Z3&H33
define Z4&H34:define Z5&H35:define Z6&H36:define Z7&H37
define Z8&H38:define Z9&H39
define A&H41:define B&H42:define C&H43:define D&H44
define E&H45:define F&H46:define G&H47:define H&H48
define I&H49:define J&H4A:define K&H4B:define L&H4C
define M&H4D:define N&H4E:define O&H4F:define P&H50
define Q&H51:define R&H52:define S&H53:define T&H54
define U&H55:define V&H56:define W&H57:define X&H58
define Y&H59:define Z&H5A:define BLK&H20


print"#ON_LCD#";
print"#INIT#";
print"#OFF#";

'---------- IICBUS INIT ------------------
SDA=on:SCL=on


'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'II   PCF 8574 PORTERWEITERUNG FÃœR LCD        II
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
pause 20
gosub lcd_init

'----- WRITE CHARACTERS LINE 1 ---------------
LCDDATA=4:gosub L1_GOTOPOS    'LINE 1 POS 4
LCDDATA=D:gosub lcd_writechar
LCDDATA=E:gosub lcd_writechar
LCDDATA=M:gosub lcd_writechar
LCDDATA=O:gosub lcd_writechar
LCDDATA=BLK:gosub lcd_writechar
LCDDATA=M:gosub lcd_writechar
LCDDATA=BLK:gosub lcd_writechar
LCDDATA=Z2:gosub lcd_writechar
LCDDATA=&H2E:gosub lcd_writechar
LCDDATA=Z0:gosub lcd_writechar
'----- WRITE CHARACTERS LINE 2 ---------------
LCDDATA=3:gosub L2_GOTOPOS    'LINE 2 POS 3
LCDDATA=P:gosub lcd_writechar
LCDDATA=C:gosub lcd_writechar
LCDDATA=F:gosub lcd_writechar
LCDDATA=BLK:gosub lcd_writechar
LCDDATA=Z8:gosub lcd_writechar
LCDDATA=Z5:gosub lcd_writechar
LCDDATA=Z7:gosub lcd_writechar
LCDDATA=Z4:gosub lcd_writechar
LCDDATA=BLK:gosub lcd_writechar
LCDDATA=L:gosub lcd_writechar
LCDDATA=C:gosub lcd_writechar
LCDDATA=D:gosub lcd_writechar

#LOOP
goto LOOP
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII





'-------------------------------------------------------
'--- PCF 8574 LCD DRIVER AT ADDR 7 / EXT BYTEPORT 10 ---
'-------------------------------------------------------
#LCD_INIT
EXTPORT=0
LCDDATA=&H38:gosub LCD_WRITECMD
EXTPORT= &B00000010:EXTPORT= &B01000010:EXTPORT= &B00000010:
LCDDATA=&H28:gosub LCD_WRITECMD:LCDDATA=&H0C:gosub LCD_WRITECMD
#LCD_CLR
LCDDATA=&H02:gosub LCD_WRITECMD:LCDDATA=&H01:gosub LCD_WRITECMD:pause 20:return
#L1_GOTOPOS
LCDDATA=LCDDATA +&H7F:goto LCD_WRITECMD
#L2_GOTOPOS
LCDDATA=LCDDATA +&HBF:goto LCD_WRITECMD
#LCD_WRITECMD
BUF = off:goto LCD_WRITE
#LCD_WRITECHAR
BUF = &B00100000
#LCD_WRITE
'--------- ------WRITE HI NIBBLE ------------------------
OUTBYTE=BUF or (LCDDATA shr 4)
EXTPORT=OUTBYTE or &B01000000:EXTPORT=OUTBYTE and &B10111111
'--------------- WRITE LO NIBBLE ------------------------
OUTBYTE=BUF or (LCDDATA and &H0F)
EXTPORT=OUTBYTE or &B01000000:EXTPORT=OUTBYTE and &B10111111
return
'-------------------------------------------------------


>

 Antwort schreiben

Bisherige Antworten: