PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4*20 LCD ansteuern 2Chips auf dem Display?



TobiasBlome
01.11.2006, 20:46
Hallo,
bisher habe ich immer 2 Zeilige Display über 4Bit angesteuert.
Nun brachte ich mehr Platz und habe ein 20*4 LCD von Reichelt bestellt(LCD 204B LED). Das sieht so aus als ob es 2 Controller hat und es hat auch doppelt so viele Anschlusspinns!

Wie schließe ich es an, und wie programmiere ich das in Basic?

Ich habe es sonst immer so programmiert:

'Konfiguration µC:
$regfile = "2313def.dat" 'AT90S2313-Deklarationen
$crystal = 3686400 'Quarz: 3.6864 MHz


'-------------------------------------------------------------------------------
'Ein-/Ausgänge:



'Konfiguration LCD
Dim Sresult As String * 16 At &H64 Overlay
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.6 , Rs = Portb.0
Cursor Off Noblink


'-------------------------------------------------------------------------------
'Variablen
'-------------------------------------------------------------------------------




'-------------------------------------------------------------------------------
'Programm
'-------------------------------------------------------------------------------

Do

'Hauptprogramm


Gosub Anzeige 'In die Anzeigeroutiene springen
Loop

'-------------------------------------------------------------------------------
'UnterProgramme:
'-------------------------------------------------------------------------------

Anzeige:
Home Upper 'in die obere zeile gehen
'Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte
Cls : Lcd "Zaehler: " + Str(zähler) 'Anzahl Türöffnungen
Home Lower 'in die untere zeile gehen
Lcd "Zaehlermerker: " + Str(zählermerker) ' ; ":" + Str(minuten) ; ":" + Str(sekunden)


Return ' wichtig
'-------------------------------------------------------------------------------
'Programmende

vielen Dank schonmal,
Tobias

franzl
01.11.2006, 21:26
hallo tobias,
das display wird nach datenblatt wie folgt angeschlossen.
1 Vss GND
2 Vcc 5V
3 Vee Kontrastspannung (0V-5V)
4 RS Register/Select (AVR)
5 RW Read/Write (GND)
6 E Enable (AVR)
7 DB0 Datenbit0 (GND)
8 DB1 Datenbit1 (GND)
9 DB2 Datenbit2 (GND)
10 DB3 Datenbit3 (GND)
11 DB4 Datenbit4 (AVR)
12 DB5 Datenbit5 (AVR)
13 DB6 Datenbit6 (AVR)
14 DB7 Datenbit7 (AVR)

du musst natürlich im programm dann statt Config Lcd = 16 * 2
Config Lcd = 20 * 4 schreiben.
mfg franzl

TobiasBlome
02.11.2006, 14:44
Hallo Franzl,
aber warum hat das ding dann eine Reihe Pinns mit der Bezeichung 1-16 und unten nochmal die Bezeichung 17-32? Kann ich die wahlweise anschließen oder müssen davon auch noch welche angeschlossen werden?

LCD ist Reichelt
Datenblatt:
http://www.reichelt.de/?SID=28goMyCH8AAAIAAH0-uL07e21e767bcfb2f7cb485eaf0fa4fd8d9;ACTION=7;LA=6; OPEN=0;INDEX=0;FILENAME=A500%252FLCD204B%2523DIS.p df

mfg Tobias

hesterberg
02.11.2006, 14:54
Hi,

Seite 2 Blockdiagramm:

1=17
2=18
.
.
.
.

sind also Identisch.

Gruß
Ralf

TobiasBlome
02.11.2006, 15:31
Hmmm,
dann habe ichmir das wohlzu kompliziert gemacht ;-)

ich werde das mal anschließen!

mfgTobias

TobiasBlome
02.11.2006, 20:21
Also es geht nicht so richtig...

Die ersten 2 Zeilen laufen wunderbar aber die unteren 2 passen von der formatierung nicht! Wenn ich nur die unteren beiden Zeilen anspreche sieht mein 20*4 LCD so aus:(die weißen nullen sind nur Platzhalter!)


00000000000000001234
00000000000000001234
5678901234567890
5678901234567890

Kann mir mal einer sagen wie ich das ändern kann?


'-------------------------------------------------------------------------------
' LCD nur Text
'-------------------------------------------------------------------------------
'Beschreibung:
'Werte auf LCD im 4-Bit I/O Mode anzeigen
'Wenn R/W LCD Leitung auf MASSE ist nur schreiben möglich!!!
'-------------------------------------------------------------------------------
'Konfiguration µC:
$regfile = "2313def.dat" 'AT90S2313-Deklarationen
$crystal = 3686400 'Quarz: 3.6864 MHz


'-------------------------------------------------------------------------------
'Ein-/Ausgänge:



'Konfiguration LCD
Dim Sresult As String * 16 At &H64 Overlay
'Config Lcd = 16 * 1 'LCD größe
'Config Lcd = 16 * 2 'LCD größe
'Config Lcd = 16 * 4 'LCD größe
'Config Lcd = 20 * 2 'LCD größe
'Config Lcd = 20 * 4 'LCD größe
Config Lcd = 40 * 4 'LCD größe
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Portd.6 , Rs = Portb.0
Cursor Off Noblink




'-------------------------------------------------------------------------------
'Programm
'-------------------------------------------------------------------------------

Do


Gosub Anzeige 'In die Anzeigeroutiene springen

Waitms 500 '500 millisekunden warten damit man das zählen vernünftig sehen kann ;-)

Loop

'-------------------------------------------------------------------------------
'UnterProgramme:
'-------------------------------------------------------------------------------

Anzeige:
Cls 'Display löschen (IMMER ERST LCD LÖSCHEN UND DANN POSITION ANGEBEN!!!)
'Locate 1 , 1
'Lcd "12345678901234567890"

'Locate 2 , 1
'Lcd "12345678901234567890"

Locate 3 , 1
Lcd "12345678901234567890"

Locate 4 , 1
Lcd "12345678901234567890"


Return

BlooD
02.11.2006, 20:47
"Config Lcd = 40 * 4"


ich dachte das ist ein 20x4??

TobiasBlome
02.11.2006, 20:54
DANKE!
Wie peinlich.... :oops:
Ja, jetzt funktioniert es ;-)

BlooD
02.11.2006, 20:55
hehe, das kommt vor :)