Numerisches LED Display

background image

X-8 - 3/2000 Elektor

EXTRA

——————————————————— PC-P

LUS

Mikrocontroller-Systeme leisten schon seit langem die
unterschiedlichsten Dienste. Wenn Daten und Meldungen
in einer für den Menschen verständlichen Form
ausgegeben werden müssen, greift man zu Displays, die
dem beabsichtigten Zweck angepasst sind. Die hier
beschriebene numerische Anzeigeeinheit ist kontrastreich
und leicht ablesbar, der Aufwand hält sich in Grenzen.

Entwurf: I. Gerlach

R1

270

R2

270

R3

270

R4

270

R5

270

R6

270

R7

270

C3

R8

270

R9

270

R10

270

R11

270

R12

270

R13

270

R14

270

5V

R15

270

R16

270

R17

270

R18

270

R19

270

R20

270

R21

270

R22

270

R23

270

R24

270

R25

270

R26

270

R27

270

R28

270

R29

270

R30

270

R31

270

R32

270

R33

270

R34

270

R35

270

R36

270

R37

270

R38

270

R39

270

R40

270

R41

270

R42

270

R43

270

1

2

3

4

5

6

7

8

9

10

JP1

BCD/7SEG

4543

IC2

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

BCD/7SEG

4543

IC3

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

BCD/7SEG

4543

IC4

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

BCD/7SEG

4543

IC5

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

BCD/7SEG

4543

IC6

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

BCD/7SEG

4543

IC7

9D,1

9D,2

9D,4

9D,8

N10

[T]

14

15

13

12

11

10

C9

EN

a

b

c

d

e

f

g

1

5

4

6

7

9

3

2

HA1143

D1

dp

a

b

c

d

e

f

g

C

C

HA1143

D2

dp

a

b

c

d

e

f

g

C

C

HA1143

D3

dp

a

b

c

d

e

f

g

C

C

HA1143

D4

dp

a

b

c

d

e

f

g

C

C

HA1143

D5

dp

a

b

c

d

e

f

g

C

C

HA1143

D6

dp

a

b

c

d

e

f

g

C

C

BCD/DEC

4028

IC1

14

11

12

13

10

15

8

3

2

6

7

4

5

9

1

0

1

2

3

4

5

6

7

8

9

1

4

2

IC1

16

8

IC2

16

8

C4

IC3

16

8

C5

IC4

16

8

C6

IC5

16

8

C7

IC6

16

8

C8

IC7

16

8

5V

5V

GND

5V

002009 - 11

C3 ... C8 = 100n

Numerisches LED-Display

Vielseitig kombinierbar und flexibel

Bild 1. Schaltung der LED-Anzeige-Einheit. Alle ICs gehören der Standard-CMOS-Familie an. Stärken des Konzepts sind die Flexibilität und

die geringe Prozessorbelastung.

Zahlreiche Anwendungen von
Mikroprozessoren und -controllern sind
nur sinnvoll, wenn an der Schnittstelle
zwischen Mensch und ”Maschine” eine

visuelle Ausgabe von Daten und
Systemmeldungen steht. So wäre zum
Beispiel ein mit höchster Präzision
arbeitendes Frequenz-Messgerät

nutzlos, wenn die Messergebnisse im
Verborgenen blieben. Eine Aufzug-
steuerung könnte ihren Zweck zwar
auch ohne Stockwerk-Anzeige erfüllen,

background image

doch die laufende Information über die
Etagen-Nummern ist für die Orien-
tierung mehr als hilfreich. Für die
numerische und alphanumerische
Anzeige von Daten aller Art werden auf
breiter Front LC-Displays eingesetzt,
denn sie bieten bestimmte Vorteile:
➧ LC-Displays können prinzipiell Zahlen,

Texte und beliebig gestaltbare
Symbole anzeigen,

➧ größere LC-Displays werden meistens

von speziellen Controllern gesteuert,
die im Display integriert sind; das
steuernde System wird von dieser
Aufgabe entlastet,

➧ LC-Displays haben einen niedrigen

Energiebedarf, sie eignen sich
deshalb besonders für den Einsatz in
batteriebetriebenen Geräten,

➧ LC-Displays sind in zahlreichen

Bauformen auf dem Markt, für viele
Einsatzzwecke findet man leicht das
Passende.

Diesen Vorteilen stehen, wie könnte es
anders sein, auch einige Nachteile
gegenüber:
➧ LC-Displays sind keine aktiven

Lichterzeuger, bei schlechten
Beleuchtungsverhältnissen ist eine
Hintergrundbeleuchtung notwendig,

➧ der Ablesewinkel ist eingeschränkt,

die Position des Betrachters ist nicht
beliebig,

➧ der Arbeitstemperatur-Bereich ist

relativ eng begrenzt,

➧ der Anzeige-Kontrast ist

vergleichsweise niedrig, das Ablesen
aus größerer Entfernung wird
dadurch erschwert,

➧ LC-Displays mit integriertem Controller

sind verhältnismäßig teuer,

➧ die steuernde Software muss an den

Display-Typ angepasst sein,

➧ aus herstellungstechnischen Gründen

sind der Display-Größe nach oben
Grenzen gesetzt,

➧ die Lebensdauer ist relativ gering.
Die Alternative, insbesondere für die
Anzeige von Ziffern, sind die nach völlig
anderen physikalischen Gesetzmäßig-
keiten arbeitenden LED-Displays. Die
sechsstellige LED-Anzeige-Einheit, die
nachfolgend beschrieben wird, lässt
sich kostengünstig und ohne besondere
Schwierigkeiten aufbauen. Bei ihrem
Entwurf wurde auf folgende Eigen-

schaften besonderes Gewicht gelegt:
➧ Belegung möglichst weniger System-

I/O-Leitungen,

➧ geringe Belastung des steuernden

Prozessors,

➧ flexibel und erweiterbar,

➧ kombinationsfähig mit allen

gängigen Systemen,

➧ geringer Aufwand und niedrige

Kosten.

Schaltung

Die Schaltung der LED-Anzeige-Einheit
ist in Bild 1 wiedergegeben. Insgesamt
kommen nur zwei leicht erhältliche IC-
Typen aus der Standard-CMOS-Familie
zum Einsatz. IC1, ein 4028, ist ein
1-aus-10-Demultiplexer, bei den
übrigen sechs ICs, Typenbezeichnung

4543, handelt es sich um BCD-nach-
Siebensegment-Decoder mit
integriertem Latch und Display-Treiber-
Ausgängen. Die verwendeten
Siebensegment-Displays sind
Ausführungen mit gemeinsamer
Kathode; die Kathoden-Anschlüsse
liegen, wie aus Bild 1 hervorgeht, direkt
an Masse. Die Segment-Anschlüsse
(a...g) sind über Strombegrenzungs-
Widerstände mit den Decoder-
Ausgängen verbunden. In Bild 1 liegt
der Dezimalpunkt-Anschluss (dp) von
Siebensegment-Display 3 über
Widerstand R43 an +5 V, so dass der
Dezimalpunkt zwischen der dritten und
vierten Ziffer aufleuchtet. Wenn der
Punkt an anderer Stelle erscheinen soll,
lässt sich dies durch Versetzen von R43
leicht erreichen.

PC-P

LUS

——————————————————

Elektor

EXTRA

X-9 - 3/2000

Pin 4 (9D,8)

4543

Pin 2 (9D,4)

4543

Pin 3 (9D,2)

4543

Pin 5 (9D,1)

4543

Pin 11 (8)

4028

Pin 12 (4)

4028

Pin 13 (2)

4028

Pin 10 (1)

4028

angezeigter Wert

LED-Selektion

nächstes Byte

002009 - 12

Bild 2. Das Diagramm zeigt den zeitlichen Ablauf der Anzeigesteuerung. Als Beispiel wird

hier die Ziffer ”9” auf Siebensegment-Display 5 gesetzt.

background image

Die Anzeige-Einheit wird über einen
Pfostenverbinder (2 x 5 Pins) mit dem
steuernden System verbunden. Acht
Leitungen stellen die Verbindung mit
ebenso vielen I/O-Anschlüssen her,
während die neunte Leitung nach
Masse führt. Über die Leitungen 1...4
selektiert das steuernde System das
Display, auf dem die nächste Ziffer
erscheinen soll. Vom Bitmuster auf
diesen Leitungen hängt ab, welcher
Ausgang von IC1 auf hohe Spannung
geht. Falls alle vier Leitungen auf Null
liegen, wird kein Display aktiviert, denn
Ausgang ”0” von IC1 ist unbenutzt. Den
BCD-Code der Ziffer legt das System
über die Leitungen 5...8 an die
gemeinsamen Decoder-Eingänge.
Diese Information wird vom selektierten
Decoder-IC mit der Rückflanke des

Selektionssignals (Eingang LD, Pin 1)
übernommen. Das Decoder-IC setzt
die Information so um, dass sie als
lesbare Ziffer auf dem Siebensegment-
Display erscheint.
Der zeitliche Ablauf der Signale ist in
dem Diagramm in Bild 2 dargestellt.
Dort wurde als Beispiel angenommen,
dass die Ziffer ”9” auf Display 5
erscheinen soll. Das steuernde System
legt zuerst das Bitmuster 0101 (dez. 5)
an die Eingänge des Demultiplexers
(IC1) und anschließend das Bitmuster
1001 (dez. 9) an die parallel-
geschalteten Eingänge der
Siebensegment-Decoder (IC2...IC7).
Die Ziffer, in diesem Fall die ”9”, wird
mit den Rückflanken der am
Demultiplexer liegenden Signale in
das Latch des Decoders

übernommen, der zu Siebensegment-
Display 5 gehört.
Für den Anwender hat dieses Verfahren
zwei wichtige Vorteile: Solange eine
angezeigte Ziffer nicht verändert
werden muss, braucht sich das
steuernde System nicht um sie zu
kümmern. Ferner kann jedes
Siebensegment-Display unabhängig
von den übrigen gesteuert werden, so
dass der Programmieraufwand gering
ist und der Prozessor nur minimal
belastet wird.
Die Schaltung arbeitet mit einer
Betriebsspannung von +5 V, für jedes
IC ist ein Entkoppelkondensator
vorgesehen. Die Werte der
S t r o m b e g r e n z u n g s -W i d e r s t ä n d e
(R1...R43) sind an diese Spannung
angepasst. Wenn die Helligkeit der

X-10 - 3/2000 Elektor

EXTRA

——————————————————— PC-P

LUS

Bild 3. Platinen-Layout und Bestückungsplan für die LED-Anzeige-Einheit. Die Platine gehört nicht zum Elektor-Programm.

background image

Displays nicht ausreicht, können sie
zum Beispiel auf 180

Ω herabgesetzt

werden. Höhere Werte haben eine
geringere Helligkeit zur Folge,
gleichzeitig ist aber auch der
Energiebedarf niedriger.

Platine

Der Aufbau der LED-Anzeige-Einheit
wird durch die dafür entworfene Platine
erheblich vereinfacht; Bild 3 zeigt das
Layout und den Bestückungsplan.
Allerdings gehört die Platine nicht zum

Elektor-Programm, so dass sie in
Eigenarbeit angefertigt werden muss.
Wenn das geschehen ist, werden zuerst
die Drahtbrücken montiert. Die ICs
sollten in Fassungen montiert werden,
während die Siebensegment-Displays
direkt auf die Platine gelötet werden
können. Im Bestückungsplan fehlen die
Bezeichnungen bei den Widerstands-
Symbolen, die zu den Dezimalpunkten
der Displays gehören. Der Grund ist,
dass Widerstand R43 bei dem Display
eingelötet werden muss, auf dem der
Dezimalpunkt erscheinen soll.

Programm-Beispiel

Ein Mikrocontroller-System, das die
Anzeige-Einheit steuern soll, braucht
dazu eine Routine, die diese Aufgabe
übernimmt. Als Beispiel ist in Listing 1
eine Assembler-Routine für die Atmel-
Prozessoren AT90S1200...8515
abgedruckt. Die Routine hat die Form
eines eigenständigen Treibers, so dass
sie leicht in die unterschiedlichsten
Controller-Programme implementiert
werden kann. Da die Routine linear
programmiert ist, lassen sich die
einzelnen Schritte auch von weniger

PC-P

LUS

——————————————————

Elektor

EXTRA

X-11 - 3/2000

;***************************************************
;* File Name

:LEDDisp.inc

;* Title

:Driver for LED Display

;* Date

:Ingo Gerlach / 10.10.99

;* Version

:1.0 / 11.10.99

;* Version

:

;* µC

:AT90S1200...8515

;* :
;* Changes

:

;*
;***************************************************
;
;
; Main program register variables
;—————————————————————————————————————-
;.def temp =

r16

; Registers / LED
;—————————————————————————————————————-
;.def

cntr

= r20

; counter

;.def

dly

= r21

; delay loop variable

;.def

pos

= r23

; position

;.def

byte

= r24

; byte

; Equates
;—————————————————————————————————————-
;.equ

LED_qty = 6

; number of LEDs

;.equ

LED_Del = 45

; delay

;.equ

OutPort = PortB

; Functions
; LED_Blank

: switch display on

; LED_Null

: reset display 0 ( Null)

; LED_Show

: show bytes , transport byte (R24),

position (R23)

; **** Switch display off
;**************************
LED_Blank:

ldi

cntr,LED_QTY

LedLoop1:

ldi

temp,192

add

temp,cntr

out

OutPort,temp

Rcall

Led_Delay

dec

cntr

brne

LedLoop1

Ret

;**************************
; **** Reset display
;**************************
LED_Null: ldi

cntr,LED_QTY

; load number of LEDs

LedLoop2: out

OutPort,cntr
Rcall

Led_Delay

dec

cntr

brne

LedLoop2

Out

OutPort,cntr

Ret

;**************************
; **** Show byte
;**************************
LED_Show:

mov

temp,pos ; position in register
out

OutPort,temp ; activate BCD-
to-decimal decoder, LD 4543

Rcall

Led_Delay ; short delay

mov

temp,byte ; value in

register

swap

temp

; value high

nibble

add

temp,pos

; goto position

out

OutPort,temp ; 4028 / 4543
move value to display

Rcall

Led_Delay ; short delay

sub

temp,pos

out

OutPort,temp ; LD signal
off, store value

Rcall

Led_Delay

Ret

;**************************
; * Internal functions !!!

; *** Delay LED display
;**************************
LED_Delay:

ldi dly,LED_Del

LedLoop:

dec dly
brne LEDLoop
ret

Listing 1. In Assembler geschriebene Treiber-Routine für die Prozessoren AT90S1200...8515 von Atmel. Sie lässt sich leicht auf andere

Prozessor-Familien übertragen.

background image

geübten Programmierern leicht
nachvollziehen.
Ein kurzes Demo-Programm, mit dem
sich auch der Schaltungsaufbau testen
lässt, ist in Listing 2 zu finden. Nach
Löschen der Anzeige schreibt das
Programm die Zahl ”145675” dorthin;

abhängig von der Einstellung des
Dezimalpunkts kann die Zahl dort auch
als ”145.675” erscheinen.
Wenn die Hardware wunschgemäß
arbeitet, steht Experimenten mit der
Software nichts mehr im Weg. Auf
andere Prozessor- oder Controller-

Familien lassen sich die Treiber- und
Demo-Routine leicht übertragen, die
Kommentare in den Listings geben
dazu zusätzliche Hilfestellung.

(002009)gd

X-12 - 3/2000 Elektor

EXTRA

——————————————————— PC-P

LUS

;***************************************************
;* File Name

:LED.asm

;* Title

:Test program for LED display

;* Date

:Ingo Gerlach / 10.10.99

;* Version

:1.0 / 10.10.99

;* Version

:

;* µC

:AT90S1200...8515

;* :
;* Changes :
;*
;***************************************************
;

;***** Directives

.device AT90S1200

;device type

.NOLIST

.include ”1200def.inc”

.list
.listmac

; Show data
; Structure of data

;

MSB

LSB

;

7 6 5 4

3 2 1 0

;

0 0 0 0

0 0 0 0

;
;

Select position 1 = 1. 2 = 2. etc

;

Number in BCD code

;
;e.g.

10010010b = 146d = pos. 2, value 9

;
; Main program register variables
;—————————————————————————————————————-
.def temp

=

r16

; Registers / LED
;—————————————————————————————————————-
.def

cntr

= r20

; counter

.def

dly

= r21

; delay loop variable

.def

pos

= r23

; position

.def

byte

= r24

; byte

; Equates
;—————————————————————————————————————-
.equ

LED_qty = 6

; number of LEDs

.equ

LED_Del = 40

; delay

.equ

OutPort = PortB

;***** Interrupt vector table

reset:

rjmp

main

; main routine

reti

; external interrupt0 handle

reti

; T/C0 overflow interrupt handle

reti

; analogue comparator interrupt handle

;***** Functions ***************************

;*******************************************
;***** Main ********************************

main:
;

ldi

temp, LOW(RAMEND)

; setup StackPointer

for > 90S1200

;

out

SPL, temp

; initialize SPL

;

ldi

temp, HIGH(RAMEND)

;

out

SPH, temp

; initialize SPH

ldi

temp,255

; temp = 255

out

ddrb,temp

; port B output

Rcall LED_Null

; reset display

mainloop:

; Show

145.675

ldi

Pos,1

ldi

Byte,1

Rcall

Led_Show

ldi

Pos,2

ldi

Byte,4

Rcall

Led_Show

ldi

Pos,3

ldi

Byte,5

Rcall

Led_Show

ldi

Pos,4

ldi

Byte,6

Rcall

Led_Show

ldi

Pos,5

ldi

Byte,7

Rcall

Led_Show

ldi

Pos,6

ldi

Byte,5

Rcall

Led_Show

forever:

rjmp forever

; ***** End of main program *******************

; ***

Include Files ***

.include ”LEDDisp.inc”

Listing 2. Dieses Programm-Beispiel zeigt, dass die Treiber-Routine leicht in Anwender-Programme implementiert werden kann.


Wyszukiwarka

Podobne podstrony:
KB04 SMD DISPLAY
Diody prostownicze, stabilizacyjne, LED
Oswietlenie LED do akwarium id Nieznany
Kolejny miernik na ICL7107 i wyświetlaczach LED wspólna anoda schemat
30 LED Projects
Numerical methods in sci and eng
21 Montaż oświetlenia LED przestrzeni stóp
Constant current driving of the RGB LED
alpa led 4 kk EMM7XJKOQ7YNP6ZMH Nieznany
Plant Display
Wyposażenie SHARANA w LED
iody led sprawko
Diody LED
sprawko led
The American Civil War and the Events that led to its End
Ćwiczenie nr 1 ?danie diody LED część 2
dwukolorowy wędrujący punkt LED
F3 LED laser

więcej podobnych podstron