BCD-tællerkredsløb
Vi så tidligere, at toggle T-flipflops kan bruges som individuelle divide-by-to-tællere. Hvis vi forbinder flere toggle-flipflops i en seriekæde, kan vi fremstille en digital tæller, som gemmer eller viser antallet af gange, en bestemt tællesekvens er forekommet.
Tikket T-type flip-flops fungerer som en binær divide-by-two-tæller, og i asynkrone tællere leverer udgangen af et tælletrin clockimpulsen til det næste trin. Så har en flip-flop-tæller to mulige udgangstilstande, og ved at tilføje flere flip-flop-trin kan vi lave en divide-by-2N-tæller. Men problemet med 4-bit binære tællere er, at de tæller fra 0000 til 1111. Det er fra 0 til 15 i decimaltal.
For at lave en digital tæller, der tæller fra 1 til 10, skal vi have tælleren til kun at tælle de binære tal 0000 til 1001. Det er fra 0 til 9 i decimaltal, og heldigvis for os er tællekredsløb let tilgængelige som integrerede kredsløb, og et sådant kredsløb er den asynkrone 74LS90 Decadetæller.
Digitale tællere tæller opad fra nul til en forudbestemt tælleværdi ved påføring af et klokkesignal. Når tælleværdien er nået, returnerer nulstilling dem tilbage til nul for at starte forfra.
En decadetæller tæller i en sekvens af ti og vender derefter tilbage til nul efter tælling af ni. For at tælle op til en binær værdi på ni skal tælleren naturligvis have mindst fire flip-flops i sin kæde for at repræsentere hvert decimalciffer som vist.
BCD tællertilstandsdiagram
Så har en tiårstæller fire flip-flops og 16 potentielle tilstande, hvoraf kun 10 bruges, og hvis vi forbandt en række tællere sammen, kunne vi tælle til 100 eller 1.000 eller til det endelige tælletal, vi måtte vælge.
Det samlede antal tællinger, som en tæller kan tælle til, kaldes dens MODULUS. En tæller, der vender tilbage til nul efter n tællinger, kaldes en modulo-n-tæller, f.eks. en modulo-8-tæller (MOD-8) eller modulo-16-tæller (MOD-16) osv. og for en “n-bit-tæller” er det fulde tælleområde fra 0 til 2n-1.
Men som vi så i tutorialen om asynkrone tællere, at en tæller, der nulstilles efter ti tællinger med en divide-by-10 tællesekvens fra binært 0000 (decimal “0”) til 1001 (decimal “9”) kaldes en “binært kodet decimaltæller” eller forkortet BCD-tæller, og en MOD-10-tæller kan konstrueres ved hjælp af mindst fire toggle-flipflops.
Den kaldes en BCD-tæller, fordi dens sekvens af ti tilstande svarer til en BCD-kode og ikke har et regelmæssigt mønster, i modsætning til en ren binær tæller. Derefter tæller en enkelttrins BCD-tæller som f.eks. 74LS90 fra decimal 0 til decimal 9 og er derfor i stand til at tælle op til maksimalt ni impulser. Bemærk også, at en digital tæller kan tælle op eller ned eller tælle op og ned (tovejs) afhængigt af et indgående styresignal.
Binary-coded-decimal code er en 8421-kode, der består af fire binære cifre. Betegnelsen 8421 henviser til den binære vægt af de fire anvendte cifre eller bits. F.eks. 23 = 8, 22 = 4, 21 = 2 og 20 = 1. Den største fordel ved BCD-koden er, at den gør det muligt at foretage en nem konvertering mellem decimale og binære former for tal.
Den 74LS90 BCD-tæller
Det integrerede kredsløb 74LS90 er grundlæggende en MOD-10 decadetæller, der producerer en BCD-udgangskode. 74LS90 består af fire master-slave JK-flipflops, der er internt forbundet for at give en MOD-2 (tælle-til-2)-tæller og en MOD-5 (tælle-til-5)-tæller. 74LS90 har en uafhængig toggle JK-flipflop, der drives af CLK A-indgangen, og tre toggle JK-flipflops, der danner en asynkron tæller, der drives af CLK B-indgangen som vist.
74LS90 BCD-tæller
Tællerens fire udgange er betegnet med bogstavsymbolet Q med et numerisk subscript svarende til den binære vægt af den tilsvarende bit i BCD-tællerens kredsløbskode. Så f.eks. QA, QB, QC og QD. 74LS90-tællesekvensen udløses på den negativt gående flanke af klokkesignalet, dvs. når klokkesignalet CLK går fra logisk 1 (HØJ) til logisk 0 (LAV).
De ekstra indgangsstifter R1 og R2 er tællerens “reset”-stifter, mens indgangene S1 og S2 er “set”-stifter. Når de er forbundet til logisk 1, nulstiller reset-indgangene R1 og R2 tælleren tilbage til nul, 0 (0000), og når Set-indgangene S1 og S2 er forbundet til logisk 1, sætter de tælleren til maksimum, eller 9 (1001) uanset det aktuelle tælletal eller den aktuelle position.
Som vi sagde før, består 74LS90-tælleren af en divide-by-2-tæller og en divide-by-5-tæller i samme pakke. Så kan vi bruge en af tællerne til kun at fremstille en divide-by-2 frekvenstæller, kun en divide-by-5 frekvenstæller eller de to sammen til at fremstille vores ønskede divide-by-10 BCD-tæller.
Med de fire flip-flops, der udgør divide-by-5 tællersektionen, deaktiveret, kan vi, hvis der påføres et klokkesignal på input pin 14 (CLKA) og output tages fra pin 12 (QA), fremstille en standard divide-by-2 binær tæller til brug i frekvensdelingskredsløb, som vist.
74LS90 divide-by-2-tæller
For at fremstille en standard divide-by-5-tæller kan vi deaktivere den første flip-flop ovenfor og anvende clockindgangssignalet direkte til pin 1 (CLKB), idet udgangssignalet tages fra pin 11 (QD) som vist.
74LS90 divide-by-5-tæller
Bemærk, at med denne divide-by-5-tællerkonfiguration er udgangsbølgeformen ikke symmetrisk, men har et 4:1 mark-space-forhold. Det vil sige, at fire indgangskloksignaler skaber et lavt eller logisk “0”-udgangssignal, og det femte indgangskloksignal skaber et højt eller logisk “1”-udgangssignal.
For at fremstille en divide-by-10 BCD-decadetæller anvendes begge interne tællekredse, hvilket giver en 2 gange 5 divide-by-værdi. Da det første output QA fra flip-flop “A” ikke er internt forbundet med de efterfølgende trin, kan tælleren udvides til at danne en 4-bit BCD-tæller ved at forbinde dette QA-output med CLKB-indgangen som vist.
74LS90 Divide-by-10 tæller
Så kan vi se, at BCD-tællere er binære tællere, der tæller fra 0000 til 1001 og derefter nulstilles, da den har mulighed for at rydde alle sine flip-flops efter den niende tælling. Hvis vi tilslutter en trykknapkontakt (SW1) til clockindgangen CLKA, vil tælleren tælle med én, hver gang trykknapkontakten slippes. Hvis vi tilslutter lysdioder (LED’er) til udgangsterminalerne QA, QB, QC og QD som vist, kan vi se den binært kodede decimaltælling, mens den finder sted.
74LS90 BCD decadetæller
Successive anvendelser af trykknapkontakten, SW1 vil øge tallet op til ni, 1001. Ved den tiende aktivering nulstilles udgangene ABCD igen til nul for at starte en ny tællesekvens. Med et sådant MOD-10 rundt antal impulser kan vi bruge decadetælleren til at drive et digitalt display.
Hvis vi ønsker at vise tællesekvensen ved hjælp af et syv-segment display, skal BCD-udgangen afkodes på passende vis, før den kan vises. Et digitalt kredsløb, der kan afkode de fire udgange fra vores 74LS90 BCD-tæller og tænde de nødvendige segmenter på displayet, kaldes en dekoder.
Drive et display
Glædeligvis for os er der allerede nogen, der har designet og udviklet et BCD til 7-segment Display Decoder IC som f.eks. 74LS47 til at gøre netop dette. 74LS47 har fire indgange til BCD-cifrene A, B, C og D og udgange til hvert af segmenterne i 7-segment-displayet.
Bemærk, at et standard 7-segment LED-display generelt har otte indgangsforbindelser, én for hvert LED-segment og én, der fungerer som en fælles terminal eller forbindelse for alle de interne displaysegmenter. Nogle displays har også en mulighed for decimalpunkt (DP).
74LS47 BCD til 7-segment driver
Den 74LS47 displaydekoder modtager BCD-koden og genererer de nødvendige signaler til at aktivere de relevante LED-segmenter, der er ansvarlige for at vise det påførte antal impulser. Da 74LS47-dekoderen er designet til at drive et common-anode display, vil et LOW (logisk-0) output tænde et LED-segment, mens et HIGH (logisk-1) output vil slukke det. For normal drift skal LT (Lampetest), BI/RBO (Blanking Input/Ripple Blanking Output) og RBI (Ripple Blanking Input) alle være åbne eller forbundet til logik-1 (HIGH).
Bemærk, at mens 74LS47 har aktive LOW-udgange og er designet til at afkode et 7-segment LED-display med fælles anode, er 74LS48-dekoder/driver-IC’en nøjagtig den samme, bortset fra at den har aktive HIGH-udgange designet til at afkode et 7-segment LED-display med fælles katode. Så afhængigt af hvilken type 7-segment LED-display du har, kan du have brug for et 74LS47 eller et 74LS48 dekoder-IC.
Den 74LS47 binært kodede decimalindgange kan forbindes med de tilsvarende udgange af 74LS90 BCD-tælleren for at vise tællesekvensen på 7-segment-displayet som vist, hver gang der trykkes på trykknappen SW1. Ved at ændre trykknappens og 1kΩ-modstandens position kan tællingen ændres ved aktivering eller frigivelse af trykknapkontakten, SW1.
Finalt 4-bit BCD-tællerkredsløb
Bemærk, at et 7-segment display består af syv individuelle lysemitterende dioder, der danner displayet. Den bedste metode til at begrænse strømmen gennem et syvsegmentdisplay er at bruge en strømbegrænsningsmodstand i serie med hver af de syv lysdioder som vist. Men vi kan gøre dette på to måder.
Strømbegrænsende modstande
En enkelt modstand – her anvendes en enkelt serie strømbegrænsende modstand, R, i serie. Hvis du ikke er særlig optaget af en konstant lysstyrke på displayet, er dette den nemmeste og enkleste mulighed for at styre 7-segment-displayet.
Mængden af lys, der udsendes af en LED, varierer med strømmen gennem enheden, idet den strøm, der løber gennem modstanden, deles mellem antallet af displaysegmenter. Så lysstyrken på displayet afhænger nu af, hvor mange segmenter der er oplyst på samme tid.
Multiple Resistors – her har hvert segment sin egen strømbegrænsende modstand som vist i vores simple BCD-tæller kredsløb ovenfor.
Generelt kræver 7-segment-displays omkring 12 til 20 milliampere for at belyse segmenterne, så den resistive værdi af den strømbegrænsende modstand (alle vil være identiske) er valgt for at begrænse strømmen til inden for disse værdier. Bemærk, at nogle displays kan blive ødelagt, hvis de drives med 40 mA og derover.
Førdelen her er, at lysstyrken af et bestemt LED-segment ikke afhænger af tilstanden af de seks andre LED’er, hvilket giver displayet en konstant lysstyrke. Værdierne af de strømbegrænsende modstande kan vælges, så de giver den korrekte lysstyrke, da mængden af omgivende lys også vil bestemme den nødvendige LED-intensitet.
Vores kredsløb viser en simpel digital tæller fra 0 til 9 ved hjælp af en 74LS90 BCD-tæller og en 74LS47 7-segment display driver. For at tælle over 10 og producere en 2-cifret base-ten-tæller og display skal vi kaskadere to separate divide-by-ten-tællere sammen. En 2-cifret BCD-tæller ville tælle i decimaltal fra 00 til 99 (0000 0000 til 1001 1001 1001) og derefter nulstilles tilbage til 00. Bemærk, at selv om det vil være en 2-cifret tæller, er værdier, der repræsenterer hexadecimaltal fra A til F, ikke gyldige i denne kode.
Sådan er det også, hvis vi ønsker at tælle fra 0 og op til 999 (0000 0000 0000 0000 0000 til 1001 1001 1001 1001), at der er behov for tre kaskaderede decadetællere. Faktisk kan flere decadetællere konstrueres ganske enkelt ved at kaskadere individuelle BCD-tællerkredsløb sammen, et for hver decade som vist.
2-cifret BCD-tæller fra 00 til 99
BCD-tæller Resumé
I denne vejledning har vi set, at en BCD-tæller er en enhed, der gennemløber en sekvens af ti tilstande, når den clockes og vender tilbage til 0 efter tælling af 9. I vores enkle eksempel ovenfor er indgangsklokimpulserne fra en trykknapkontakt, men tællere kan bruges til at tælle mange virkelige begivenheder som f.eks. tælling af bevægelige objekter.
Der kan imidlertid være behov for passende kredsløb til at generere de elektriske impulser for hver begivenhed, der skal tælles, da disse begivenheder kan forekomme med diskrete tidsintervaller, eller de kan være helt tilfældige.
I mange digitale elektroniske kredsløb og applikationer implementeres digitale tællere ved hjælp af Toggle-flipflops eller med enhver anden type flip-flop, der kan tilsluttes for at give den nødvendige skiftefunktion, eller ved brug af dedikerede tælle-IC’er som f.eks. 74LS90. Binære tællere er tællere, der gennemløber en binær sekvens, og en n-bit binær tæller består af “n” antal flip-flops, der tæller fra 0 til 2n-1.
BCD-tællere følger en sekvens af ti tilstande og tæller ved hjælp af BCD-tal fra 0000 til 1001, hvorefter de vender tilbage til 0000 og gentager sig. En sådan tæller skal have mindst fire flip-flops til at repræsentere hvert decimalciffer, da et decimalciffer repræsenteres af en binær kode med mindst fire bits, der giver en MOD-10-tælling.
Vi har også set, at det BCD-kodede output kan vises ved hjælp af fire LED’er eller med et digitalt display. Men for at vise hvert tal fra 0 til 9 kræves der et dekoderkredsløb, som oversætter en binært kodet talrepræsentation til de relevante logiske niveauer på hvert af displayets segmenter.
Displaydekoderkredsløb kan konstrueres af kombinationslogiske elementer, og der findes mange dedikerede integrerede kredsløb på markedet til at udføre denne funktion, f.eks. 74LS47 BCD til 7-segment-dekoder/driver IC’en 74LS47 BCD til 7-segment-dekoder/driver.
De fleste 7-segment-displays anvendes normalt i applikationer til tælling af flere cifre, så ved at kaskadere flere BCD-tællere kan der konstrueres 4-cifrede tællere, der giver displays med en maksimal aflæsning på 9999.
BCD-tælleren 74LS90 er et meget fleksibelt tællekredsløb og kan bruges som en frekvensdeler eller bruges til at dividere et hvilket som helst helt tal fra 2 til 9 ved at føre de relevante udgange tilbage til IC’ens Reset- og Set-indgange.