Die BASIC-stamp II verfügt über 16 I/O-Lei-
tungen. Zum Anschluss eines LCD-Moduls an
eine BASIC-stamp II benötigt man acht
Daten- und zwei Steuerleitungen, und selbst
wenn man das Datenbyte in zwei Paketen á
vier Bits hintereinander verschickt, besetzt
das Modul immer noch sechs I/O-Anschlüsse
der BASIC-stamp. Die verbleibenden zehn
I/O-Leitungen können in bestimmten Appli-
kationen aber zu wenig sein.
Zwei Busse
Die hier beschriebene Variante der Ansteue-
rung kommt mit nur vier Leitungen aus.
Dabei wird der bekannte Bustreiber
74HCT574 zweckentfremdet und als Serial in
parallel out-Baustein (SIPO) eingesetzt. Wie
in Bild 1 zu sehen, sind die acht Kippstufen
des Bustreibers in Reihe geschaltet, so dass
das IC wie ein Schieberegister arbeitet. Die
seriellen Eingangsdaten gelangen über eine
Leitung (DATA) zum 74HCT574, eine zweite
Leitung (CLOCK) ist für den Schiebetakt
MIKROPROZESSOREN
54
Elektor
12/2000
Mini-SIPO
für LCD-Module
Display für BASIC-stamp II
Entwurf von Klaus Burkhardt
Ganze vier Anschlüsse
benötigt diese Schaltung,
um eine BASIC-stamp II
mit einem LCD-Modul
auszustatten.
Bild 1. Ein Bustreiber zwischen BASIC-Stamp und LCD-Modul.
74HCT574
IC1
12
13
14
15
16
17
18
19
EN
11
C1
1D
2
3
4
7
8
9
5
6
1
LCD-Modul
VCC
R/W
VSS
RS
11
D4
12
D5
13
D6
14
D7
D0
D1
D2
10
D3
VS
2
6
E
5
4
7
8
9
3
1
10k
BASIC
STAMP
P3
P2
P1
P0
II
5V
000113 - 11
IC1
20
10
CLOCK
DATA
RS
ENABLE
5V
erforderlich. Der Datenverkehr erin-
nert an einen I2C-Bus.
Immer, wenn ein Byte am Ausgang
des Schieberegisters komplettiert
ist, kommen zwei weitere Leitungen
zum Einsatz. Der Status der RS-Lei-
tung (register select) bestimmt, ob
das folgende Byte als Steuerbefehl
(Low) oder als darzustellender Text
(High) interpretiert wird. Das Byte
wird auf die fallende Flanke der
ENA-Leitung (enable) hin in den Dis-
playspeicher übernommen. Auf die
Möglichkeit, den Modulinhalt zu
lesen, muss allerdings verzichtet
werden. Der entsprechende Pin 5
(R/W)des Moduls liegt daher auf
Masse.
Software
Das Programm zur Ansteuerung der
vier relevanten I/O-Leitungen in Bild
2 der BASIC-stamp ist kurz und
dank der Kommentierung nicht
schwer zu durchschauen. Es besteht
(nach der üblichen Definition der
Variablen) aus einem Hauptpro-
gramm und zwei Unterprogrammen.
Das Unterprogramm shift: liest den
acht Bit langen Befehl (Steuerung
oder Text) von rechts (LSB) nach
links und übergibt ihn - bitweise auf
den pulsout-Befehl (SCL) hin - über
P1 (out1) dem Scheiberegister.
Das zweite Unterprogramm ena:
besteht nur aus einem Befehl, einem
Enable-Impuls zur Übernahme des
parallelen Bytes am Ausgang des
74HCT574 in den Modulspeicher.
Das Hauptprogramm in_lcd: erle-
digt die Voreinstellungen des Dis-
plays und die Umschaltung zwi-
schen erster und zweiter Zeile. Die
Kommentare im Programm sprechen
für sich.
(000113)rg
Das Programm kann in einer deut-
schen und einer englischen Version
kostenlos von unserer Home-Page
www.elektor.de
heruntergeladen werden.
MIKROPROZESSOREN
55
12/2000
Elektor
speicher data “1. Zeile ———*2. Zeile ———*”
zeichenvar byte
sipovar nib
avar byte
befehlvar byte
dirs = %0000000000001111
out0 = 0
Clock (SCL)
out1 = 0
serielle Daten (SDA)
out2 = 0
Register Low = Befehlskode / High = Dateneingang
out3 = 1
High nach Low-Flanke = Enable
in_lcd: Anzeige
initialisieren
befehl = %00000001
Leeren
gosub shift:gosub ena
pause 10
gosub ena:gosub ena
befehl = %00000011
Coursor home
gosub shift:gosub ena
gosub ena:gosub ena
befehl = %00111000
8 bit / 2 lines
gosub shift:gosub ena
befehl = %00001111
Display an/Coursor+Blink an
gosub shift:gosub ena
befehl = %00000110
Vorschub nach rechts
gosub shift:gosub ena
toggle 2
Umschalten auf data input
pause 100
for zeichen = 0 to 15
read zeichen,befehl
Text “1. Zeile.....”
gosub shift:gosub ena
pause 50: next
toggle 2
Umschalten auf instruct
befehl = %11000000
Anfang 2te Zeile
gosub shift:gosub ena
toggle 2
Umschalten auf data input
pause 100
for zeichen = 16 to 30
read zeichen,befehl
Text “2. Zeile.....”
gosub shift:gosub ena
pause 50: next
stop
Ende des Unterprogramms
shift:
for sipo = 0 to 7
a = befehl & 1
maskierter And-Befehl liest nur LSB
out1 = a
Serielle data (SDA)
pulsout 0,10
Shift Clock (SCL)
befehl = befehl / 2
Shift right,1
next:return
ena:
pulsout 3,10:return
Enable für Datenübernahme
Bild 2. Das kurze Listing kann von Elektors Internet-Site heruntergeladen werden.