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