View
0
Download
0
Category
Preview:
Citation preview
Elektor 1/99
Das Projekt stellt eine Peripherieschal-tung für den 80C32-BASIC-Steuercom-puter dar, den Elektor vor einem Jahrvorstellte und der sich allgemeinerBeliebtheit erfreut. Ohne spezielle Vor-kenntnisse in der Mikrocontrollerpro-grammierung lassen sich interessanteExperimente mit dem MCS51-Systemdurchführen, da die Programmierungin einem einfachen und leicht zu erler-nenden BASIC-Dialekt erfolgt.Der Einplatinencomputer besteht -ganz wie die Bezeichnung vermutenläßt - aus einer kleinen Basisplatine mitder Mikrocontroller-Minimalkonfigu-ration und einer großen Erweiterungs-platine, auf die die Basisplatinegesteckt ist. Was fehlt, ist eine einfacheund direkte Anschlußmöglichkeit für
ein LC-Display. Die hier vorgestelltenLösungen erlauben den Anschluß einesStandard-LCD mit 2⋅16 Zeichen. DieAnsteuerung erfolgt wahlweise überein 4-bit-Interface der Erweiterungs-platine oder ein 8-bit-Interface. Diezweite Variante ist zweifellos besser, danur die Minimalkonfiguration mit derLCD-Platine zusammenarbeit. Fürbeide Varianten enthält der Artikel jeein kurzes BASIC-Listing.
4 - B I T- I N T E R F A C EDie meisten alphanumerischen LC-Dis-plays basieren auf einem Vertreter derHD64780-Controllerfamilie. In der Lite-ratur zu diesem Thema wird die Mög-lichkeit, den Schaltkreis auch über vierDatenleitungen zu steuern, häufig
Der 80C32-BASIC-Steuercomputer, den
Elektor vor einemJahr vorstellte, erlaubt
eine Vielzahl interes-santer Experimente.
Was fehlte und mitdiesem Beitrag end-lich realisiert wird, istdie direkte Möglich-keit, ein LC-Displayanzuschließen. Die
Ansteuerung erfolgtwahlweise über ein 4-
bit- oder ein 8-bit-Interface.
60
Entwurf von Andreas Köhler
LCD-AnsteuerungPeripherie für 8032-BASIC-EPC
MIKROPROZESSOREN
nicht berücksichtigt. Zur Steuerungdes LCD-Moduls sind außerdem nochdrei Statusleitungen erforderlich. Wirdauf ein Rücklesen des Status derAnzeige verzichtet, ist es sogar mög-lich, mit sechs Steuerleitungen auszu-kommen. Die geringe Anzahl von Lei-tungen erlaubt es dann, das LCD-Modul über nur einen8-bit-Ausgangsport anzusteuern. Fürdiesen Zweck ist der PortanschlußD01...D08 an den Klemmen K13...K16der Peripherieplatine geeignet (D07bleibt frei). Der Ausgangs-Leistungs-treiber ULN2803 ist nicht unbedingtnotwendig, muß aber in der Softwareberücksichtigt werden, da er die Sig-nale invertiert. Dies ist in den beidenProgrammversionen in kommentiertenListings der Fall. Listing 2 arbeitet mitder Originalschaltung, bei Listing 1sind die Portleitungen des ULN2803durch Drahtbrücken ersetzt. In diesemFall machen auch die LEDs an denPortleitungen wenig Sinn.Die Programme sind ausführlich kom-mentiert, so daß sich hier eine tiefgrei-fende Erläuterung erübrigt. Bis zurZeile 170 werden die Steuerbits (Artder Anzeige, Matrixformat, Reset, Cur-sor nach oben links und so weiter)gesetzt und von der Routine 700...780zum Displaycontroller gesteuert. DieBits des Ausgangsinterface sind wiefolgt zugeordnet:
Obwohl die LC-Anzeige auf 2⋅16 Zei-chen beschränkt ist, steuert der Con-troller immer 2⋅40 Zeichen an. Da aufeinen Rückkanal vom Display zumEPC verzichtet wird, muß die Softwaredafür sorgen, daß nach der Eingabeder 2⋅16 sichtbaren Zeichen (Pro-grammzeilen 250...300) die nicht sicht-baren Speicherstellen im Anzeigecon-troller mit Dummies (zum BeispielLeerzeichen !) gefüllt werden. Diesgeschieht in den Programmzeilen 310bis 350. Die Datenbits werden schließ-lich in der Routine 400...600 zum Con-troller geschickt, und zwar zunächstdie höher-, anschließend die nieder-wertigen vier Bits.Zu beachten ist, daß sich das Busy-flagerst nach der dritten Ausgabe von 03H(Zeile 60) auswerten läßt. Auffällig sindnoch eine Reihe von Warteschleifen, diejede Art von Handshake überflüssig
61Elektor 1/99
DP1
VS
S
VD
D
R/W
2x 16
VO
RS
D0
D1
D2
10
D3
11
D4
12
D5
13
D6
14
D7
1 2 3 4 5 6
E
7 8 9
10k
P1
D0
D1
D2
D3
D4
D5
D6
D7
A0
K3
K2
A15
D2
D1
D0
A0
A14
D7
D6
D5
D4
D3
K11 2
3
IC1a&
5 4
6
IC1b&
12 13
11
IC1d&
9
108
IC1c
&1
23
IC2a
&
A0
A14
A15
RD RW
A0
D4
D5
D6
D7
DO
5
DO
6
DO
1
DO
2
DO
3
DO
4
DO
8
5V
5V
7805
IC3
C1
100n
C2
100n
C4
100µ63V
C3
10µ16V
D11N4001
K45V
IC1
14
7
IC2
14
7
C5
100n
C6
100n
4 5
6
IC2b&
9 10
8IC2c
&
12 13
11IC2d
&
980100 - 11
5V
5V
IC1 = 74HCT00IC2 = 74HCT00
A1
A1
1
Bild 1. Die Hardware der LCD-Ansteue-rung. In der 4-bit-Version müssen nurwenige Bauelemente bestückt werden.Bit des Bedeutung LCD-Anschluß
Ausgangsinterface
Bit 7 (D08) LCD Latch Enable (high aktiv) Pin 6
Bit 6 frei
Bit 5 (D06) RS (L = Befehl, H = Daten) Pin 4
Bit 4 (D05) R/W (L = Write) Pin 5
Bit 3 (D04) LCD Datenbit 7 Pin 14
Bit 2 (D03) LCD Datenbit 6 Pin 13
Bit 1 (D02) LCD Datenbit 5 Pin 12
Bit 0 (D01) LCD Datenbit 4 Pin 11
machen. Die Warteschleifen sind mehrals großzügig bemessen und könnenbei Bedarf erheblich verkürzt werden.Die Stromversorgung der LC-Anzeigeübernimmt das Netzteil des Experimen-tierboards. Auf einen Festspannungs-regler kann man also genauso ruhigenGewissens verzichten wie auf eineirgendwie geartete aktive Elektronik.Was bleibt, zeigt die erfrischend kurzeStückliste: ein Trimmpoti zur Kontra-steinstellung, zwei Entkoppelkondensa-toren und eine Diode als Verpolschutz.
8 - B I T- I N T E R F A C EWesentlich eleganter ist natürlich derAnschluß eines LC-Displays direkt anden Controller, denn schließlich besit-zen Controller- und LCD-Platine auf-einander passende Pfostenverbinder.So erhält der LCD-Controller nebenden schon erwähnten Steuersignalen
RS (Adresse A1) und R/W (Adresse A0)alle acht Datenbits parallel. Ausgehendvon der Grundadresse 0C000H ergibtsich folgende Adreßzuordnung:
0C000H Befehl schreiben0C001H Befehl lesen0C002H Daten schreiben0C003H Daten lesen
Die Adresse 0C00H (Enable-Leitung anPin 6) wird durch eine UND-Verknüp-fung von WR und RD des Mikrocon-trollers sowie der Adreßleitungen A14und A15 dekodiert. Auf diese Weise istdie LCD-Platine mehrfach adressierbar,was insbesondere dann zum Tragenkommt, wenn mehrere Peripheriebau-steine am BASIC-EPC arbeiten.Das Listing 3 zeigt deutlich, daß die 8-bit-Version deutliche Vorteile aufwei-sen kann. Keine Warteschleifen hin-dern den Ablauf des kurzen, schnör-kellosen Programms.Die Platine der LCD-Ansteuerungmuß vollständig bestückt sein. Dazugehört auch ein Festspannungsreglermit den dazugehörenden Puffer- undEntkoppelkondensatoren. Der Einpla-tinencomputer muß nun nämlich überdas LCD-Board versorgt werden.
(980100)rg
62 Elektor 1/99
Listing I 5 REM ULN 2803 gegen Bruecken ausgetauscht10 STRING 100,20 : REM Speicher fuer String20 K = 3 : GOSUB 700 : REM Init I30 FOR Z = 1 TO 400040 NEXT Z50 K = 3 : GOSUB 700 : REM Init 260 K = 3 : GOSUB 700 : REM Init 370 K = 2 : GOSUB 700 : REM Init.480 K = 2 : GOSUB 700 : REM 4 bit Interface90 K = 8 : GOSUB 700 : REM 2 Zeilen 5*7 Matrix100 K = 0 : GOSUB 700 : REM Display loeschen110 K = 1 : GOSUB 700120 K = 0 : GOSUB 700 : REM Cursor home130 K = 2 : GOSUB 700140 K = 0 : GOSUB 700 : REM inc Zaehler, nicht
schieben150 K = 6 : GOSUB 700160 K = O : GOSUB 700 : REM Display on, Cursor
on, B1inken
170 K = 15 : GOSUB 700180 REM ——————————————————-250 PRINT “ Es duerfen maximal 36 Zeichen
eingegeben werden bis Pfeil <”260 INPUT “ Welche Zeichenkette soll ausgegeben
werden :”,$(1)270 FOR Z = 1 TO 16280 D=ASC($(1),Z) : REM Eingabezeichen einzeln290 GOSUB 400300 NEXT Z310 FOR Y = 16 TO 39 : REM Speicher ohne
Anzeigefunktion320 D = 32 : REM des LCD Controllers mit
Dummyzeichen330 GOSUB 400340 NEXT Y :REM fuellen350 GOTO 250360 REM ——————————————————-400 REM Unterprogramm zur Datenausgabe410 L = D.AND.15 : REM Daten Low-Teil
(C) ELEKTOR980100-1
Stückliste8-bit-Ansteuerung
Widerstände:P1 = 10-k-Trimmpoti
Kondensatoren:C1,C2,C5,C6 = 100 nC3 = 10 µ/16 V stehendC4 = 100 µ/63 V stehend
Halbleiter:D1 = 4001IC1,IC2 = 74HCT00IC3 = 7805
Außerdem:K1 = 1⋅20poliger Pfostenverbinder,
femaleK2,K3 = 1⋅14poliger Pfostenverbin-
der, femaleK4 = 2polige Platinenan-
schlußklemme, RM5DP1 = LCD 2⋅16 Zeichen (z.B. Sharp
LM16A211)
Stückliste4-bit-Ansteuerung
Widerstände:P1 = 10-k-Trimmpoti
Kondensatoren:C2 = 100 nC3 = 10 µ/16 V stehend
Halbleiter:D1 = 4001
Außerdem:K4 = 2polige Platinenan-
schlußklenmme, RM5K5 = LCD 2⋅16 Zeichen (z.B. Sharp
LM16A211)
Bild 2. Die einseitige Platine des LCD-Moduls. In der 8-bit-Version wird die Pla-tine auf die des EPC gesteckt, die Verbin-der passen haargenau!
(C) ELEKTOR980100-1
C1
C2
C3
C4C5
C6D1
DP1
H1 H2
H3H4
H5 H6
H7H8
IC1IC2 IC3
K1
K2 K3
K4
P1
DO
4
DO
3
DO
2
D01
DO
5
DO
6
DO
8
980100-1
+0
2
63Elektor 1/99
420 H = D.AND.240 : REM Daten High-Teil430 H = H/16 : REM High Daten verschieben440 H = H.OR.32 : REM Daten aktivieren450 XBY(0C000H) = H460 H = H.OR.160 : REM Latch aktivieren470 XBY(0C000H) = H480 H = H.AND.127 :REM Latch deaktivieren490 XBY(0C000H) = H500 FOR U = 1 TO 100510 NEXT U520 L = L.OR.32 : REM Daten aktivieren530 XBY(0C000H) = L540 L = L.OR.160 : REM Latch aktivieren550 XBY(0C000H) = L560 L = L.AND.127 : REM Latch deaktivieren
570 XBY(0C000H)·= L580 FOR U = 1 TO 100590 NEXT U600 RETURN610 REM ——————————————————-700 REM Unterprogramm fuer Kommandoausgabe710 XBY(0C000H) = K720 K = K.OR.128 : REM Latch aktivieren730 XBY(0C000H) = K740 K = K.AND.127 : REM Latch deaktivieren750 XBY(0C000H) = K760 FOR U = 1 TO 100770 NEXT U780 RETURN
Listing 3 (8 bit Interface)
10 STRING 100,20 : REM Speicher fuer String20 XBY(0C000H)=56 : REM 8 bit Interface,
zweizeilig, 5*7 Matrix30 XBY(0C000H)=15 : REM Display an, Cursor an,
Blinken an40 XBY(0C000H)=1 : REM Display loeschen50 PRINT “ Es duerfen maximal 16 Zeichen
eingegeben werden bis Pfeil <”60 INPUT “ Welche Zeichenkette soll ausgegeben
werden :”,$(1)70 FOR Z = 1 TO 1680 A=ASC($(1),Z) : REM Eingabezeichen einzeln90 XBY(0C002H)=A : REM ausgeben100 NEXT Z110 FOR H = 16 TO 39 : REM Speicher ohne
Anzeigefunktion120 XBY(0C002H)=32 : REM des LCD Controllers
mit Dummyzeichen130 NEXT H : REM fuellen140 GOTO 50
Listing 25 REM Originalschaltung mit ULN 28037 XBY(0C000H)= 255 : REM Grundzustand da
ULN 2803 negiert10 STRING 100,20 : REM Speicher fuer String20 K = 12 : GOSUB 700 : REM Init 130 FOR Z = 1 TO 400040 NEXT Z50 K = 12 : GOSUB 700 : REM Init 260 K = 12 : GOSUB 700 : REM Init 370 K = 13 : GOSUR 700 : REM Init 480 K = 13 : GOSUB 700 : REM 4 bit Interface90 K = 7 : GOSUB 700 : REM 2 Zeilen 5*7 Matrix100 K = 15 : GOSUB 700 : REM Display loeschen110 K = 14 : GOSUB 700120 K = 15 : GOSUB 700 : REM Cursor home130 K = 13 : GOSUB 70014O K = 15 : GOSUB 700 : REM inc Zaehler,
nicht schieben150 K = 9 : GOSUB 7O0160 K = 15 : GOSUB 700 : REM Display on,
Cursor on, Blinken170 K = 0 : GOSUB 700180 REM———————————————————250 PRINT.” Es duerfen maximal 16 Zeichen
eingegeben werden bis Pfeil <”260 INPUT “ Welche Zeichenkette soll ausgegeben
werden :”,$(1)270 FOR Z = 1 TO 16280 D=ASC($(1),Z) : REM Eingabezeichen einzeln290 D = D.XOR.255 : REM ULN 2803 ist negierend300 GOSUB 400310 NEXT Z320 FOR Y = 16 TO 39 : REM Speicher ohne
Anzeigefunktion330 D = 223 : REM des LCD Controllers mit
Dummyzeichen
340 GOSUB 400350 NEXT Y : REM (negiertes Space) fuellen360 GOTO 250370 REM———————————————————400 REM Unterprogramm zur Datenausgabe410 L = D.AND.15 : REM Daten Low-Teil420 H = D.AND.240 : REM Daten High-Teil430 H = H/16 : REM High Daten verschieben440 H = H.OR.16 : REM Schreiben aktivieren450 XBY(0C000H) = H460 H = H.AND.127 : REM Latch aktivieren470 XBY(0C000H) = H480 H = H.OR.128 :REM Latch deaktivieren490 XBY(0C000H) = H500 FOR U = 1 TO 100510 NEXT U520 L = L.OR.16 : REM Schreiben aktivieren530 XBY(0C000H) = L540 L = L.AND.127 : REM Latch aktivieren550 XBY(0C000H) = L560 L = L.OR.128 : REM Latch deaktivieren570 XBY(0C000H) = L580 FOR U = 1 TO 100590 NEXT U600 RETURN610 REM———————————————————700 REM Unterprogramm fuer Kommandoausgabe710 K = K.OR.48 : REM Kommando und Schreibenaktivieren720 XBY(0C000H) = K730 K = K.AND.127 : REM Latch aktivieren740 XBY(0C000H) = K750 K = K.OR.128 : REM Latch deaktivieren760 XBY(0C000H) = K770 FOR U = 1 TO 100780 NEXT U790 RETURN
Recommended