BloodBowl vända Counter använder 7-segment LED (3 / 5 steg)

Steg 3: Breadboarding & Micro kod



Bakbord var ett måste för detta. Visas är min generiska bakbord, men för storleken på detta projekt jag använde faktiskt här och en mindre skärbräda, som det fanns många ledningar som behövs för att vara fördelade.

Först testade jag en enda 7-segment LED med hjälp av ursprungliga koden. Detta bekräftade 3 saker;
1) ledningar av IC-talet kontrollerades bra!
2) fick mig att optimera och slutföra min kod.
3) fick mig att inse att jag inte behövde de strömbegränsande motstånd!

1 ledningar
Som sagt, visade min schematiska design sig fungera med min kod, som LED skulle gå igenom tal med hjälp av en tryckknapp switch, så att verifierat min kod och layout. Inte mycket krävdes men breadboarding bekräftade jag var i god form.

2 kod
Ursprungligen hade jag min kod som ställts in med en huvudsaklig rutin att skanna för knappar och ISR (Interrupt rutin) displayen siffrorna. Efter breadboarding tester, ändrat jag rutiner, så majoriteten av tiden var ständigt visar siffror och ISR till check för knappar. Anledningen till att jag gjorde detta, var bara att ha en konstant display, sedan PIC körs med en intern 4Mhz klocka, jag förlorar mycket lite tid avsökningen för knappar. Ingen big deal... bara beror på hur du vill göra koden och vad är mest meningsfullt för varje program. För detta är displayen viktigt, så jag satte det i den huvudsakliga rutinen.

När min första delarna anlände (alla 6 skärmar!), jag avslutade bakbord ledningarna och fann en annan fråga. När man trycker på knappen min kod hade några slarviga journaler som inte rensades och ISR orsakade några mindre display buggar.

;===============================================================================
; Aktivera Counter
;
; -----------
; Dsply3 <---A2 |1 18| A1---> Dsply2
; Dsply4 <---A3 |2 17| A0---> Dsply1
; Led1 <---A4 |3 16| A7---> Led3
; A5 |4 15| A6---> Led2
; VSS |5 14| Vdd
; Knapp1--> B0 |6 13| B7
; B1 |7 12| B6
; B2 |8 11| B5
; B3 |9 10| B4
; -----------
;
; LED1-3---> BCD-dec IC---> LEDSeg's1-6
; Dsply1-3---> BCD-7seg IC---> vsning #1-9
;

;===============================================================================
; Revisionen historia & anteckningar:
; V1.0 första Header, kod 3/30/09
;
;
(C) 5 / 2009
; Denna kod kan användas för personliga lärande/programmodifieringar.
; All användning av denna kod i kommersiella produkter bryter mot denna freeware version.
; För frågor och kommentarer, kontakta krets dot mage på yahoo dot com.
;-------------------------------------------------------------------------------

#include P16F627A. INC

;===============================================================================
; Definierar
;-------------------------------------------------------------------------------

;===============================================================================
; Data
;-------------------------------------------------------------------------------
; Tid hålla variabler

count1 equ 20
count2 equ 21
dis1 equ 22
dis2 equ 23
dis3 equ 24
dis4 equ 25
dis5 equ 26
dis6 equ 27
w_temp equ 28
status_temp equ 29
ISRCNTR equ 2A

;===============================================================================
; Återställa vektorer
;
; KOLLA CONFIG. BITAR INNAN DU BRÄNNER!!!
; INTOSC
; MCLR: AKTIVERAD
; PWRUP: AKTIVERAD
; ALLA ANDRA: INAKTIVERA!
;
;-------------------------------------------------------------------------------
RESET_ADDR EQU 0X00
ISR_ADDR EQU 0X04

org RESET_ADDR
gå till start
;===============================================================================
; ISR
;
;-------------------------------------------------------------------------------
org ISR_ADDR
movwf w_temp
swapf STATUS, w
movwf status_temp;

; ISR HÄR
; Kolla PB0-PB5 växlar

btfsc PORTB, 0; Kolla SW1
kalla sw1debounce
btfsc PORTB, 1. Kolla SW1
kalla sw2debounce
btfsc PORTB, 2. Kolla SW1
kalla sw3debounce
btfsc PORTB, 3. Kolla SW1
kalla sw4debounce
btfsc PORTB, 4. Kolla SW1
kalla sw5debounce
btfsc PORTB, 5. Kolla SW1
kalla sw6debounce

gå till endisr

sw1debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis1; Uppdatera counter
movf dis1, W; Check för overflow
xorlw 0x1A; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h '10'; Ja, återställa displayen.
movwf dis1
returnera
sw2debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis2; Uppdatera counter
movf dis2, W; Check för overflow
xorlw 0x4A; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h "40"; Ja, återställa displayen.
movwf dis2
returnera
sw3debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis3; Uppdatera counter
movf dis3, W; Check för overflow
xorlw 0x5A; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h "50"; Ja, återställa displayen.
movwf dis3
returnera
sw4debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis4; Uppdatera counter
movf dis4, W; Check för overflow
xorlw 0x8A; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h '80'. Ja, återställa displayen.
movwf dis4
returnera
sw5debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis5; Uppdatera counter
movf dis5, W; Check för overflow
xorlw 0x9A; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h "90". Ja, återställa displayen.
movwf dis5
returnera
sw6debounce
Ring debounce; Vänta 0.2 sek
Ring debounce
INCF dis6; Uppdatera counter
movf dis6, W; Check för overflow
xorlw 0xCA; 10 på 7-seg?
btfss STATUS, Z
hemkomst. Nej, tillbaka för att skanna.
movlw h 'C0'; Ja, återställa displayen.
movwf dis6
returnera

endisr
BCF INTCON, T0IF
swapf status_temp, w
movwf STATUS
swapf w_temp, f
swapf w_temp, w
retfie

;===============================================================================
; Börja här!
;-------------------------------------------------------------------------------
Start
; Config/o-portar
clrf PORTA
movlw 0x07
movwf CMCON
BCF STATUS, RP1
BSF STATUS, RP0
movlw h '00'; RA < 0-7 > utgångar, RA5 nr utgång
movwf TRISA

BCF STATUS, RP0
clrf PORTB
BSF STATUS, RP0
movlw h'FF'; RB < 0-7 > ingångar
movwf TRISB

; Ställ in inre timer
BSF PCON, 3. Inställd på 4Mhz.
movlw h'CF'; Tmr0 inre källa, prescale TMR0 1:256
movwf OPTION_REG
movlw h "A0"
movwf INTCON; Aktivera TMR0 avbrott,
BCF STATUS, RP0

; Initiera register
clrf PORTA; Tydlig PortA
clrf PORTB; Tydlig PortB utgångar

clrf count1
clrf count2

movlw h '10'
movwf dis1
movlw h '40'
movwf dis2
movlw h "50"
movwf dis3
movlw h '80'
movwf dis4
movlw h "90"
movwf dis5
movlw h "C0"
movwf dis6

Ring debounce; 0.2 sek

; testa lysdioder, Visa 8???

;===============================================================================
; Main
; Får ingångar från växlar, debounces och incriments skärmar.
;
; Detta uppdaterar skärmar, med TMR0 prescal 1:4, med en 1Khz.
Displayen 0 används för att allokera en oanvänd skärm. Display 1-6 är anslutna.
; Först BCD-7Seg IC är laddad med visningsvärde och BCD-Dec IC är aktiverad för
Visa urval.
; För det andra, hålls en fördröjning av ms för visning.
; För det tredje BCD-Dec IC är inaktiverad... display0 är valt att stänga av displayen
;
; Detta upprepas för varje 6 bildskärmar, och loopas.
ISR hanterar switch avkänning i 15Hz takt.
;-------------------------------------------------------------------------------
huvudsakliga

Disp1
movf dis1, 0
movwf PORTA
Ring ledon

gå till största

;===============================================================================
; Ledon
; Landa tid för LED driver på.
; 6 visar -> 1/6 intermittens vid 1 Khz = 166 cykler
;-------------------------------------------------------------------------------
ledon

movlw.54
movwf count1
ledloop
decfsz count1, F
gå till ledloop
returnera
;===============================================================================
; Debounce signal
; 4 cykler att ladda och ring, 2 cykler för att återvända.
; 4 Mhz Tc:: count2 = 255 -> 0.2 sek
;-------------------------------------------------------------------------------
Debounce

movlw 255; Fördröjning för 1/5 sekund Dämpningstid.
movwf count2
kalla pon_wait
returnera
;-------------------------------------------------------------------------------
; count1 = 255 d:: 775 cykler 0 + 3 cykler att återvända.
;-------------------------------------------------------------------------------
pon_wait

big_loopS
movlw 255
movwf count1
short_loopS
decfsz count1, F
gå till short_loopS
decfsz count2, F
gå till big_loopS
returnera

slutet

3 krets
Jag hade ursprungligen 470 Ohm motstånd från varje display driver från 74LS47 och CD4028 aktiverar linje. Men jag testade min krets strömförbrukning och fann det bara drog ~ 31mA. Och eftersom de faktiska drivrutinen för bildskärmar är direkt från 74LS47 och aktivera är från en annan IC, en snabb avställning av genomsnittet och peak krav och de respektive datablad... Jag drog motstånd av bakbord och hittade en 1mA skillnad! Det visar sig att direkt köra CA linjen från 4028 medan direkt köra alla segment är OK! .. .sort av. :)

Jag hade ett tekniskt fel i min kod som inte klart min register när en knapp trycktes, orsakar den senaste displayen att ha 2 segment mycket ljust lyser när en knapp trycktes. Detta var dåligt. Men rensa registret fast problemet och kontinuerlig effekt kontroller bekräfta det är ständigt runt 30mA draw. Detta bör ge mig (baserat på tidigare erfarenheter med liknande kretsar) ~ 20 timmar med körning med 1 9V batteri (500mAH/30mAH enligt 5V förordning)... Jag hoppas!

Jag bestämde mig att hålla lysdioder direkt driven, men Lägg dem i uttag ifall något hände, på lång sikt.

Se Steg
Relaterade Ämnen

Använder en RGB LED att upptäcka färger

jag kommer att visa dig hur du använder en RGB LED och CD-skivor fotocell som en färg sensor för en mikro-controller. Jag kommer att illustrera metoden för att hämta en färg genom att använda Arduino, och jag kommer att visa dig en hur du kan kontrol...

Hur du använder en RGB LED

använder en RGB LED du kan bläddra genom alla färger. Bra att göra, humör lampa, uttrycksfulla robot eller häftiga ljuseffekter.Men för att helt enkelt ange färg (nyans) kan vara lite knepigt eftersom du behöver konvertera som till enskilda intensite...

Hur du använder en RGB LED - Arduino handledning

En RGB LED har 4 PIN-koder, en för varje färg (röd, grön, blå) och en gemensam katod. Den har träd olika färg-lysdioder som kan kombineras för att skapa alla typer av färg! Vilken färg är möjligt beroende på hur ljus varje diod är.Titta på följande v...

Hur för att använda 7 segment LED-skärm

Hi guys i detta instructables iam kommer att säga hur man använder sju segment LED-display. Det kostar endast Rs: 8 (indiska rupier). Du kan också lägga till detta projektet att visa tal eller några ord också.Steg 1: Komponenter måste För att aktiver...

Flera färger LED lampa använder en 8-kanal LED-Controller v.3

jag ville experimentera med olika färg lysdioder, än den standard RGB, skapa flera färgeffekter i en funktionell lampa.Denna lampa använder Cyan, Magenta, gul, lila, Aqua-Green, och blå 5mm lysdioder tillsammans med en övre och lägre vit 12v LED stri...

Hur du använder Mp3Tag att redigera ljudfiler

Mp3Tag är ett metadata redigering verktyg används för att redigera olika aspekter av en ljudfil, som saknas på ladda ner en ljudfil, som Album Artist, Utgivningsår, dag av frigöraren, lägga till kommentarer till enskilda eller flera låtar på en gång,...

Hur man använder en sju Segment Display - Arduino handledning

En sju Segment Display, är en form av elektronisk skärm enhet för att Visa decimala siffror som är ett alternativ till de mer komplexa matrisskrivare visar.Sju segmenterar skärmar används i digitala klockor, elektroniska elmätare, grundläggande minir...

Använda en 4 siffrig, 7 segment display, med arduino

I denna tutorial kommer jag att visa dig hur du använder en 7 segment display med 4 siffror genom att använda arduino. Några grundläggande saker jag vill påpeka är att detta tar upp nästan alla digitala stiften på arduino uno, leonardo, styrelser med...

Arduino - Time BOMB Airsoft använder KYX 5461AS 4-siffriga 7 segment Display

Hej världen! Idag gjorde jag en enkel bomb med en 4 siffrig 7 segment Display (produkt nummer: KYX 5461AS). Det är mycket enkelt och igen kan användas för flera saker naturligtvis! Du utlösa det med en knapp, återställs automatiskt med watchog. AVR/W...

Återanvända en gammal portfölj, installera en dator, använder för att hålla hårddiskar cool.

jag gjorde detta fall på Techshop för syftet med att hålla hårt kör cool medan kör grafik på evenemang, men samma steg kan tas till prep en gammal portfölj för en dator.$2 | Gamla portfölj (Goodwill)$15 | AC till 12 & 5v DC 4pin Molex 2A Power Adapte...

Hur du använder en mall för att vända multiplar på en trä svarv

detta är ett super enkelt sätt att skapa låga fidelity multiplar för prototyper.Steg 1: Välj & Mark Material: skär till torget jag valde några billiga konstruktion klass tall för denna övning. Jag kommer att göra 3 hjul för del av en stol mock-up.Mät...

En guide till att använda iMovie programvara + hur man använder grön/blå skärmen handledning att göra ditt videoklipp ser bättre

Denna video är en nybörjares handledning för iMovie programvara. Dessutom, om du är en video maker, vet du hur man använder grön/blå skärm övergångar för att göra dina videoklipp ser bättre ut. Titta på video veta bättre....

Använder en koi damm för att producera stora citroner och använda ett vegetabiliskt filter för att rengöra en koi damm

år sedan vi byggde vårt växthus/koi damm och planterade en citron träd. Sedan dess har vi lagt till många fiskar och växter. Båda har dragit nytta av våra setup. Det finns en liten pump i dammen som flyttar vatten upp till vegetabiliska filtret där r...

Hur du använder din rad Counter armband | Stickning Abacus | Ablet

denna video visar hur du använder din Ablet stickning abacus stil rad räknar armband....

Den oanvända använder av USB-att inte veta och med smart telefon fläkt OTG stöder

DETTA ÄR FÖR VETENSKAP OCH EL MEN OM DU VILL GÖRA DET MED DIN TILLSYN AV EN VUXENVARNING: DETTA ÄR USB MED KLIPPA SLADDAR SOM KAN VARA CHOCKERANDE RÖR INTE TVÅ TRÅDAR IHOP.Steg 1: Vad behöver du 1. USB-kabel inte i Använd2.LED3. om du vill koppla flä...

Hur du använder Verilog och Basys 3 för att göra 3 bitars binär räknare

Jag har gjort detta projekt för en online-klass. Projektet är skrivet av Verilog. Klockan avdelare och counter modulerna tillhandahölls. Min uppgift var att skriva en topp modul för att visa 3 bitars utdata för räknaren på 7 segment display. Ursprung...

Hur du använder Verilog och Basys 3 för att sluta titta på

Jag har gjort detta projekt för en online-klass. Projektet är skrivet av Verilog. Den klocka generator, enable_sr (aktivera digit) och ssd (sju segment display) moduler tillhandahölls. Min uppgift var att skriva topp modulen och counter moduler att g...

11 ovanliga använder för blöjor

engångsblöjor är ett hett debatterade produkt bland spädbarn och småbarn lika. Vissa objekt till dem på ekologiska grunder. kasta bort alla dessa bajsa burritos insvept i extremt absorberande tortillas kan inte vara bra för jorden. Andra prisa dem fö...

11 ovanliga använder för strån

Sugrör är redan ganska bra för smuttar ner läckra drinkar, men visste du det så mycket mer som kan göras utöver vanligt?Rolig och billig, strån är mångsidig och funktionell. Följ med när vi utforska vakuumpåsarna tätning för noisemakers. 11 ovanliga...