close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

020407-D Laufschrift - Transkommunikation.ch

EinbettenHerunterladen
HOBBY&FREIZEIT
Laufschrift
Zwölf Digits am Flash-Board
Von Wilfried Wätzig
Diese Peripherieschaltung zum 89S8252-Flash-Board stellt eine
großformatige Laufschrift mit zehn Zeichen in einem PunktmatrixDisplay dar.
Kommt Ihnen das bekannt vor? Alles schon
mal da gewesen? Ja und nein! Bei der Modularen Punktmatrix-Anzeige (Elektor 6/2001)
wurde der anzuzeigende Text per RS232Schnittstelle vom PC in einen 89C2051-Controller geschoben. Dieser Controller hatte die
Aufgabe, die Zeichen in Muster für die
Matrixmodule zu verwandeln und deren Multiplex-Ansteuerung zu organisieren.
Auf den ersten Blick scheint das Konzept der
Schaltung in Bild 1 gleich. Allerdings sitzt
hier die einzige „Intelligenz“ in einem separatem Mikrocontroller-System, nämlich dem
AT89S8252-Flash-Board. Die Laufschrift mit
ihren zwölf Displays (es können zehn Zeichen dargestellt werden) selbst arbeitet völlig passiv. Dennoch gibt es einige bemerkenswerte Details.
Die Bedienung der Laufschrift-Funktionen
kann sowohl durch eine direkt angeschlos-
18
sene PC-Tastatur als auch über die
serielle Schnittstelle des FlashBoards erfolgen. Außerdem ist eine
Echtzeituhr DS1302 integriert, die
alternierend Datum und Uhrzeit ausgeben kann.
Eingabe
Die serielle PS/2-Schnittstelle wird
zur Eingabe der Zeichen und der
Steuercodes verwendet. Die PCTastatur wird an K1 angeschlossen
und der Scan-Code im FIFO-Speicher
40105 (first in first out) untergebracht. Das Flash-Board liest die
Daten in seinem eigenen Rhythmus
aus dem Speicher und setzt den
Scan-Code in ASCII-Zeichen um.
Dabei lässt sich die Zeichenkodie-
rung von deutscher (DE) Tastatur auf
englische (EN) umschalten. Die
Tastatur-Auswahl wird im höchsten
Bit dieser Anzeige (textsel) angezeigt: LED ein bei Tastatur EN.
Alternativ kann die Steuerung auch
über die serielle Schnittstelle des
Mikroprozessors mit maximal 1200
Baud erfolgen. Die Baudrate kann
mit den Jumpern JP2 und JP3 auf
150, 300, 600 und 1200 Baud eingestellt werden. Die Auswahl von
Tastatur/Seriell wird durch Jumper
JP1 nach dem Reset des Mikroprozessors vorgenommen.
Die darzustellenden Texte werden
im EEPROM des Mikrocontrollers
ausfallsicher abgelegt. Die 2048
Bytes des EEPROM-Speichers sind
in acht Text-Blöcke mit je 240 Byte
Elektor
11/2003
HOBBY&FREIZEIT
+5V
+5V
+5V
+5V
IC18
R4
LD2
TC24-11EWA
K3
P3.7
P1.6
P3.6
P1.5
P3.5
P1.4
P3.4
P1.3
P3.3
P1.2
P3.2
R
+5V
R5
D3
D5
D7
D1
G
G
G
G
R8
JP1
19
20
R9
470Ω
R10
470Ω
P0.6
21
22
P0.5
23
24
R11
470Ω
R12
+5V
4k7
R13
P0.4
25
26
P0.3
27
28
P0.2
29
4k7
R14
30
P0.1
31
32
LD4
TC24-11EWA
11
LD5
TC24-11EWA
11
4k7
R15
LD6
TC24-11EWA
11
LD7
TC24-11EWA
11
4k7
P0.0
33
34
LD8
TC24-11EWA
11
LD9
TC24-11EWA
11
T10
T11
R24
LD10
TC24-11EWA
11
R25
R26
R27
LD11
TC24-11EWA
11
R28
R29
LD12
TC24-11EWA
11
11
9
9
R1
9
9
9
R1
9
9
9
R1
14
14
R2
14
14
14
R2
14
14
14
R2
8
8
8
R3
8
8
8
R3
8
8
8
R3
8
8
8
R3
12
12
12
R4
12
12
12
R4
12
12
12
R4
12
12
12
R4
5
5
5
R5
5
5
5
R5
5
5
5
R5
5
5
5
R5
1
1
1
R6
1
1
1
R6
1
1
1
R6
1
1
1
R6
7
7
7
R7
7
7
7
R7
7
7
7
R7
7
7
7
R7
2
2
2
R8
2
2
2
R8
2
2
2
R8
2
2
2
R8
IC1
74HCT164
1
2
A
B
1
2
A
B
1
IC3
74HCT164
2
IC4
74HCT164
B
2
1
IC5
74HCT164
B
2
10 6
13 3
IC6
74HCT164
1
2
A
B
1
2
A
B
2
3
4
5
6
10 11 12 13
IC8
74HCT164
CLR
CLK
CLR
CLK
CLR
CLK
CLR
CLK
CLR
CLK
CLR
CLK
CLR
CLK
CLR
8
9
8
9
8
9
8
9
8
9
8
9
8
9
8
9
+5V
+5V
100k
14
RESET
C3
IC1
7
C11
14
C4
IC2
100n
7
14
C5
IC3
100n
7
14
C6
IC4
100n
7
14
C7
IC5
100n
7
14
C8
IC6
100n
7
14
C9
IC7
100n
7
14
C10
IC8
100n
7
100n
020407 - 11
16V
Bild 1. Die Laufschrift mit zwölf Displays und einem 60-stufigen Schieberegister.
aufgeteilt, diese enthalten zwölf
Text-Zeilen mit je 20 Zeichen.
Zur Orientierung bei der Eingabe
werden die Nummer des aktuellen
Textblocks im oberen und die Nummer der aktuellen Displayzeile im
unteren Nibble der 8-bit-Zustandsanzeige als Binärzahl dargestellt.
Ausgabe
Das Display besteht aus zwölf DotMatrix-Anzeigen mit jeweils 5x8
LEDs. Dies sind summa summarum
60 Spalten mit je acht LEDs. Es können zehn Zeichen (in 5x8-Matrix) mit
je einer Spalte Zwischenraum gleichzeitig dargestellt werden. Bei einer
solchen Menge von LEDs kommt zur
Ansteuerung natürlich nur der Multiplexbetrieb in Frage.
Vom internen RAM werden 120 Byte
als Display-Puffer für insgesamt 20
Zeichen genutzt. Mit der Interrupt-
11/2003
Elektor
Frequenz von 3600 Hz erfolgt die
Ansteuerung einer Spalte in der
LED-Zeile. Die Bildwiederhol-Frequenz beträgt somit 60 Hz.
Die Spalteninformation wird vom
Controllerboard aus über P1.1 in das
aus acht kaskadierten 74HCT164
bestehende Schiebregister getaktet.
Das Taktsignal erscheint an P1.0 für
alle Schieberegister-ICs gleichzeitig.
Ist die Spalteninformation in das
Schieberegister getaktet, so wird die
darzustellende Zeile über die Treibertransistoren T4...T11 eingeschaltet. Dies nimmt den gesamten Controllerport P2 in Anspruch.
Textverwaltung
Die Verwaltung der Texte erfolgt über
Steuerzeichen. Dazu werden die Funktionstasten F1...F12 und die anderen
Sonderzeichen wie CR, Pause, Einfg,
Entf und so weiter genutzt.
I1
I2
I4
I5
I3
3
CLK
R32
O1
O2
O3
O4
O5
O6
I6
I7
4
Die Steuerfunktionen werden über die serielle
Schnittstelle mit der Ersatzdarstellung #x
eingegeben. Das Doppelkreuz # leitet die
Funktion ein, das folgende Zeichen bestimmt
sie. So wird beispielsweise die Funktionstaste F1 durch die Zeichenfolge #1 ersetzt. Die
Tabelle gibt eine Zusammenfassung der
Steuerzeichen-Eingabe mit deutschen Tastenbezeichnungen.
Schaltung
Neben dem steuernden Mikroprozessor auf
dem Flashboard besteht die zusätzliche
Schaltung auf der Display-Platine, die mit drei
Flachkabeln angeschlossen wird, aus vier
Funktions-Einheiten:
– dem Tastatur-FIFO mit dem 74HCT105
(IC17) zur Eingabe des Scan-Codes. Der
Speicher entkoppelt den Tastatur-Takt mit
dem Scan-Code-Leseprogramm, das durch
die Display-Routine unterbrochen wird. So
können keine Bits verloren gehen.
19
1
QH
10 11 12 13
5
QF
6
6
QG
5
7
QE
4
8
QD
1
QC
3
O7
O8
VEE
QB
4
IC7
74HCT164
2
+VS
IC16
ULN2803
9
I1
5
10 6
11 12 13 14 15 16 17 18
10
I8
O1
O2
O4
O5
O6
O3
3
I2
I3
I4
I5
I6
I7
6
4
QA
10 11 12 13
4
QH
6
7
QG
5
8
QF
4
O7
O8
1
QE
3
I8
O1
O2
O3
O4
O5
O6
4
B
VEE
I1
I2
I3
I4
I5
I6
5
A
2
IC15
ULN2803
9
QD
10 11 12 13
3
+VS
QC
6
6
13 3
QB
5
7
10 6
QA
4
8
4
11 12 13 14 15 16 17 18
10
QH
3
A
O7
O8
1
QG
4
I7
VEE
QF
2
IC14
ULN2803
9
I1
5
13 3
+VS
QE
3
I2
I3
I4
I5
I6
I7
6
10 6
11 12 13 14 15 16 17 18
10
I8
O1
O2
O3
O4
O5
O6
O7
O8
1
7
4
QD
10 11 12 13
13 3
QC
6
10 6
QB
5
4
QH
4
A
8
QG
3
I8
1
QF
2
VEE
QE
3
IC13
ULN2803
9
QD
4
13 3
QC
O1
O2
O3
O4
O5
5
10 6
+VS
I1
I2
I3
I4
I5
I6
I7
6
4
11 12 13 14 15 16 17 18
10
QH
10 11 12 13
7
QG
6
8
QF
1
QE
5
I8
VEE
QD
4
O6
IC12
ULN2803
9
QC
3
O7
O8
+VS
QB
2
13 3
11 12 13 14 15 16 17 18
10
I1
4
10 6
QA
O1
O2
O4
O5
O6
O3
3
I2
I3
I4
I5
I6
5
4
13 3
QB
10 6
QA
4
QH
10 11 12 13
6
QG
6
7
QF
5
8
QE
4
O7
O8
1
I7
VEE
QD
3
IC2
74HCT164
2
13 3
IC11
ULN2803
9
I1
4
10 6
+VS
QH
5
4
11 12 13 14 15 16 17 18
10
I8
O1
O2
O3
O4
O5
6
QG
3
I2
I3
I4
I5
I6
I7
7
QF
10 11 12 13
8
QE
1
QD
6
I8
VEE
QC
5
O6
IC10
ULN2803
9
QB
4
O7
O8
+VS
I1
3
13 3
QA
O1
O2
2
10 6
11 12 13 14 15 16 17 18
10
QH
3
I2
4
QG
5
QD
I3
6
QF
7
4
QC
13 3
QB
10 6
QA
4
CLK
10µ
R30
14
O3
O4
P0.7
T9
R23
1k
9
13 3
I4
470Ω
1k
R2
8
QE
P2.0
18
R22
R1
QC
I5
16
17
T8
R21
1k
14
10 6
O5
O6
O7
O8
15
D9
360Ω
1k
9
QB
I6
P2.1
14
QA
I7
P2.2
14
R20
9
VEE
I8
12
13
R19
1k
14
IC9
ULN2803
B
11
T7
R18
1k
9
+VS
2
P2.3
R
JP2
LD3
TC24-11EWA
11
11 12 13 14 15 16 17 18
A
P2.4
10
R31
47Ω
R
JP3
1
P2.5
8
9
47Ω
K2
P1.7
P1.0
4
6
7
+5V
P1.1
13 3
5
D8
R17
1k
R8
D6
R16
1k
47Ω
OE
1 = DATA
3 = GND
4 = +5V
5 = CLK
11
P2.6
R7
D4
R
1
LD1
TC24-11EWA
P2.7
4
1
8
2
D2
4
9
MR
SO
32768Hz
GND
470Ω
2
3
47Ω
74HCT40105
DIR
R3
10
BC557
R6
11
0F1
Goldcap
3
X2
47Ω
Q3
1
R6
DS1302
I/O
R5
Q2
D3
T6
SCLK
6
47Ω
3
4
D2
7
12
K4
BC557
C2
R4
2
15
Q1
X1
R3
S
BS170
5
13
Q0
T5
T2
2
X1
RTC
QA
PS/2
6
7
IC17
D1
RST
47Ω
6
G
K1
D0
VCC2 VCC1
5
470Ω
R2
5
D
R2
14
DOR
4k7
47Ω
4
T1
SI
R7
8
R1
3
1
100n
T4
T4 ... T11 =
8x BC557
T3
6K8
4k7
C1
16
4k7
R1
10
9
HOBBY&FREIZEIT
IC15
IC6
IC14
LD10
IC7
C9
LD11
LD12
C10
IC8
LD8
LD9
C8
– zwei 4-Bit-LED-Zustands-Anzeigen (D2 ...
D9) für Text-Block und Text-Zeile und
H7
H5
IC13
Programm
IC12
LD7
C7
IC5
C11
R32
IC11
X1
K3
C5
IC3
LD5
JP3
C1
IC18
JP1
R4
JP2
C2
R5
H6
LD4
R1
IC17
R2
IC10
IC1
LD2
C3
LD3
C4
IC2
IC9
K1
T1
K2
R3
T6
T7
T8
T9
T10
R17
R18
R19
R20
R21
R22
R23
T5
R16
R6
R7
R8
R9
R10
R11
R12
R13
R14
R15
T3
T2
D1
020407-1
K4
T4
R25
R27
R24
R26
LD1
T11
R30
R31
R28
R29
020407-1 (C) ELEKTOR
Display-Schleife
Die Schleife wird über den Interrupt vom
Timer0 alle 277 µs (entspricht 3600 Hz) auf-
LD6
C6
IC4
Initialisierung
Nach dem Einschalten des Mikroprozessors
wird über den Reset-Interrupt ein Programmteil zur Initialisierung durchlaufen.
Dabei wird die Baudrate für die serielle
Schnittstelle (UART des Mikroprozessors) auf
die über die Pins P3.2/P3.3 gewählten Werte
eingestellt. Der Flag Tastatur/Seriell Jumper
JP1) wird gesetzt, ebenso der Display-Puffer
(120 Bytes im RAM ab Adresse 080h) und der
Display-Zähler.
Anschließend wird die Tastatur auf ScanCode 3 umgeschaltet, denn in diesem Modus
wird nur ein Zeichen beim Tastendruck
zurückgesendet, was die Weiterverarbeitung
wesentlich vereinfacht.
Auch die Real Time-Clock wird initialisiert, so
dass der Gold-Cap-Puffer-Kondensator durch
die Betriebsspannung wieder aufgeladen
wird. Die Initialisierungsphase endet mit dem
Schreiben eines Anfangstexts in den DisplayPuffer und dem Einschalten des Interrupts, so
dass der Timer0 arbeiten kann.
H8
Das Programm des Mikrocontrollers kann in
drei Abschnitte unterteilt werden., die Initialisierungsphase, die Display-Schleife und die
Zeichen-Eingabe-Schleife.
ROTKELE )C( 1-704020
– dem Punkt-Matrix-Display (LD1...LD12) mit
den Schieberegistern 74HCT174 (IC1...IC8),
den Spalten-Strom-Treibern ULN2803
(IC9...IC16) und den Zeilen-Treiber-Transistoren BC557 (T4...T11).
IC16
H2
H3
– der Echtzeituhr DS1302 (IC18) mit dem
Goldcap Puffer-Kondensator (C2). Bei der
Erstbenutzung der Laufschrift-Anzeige
muss das Datum und die Uhrzeit der Echtzeituhr eingestellt werden. Dabei empfiehlt
es sich, „oben“ bei der Jahreinstellung zu
beginnen und erst am Ende die Sekunden
zu setzen. Der Sekundenspeicher der Echtzeituhr ist nämlich vom Werk aus auf 80
gesetzt, was einem Warte-Modus entspricht. Die Echtzeituhr wird übrigens von
einem Goldcap gepuffert, so dass sie weiterläuft, wenn die Versorgungsspannung
abgeschaltet wird.
20
D3
D5
D7
D9
D2
D4
D6
D8
H4
H1
Bild 2. Das Platinenlayout in halber Größe.
Elektor
11/2003
HOBBY&FREIZEIT
gerufen. Das gesamte Punkt-MatrixDisplay wird somit 60 mal in der
Sekunde neu geschrieben. Dazu
wird das nächste Display-Bytes aus
dem RAM bereit gestellt, ein ClockImpuls für das Schieberegister und
die Werte für die LED-Anzeige
Stückliste:
Widerstände:
R1,R6,R7,R12...R15 = 4k7
R2,R3,R8...R11 = 470 Ω
R4 = 6k8
R5 = 360 Ω
R16…R23 = 1 k
R24…R31 = 47 Ω
R32 = 100 k
Kondensatoren:
C1,C3...C10 = 100 n
C2 = 0F1/5V5 Goldcap (Panasonic
NF, erhältlich z.B. bei Conrad)
C11 = 10 /63 V stehend
Halbleiter:
D1 = LED low current, 5 mm gelb
D2,D4,D6,D8 = LED low current,
5 mm rot
D3,D5,D7,D9 = LED low current,
5 mm grün
IC1…IC8 = 74HCT164
IC9…IC16 = ULN2803A
IC17 = 74HCT40105
IC18 = DS1302 (Dallas)
T1 = BS170
T2…T11 = BC557B
Außerdem:
JP1 = 1⋅3-poliger Pfostenverbinder
+ Jumper
JP2,JP3 = 1⋅2-poliger
Pfostenverbinder + Jumper
K1 = 6-polige Mini-DIN-Buchse
für Platinenmontage (PS/2)
K2,K3 = 1⋅8-poliger
Pfostenverbinder
K4 = 2⋅17-poliger
Pfostenverbinder
LD1...LD12 = 5x8 Dot-MatrixDisplay mit gem. Kathode,
60,8⋅38 mm2 (TC24-11EWA von
Kingbright)
Controllerprogramm (Source und
Hex) auf Diskette EPS 02040711 oder Download*
Platine 020407-1 (siehe
www.elektor.de/pcbs/pcbs.htm )
oder Layout-Download*
* Downloads bei
www.elektor.de/dl/dl.htm
11/2003
Elektor
Platine
erzeugt und schließlich die Signale
für Textwechsel, Text-Rollen, Display
invers/blinken ausgegeben.
Eine Platine, auf die zwölf große Displays und
die Ansteuerelektronik passen soll, ist nicht
leicht zu entwerfen und anzufertigen (wer
hat schon eine 50 cm breite Ätzküvette?). Aus
diesem Grund haben wir ein Layout entworfen, das in Bild 2 in der Hälfte seiner wahren
Größe abgebildet ist. Die doppelseitige und
durchkontaktierte Platine ist nicht im ElektorService erhältlich, man kann sie aber über
den PCBShop (siehe Elektor-Homepage)
erstehen oder das Layout downloaden.
Die Bestückung der Platine ist dagegen ein
Kinderspiel. Die SIL-Verbinder, die Jumperstifte und die Mini-DIN-Buchse werden auf
der Platinenunterseite angebracht, die anderen Bauteile auf der Oberseite. Achten Sie
darauf, dass keines der Bauteile mehr als
etwa 8 mm über die Platinenoberfläche ragt,
sonst passen die darüber liegenden Displays
nicht mehr in die Fassungen. Der in der
Stückliste genannte Goldcap ist gerade einmal 5,5 mm hoch. Wenn für die ICs Fassungen verwendet werden sollen, kommen nur
sehr niedrige Exemplare in Betracht.
Zeichen-Eingabe-Schleife
Diese Schleife wartet auf das nächste Zeichen von der Tastatur oder
von der seriellen Schnittstelle. Der
Scan-Code der Tastatur wird über
das FIFO gelesen und über eine
Code-Tabelle (tastasc) in ein Steuerbeziehungsweise ASCII-Zeichen
gewandelt. Alternativ wird ein
ASCII-Zeichen von der seriellen
Schnittstelle gelesen. Ein Steuerzeichen wird durch eine Ersatzdarstellung erzeugt.
Bei einem Steuerzeichen (wie
RETURN, SHIFT, BACKSPACE) wird
über einen Verteiler der zugeordnete
Programmteil aufgerufen. Ein ASCIIZeichen wird in den nächsten freien
Speicherplatz des EEPROMs abgelegt und das Zeichen-Image (fünf
Bytes) aus einer Tabelle (charimg) in
den Display-Puffer im RAM
geschrieben.
(020407)rg
Steuerzeichen-Eingabe
Bereich
Text-Auswahl
Editieren/Eingabe
der Texte
DisplayManipulation
Taste
PAUSE Fx
F1...F12
CR
BCK/ENTF
SHIFT left/right
ALT-GR
ENTER
Serielle Eingabe
#P #x
#1 ... #9 #A #B #C
#+
#-
#Z
Startet die Eingabe eines langen Textes bis 240 Zeichen in der
aktuellen Display-Zeile, der über mehrere Display-Zeilen hinwegreicht. Während der Text-Eingabe wird das Display auf
inverse Darstellung geschaltet. Der Text wird durch ein erneutes
EINFG beendet.
EINFG
#*
ROLLEN
POS1
DRUCK Fx1 Fx2
NUM
ESC ESC
ESC Fx yy
#R
#0
#D #x1 #x2
#N
#E #E
#E #x yy
Steuerung der
Echtzeituhr
:s = ß
Direkt-Eingabe bei :a = ä
deutscher Tastatur :o = ö
:u = ü
Bild oben
Tastatur-Kodierung
Bild unten
Umlaute
Funktion
Auswahl des Textblocks Fx = F1...F8
Auswahl der Display-Zeilen #1...#12 im aktuellen Textblock
Gehe zur nächsten Zeile
Ein Zeichen zurück
Klein/Großbuchstaben
Umschaltung auf Sonderzeichen @ { [ ] } ~|\
Löscht die aktuelle Textzeile
:: = :
:A = Ä
:O = Ö
:U = Ü
Rollt die Laufschrift
Anfang der Zeile und Rücksetzen Rollen
Automatische Text-Anzeige #Fx(1)...#Fx(2)
Display invers/blinken
Anzeige von Datum und Uhrzeit
F1: Sekunden (yy = 00…59)
F2: Minuten (yy = 00...59)
F3: Stunden (yy = 00...23)
F4: Tagesdatum (yy = 01...31)
F5: Monat (yy = 01...12)
F6: Wochentag (yy = 01...07)
F7: Jahr (yy = 00...99)
Ersatzdarstellung der deutschen Umlaute
Englische Tastatur
Deutsche Tastatur
21
Document
Kategorie
Technik
Seitenansichten
9
Dateigröße
405 KB
Tags
1/--Seiten
melden