Satura rādītājs:

BloodBowl pagrieziena skaitītājs, izmantojot 7 segmentu gaismas diodes: 5 soļi
BloodBowl pagrieziena skaitītājs, izmantojot 7 segmentu gaismas diodes: 5 soļi

Video: BloodBowl pagrieziena skaitītājs, izmantojot 7 segmentu gaismas diodes: 5 soļi

Video: BloodBowl pagrieziena skaitītājs, izmantojot 7 segmentu gaismas diodes: 5 soļi
Video: Allans Parijancs - Pagrieziena Moments (11.04.2020.) 2024, Jūlijs
Anonim
BloodBowl pagriezienu skaitītājs, izmantojot 7 segmentu gaismas diodes
BloodBowl pagriezienu skaitītājs, izmantojot 7 segmentu gaismas diodes

Šis projekts bija paredzēts BloodBowl spēļu pagriezienu skaitītājam, izmantojot sešas Charlieplexed 7 segmentu gaismas diodes.

1. solis: koncepcija

Koncepcija
Koncepcija

Mans draugs man jautāja par idejām, kā izveidot Bloodbowl Turn skaitītāju savai galda spēlei. Nezinot, kas tas bija un ko viņš gribēja, pagāja zināms laiks, lai izlemtu, vai un kā es to darīšu. Vispirms man bija jāzina, ko viņš vēlas, tāpēc es sāku ar konceptuālo mākslu (attēls). Pamatideja ir 3 spiedpogas, kas kontrolē 3 gaismas diodes, un tas tiks ievietots pielāgotajā tornī. Vienīgais lielais pieprasījums bija panākt, lai četri labākie displeji tiktu skaitīti no 0 līdz 8 un atiestatīti, un tiem būtu jābūt zemākiem 2 displeji skaita atpakaļ no 8 līdz 0 un brauc atpakaļ. Es pabeigtu ķēdi, un viņš pabeigtu torni.

2. darbība. Dizaina un detaļu saraksts

Dizains un detaļu saraksts
Dizains un detaļu saraksts

Tā kā šī koncepcija paredzēja 6 7 segmentu gaismas diodes un man bija pieejami daži 8 bitu mikroshēmu PIC, es izpētīju veidus, kā izmantot PIC, lai kontrolētu gaismas diodes. Es atklāju šo saiti https://www.mikroe.com/en/books /picbook/7_08chapter.htm, kurā teikts: "Šādi var piekļūt līdz 6 displejiem, neietekmējot katra displeja spilgtumu." Es to uzskatīju par izaicinājumu un kaut ko, kas jāizpēta kā daļa no mana projekta. Pirmā lieta, ko es darīju, bija paņemt dažus kvēlspuldzes 7 segmentu displejus no manas kastes un redzēt, kā tie darbosies. Sliktas ziņas. Konkrētās daļas, kuras es izvēlējos, nedarbojās tā, kā es gribēju. Segments iedegsies, kad tas būs nepieciešams, uz maizes dēļa, bet pārējiem 6 segmentiem noplūdes strāva tika sadalīta. Es sapratu, ka kvēlspuldzes var nebūt pareizais ceļš, vai arī man tās vajadzēja izmantot citādi. Tāpēc vienkāršības labad es pārbaudīju, vai man pieejamās 7 segmentu gaismas diodes darbosies maizes dēļā, un pasūtīju dažus kopīgus anoda displejus. Otra lieta, kas man bija jādara, bija izkārtot savu dizainu un sākt darbu pie koda. Attēlā ir mana shēma. Nav daudz, jo PIC kods rūpējas par multipleksēšanu … errr Charlieplexing. Piezīme: VISIEM 6 displejiem ir tādas pašas līnijas no draivera IC. Selektora IC iespējo katru displeju pa vienam, un 7 segmentu līnijas attiecīgi atjaunina PIC. Ļoti vienkārša ideja. Pēc tam tikai kods un aparatūras pabeigšana bija nepieciešama. Daļu saraksts "PCB6 mazie spiedpogas slēdži (NO) 1 74LS47, 7 segmentu displejs IC1 PIC16F627 1 CD4028, 1 no 10 selektoriem IC 6 10KOhm rezistori1 470Ohm rezistors1 stieples spole. Es izmantoju dažādas krāsas un attēlus, bet tas bija tikai man.1 78L05 5V regulators1 9V akumulatora klipsis maizes dēlis 3) Dizaina optimizācija. Neviens no šiem jautājumiem pats par sevi nav pārāk sarežģīts, taču iesācējam to visu bez jebkādas pieredzes var pārvarēt. Lai sadedzinātu ierīci, lodēšanas staciju utt., Ir nepieciešams aparatūras programmētājs … PIRMAIS, ko kāds varētu pamanīt, ir tas, ka 7 segmentu gaismas diodēm NAV sērijveida (strāvas ierobežošanas) rezistoru! Ļaujiet man to ātri atrisināt, norādot, ka manā sākotnējā dizainā tie ir iekļauti … bet izlasiet nākamo paskaidrojuma soli!

3. darbība. Breadboarding un mikro kods

Maizes dēlis un mikro kods
Maizes dēlis un mikro kods

Maizes dēlis tam bija obligāts. Parādīts mans vispārējais maizes dēlis, bet šī projekta lielumam es faktiski izmantoju šo un mazāku maizes dēli, jo bija daudz vadu, kas bija jāatdala. Pirmkārt, es pārbaudīju vienu 7 segmentu LED, izmantojot sākotnējo kodu. Tas apstiprināja 3 lietas; 1) IC vadu pārbaude bija laba! 2) Lika man optimizēt un pabeigt manu kodu. 3) Lika man saprast, ka man nav nepieciešami pašreizējie ierobežojošie rezistori! 1 WIRING Kā minēts, tika atrasts mans shematiskais dizains lai strādātu ar manu kodu, jo gaismas diode riņķo pa cipariem, izmantojot vienu spiedpogas slēdzi, lai pārbaudītu manu kodu un izkārtojumu. Daudz kas nebija vajadzīgs, bet maizes dēlis apstiprināja, ka esmu labā formā.2 CODEI sākotnēji bija iestatīts mans kods ar galveno kārtību, lai meklētu pogas, un ISR (pārtraukšanas pakalpojumu kārtība) parāda numurus,. Pēc maizes dēļu testiem es mainīju rutīnas, tāpēc lielāko daļu laika pastāvīgi rādīja ciparus un ISR, lai pārbaudītu pogas. Iemesls, kāpēc es to darīju, bija tikai pastāvīgs displejs, jo PIC darbojas ar iekšējo 4Mhz pulksteni, tāpēc es pazaudēju ļoti maz laika, meklējot pogas. Nav lielas problēmas … tas ir atkarīgs tikai no tā, kā vēlaties izveidot kodu, un tam, kas ir vispiemērotākais katrai lietojumprogrammai. Šim nolūkam displejs ir svarīgs, tāpēc es to ievietoju galvenajā rutīnā. Kad ieradās manas pirmās daļas (visi 6 displeji!), Es pabeidzu maizes dēļa vadu un atradu citu problēmu. Nospiežot pogu, manam kodam bija daži pavirši reģistri, kas netika dzēsti, un ISR izraisīja nelielus displeja traucējumus. ========================== ================================================== =====; Pagriezienu skaitītājs;; -----------; Dsply3 Dsply2; Dsply4 Dsply1; Led1 Led3; A5 | 4 15 | A6 - Led2; Vss | 5 14 | Vdd; Poga1 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 -Dsply#1-9;; ================================== ==============================================; Pārskatīšanas vēsture un piezīmes:; V1.0 Sākotnējā galvene, kods 3/30/09;;; (C) 5/2009; Šo kodu var izmantot personīgai apmācībai/pielietošanai/pārveidošanai.; Jebkura šī koda izmantošana komerciālos produktos pārkāpj šo bezmaksas programmatūras laidienu.; Jautājumu/komentāru gadījumā, sazinieties ar ķēdes punktu magu vietnē yahoo dot com.; ------------------------------------------------ -------------------------------#ietver P16F627A. INC; ============= ================================================== ================; Definē; ------------------------------------------------ -------------------------------; ================== ================================================== ===========; Dati; ------------------------------------------------ -------------------------------; Laika saglabāšanas mainīgo skaits: skaitlis ================================================== =======; Atiestatīt vektorus;; PĀRBAUDIET KONFIGURĀCIJU. BITS PIRMS DEGŠANAS !!!; INTOSC; MCLR: ENABLED; PWRUP: ENABLED; VISI CITI: IZSLĒGT !!;; ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 org RESET_ADDR goto start; == ================================================== ============================; ISR;; ----------------------------------------------- -------------------------------- org ISR_ADDR movwf w_temp swapf STATUS, w movwf status_temp;; ISR ŠEIT; Pārbaudiet PB0-PB5 slēdžus btfsc PORTB, 0; Pārbaudiet SW1 zvanu sw1debounce btfsc PORTB, 1; Pārbaudiet SW1 zvanu sw2debounce btfsc PORTB, 2; Pārbaudiet SW1 zvanu sw3debounce btfsc PORTB, 3; Pārbaudiet SW1 zvanu sw4debounce btfsc PORTB, 4; Pārbaudiet SW1 zvanu sw5debounce btfsc PORTB, 5; Pārbaudiet SW1 zvanu sw6debounce goto endisrsw1debounce call debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis1; Atjaunināt skaitītāju movf dis1, W; Pārbaudiet pārplūdi xorlw 0x1A; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. pārvietoties h'10 '; Jā, atiestatīt displeju. movwf dis1 returnsw2debounce zvans debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis2; Atjaunināt skaitītāju movf dis2, W; Pārbaudiet, vai nav pārplūdes xorlw 0x4A; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. pārvietoties h'40 '; Jā, atiestatīt displeju. movwf dis2 returnsw3debounce zvans debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis3; Atjaunināt skaitītāju movf dis3, W; Pārbaudiet pārplūdi xorlw 0x5A; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. pārvietoties h'50 '; Jā, atiestatīt displeju. movwf dis3 returnsw4debounce zvans debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis4; Atjaunināt skaitītāju movf dis4, W; Pārbaudiet pārplūdi xorlw 0x8A; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. pārvietoties h'80 '; Jā, atiestatīt displeju. movwf dis4 returnsw5debounce zvans debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis5; Atjaunināt skaitītāju movf dis5, W; Pārbaudiet pārplūdi xorlw 0x9A; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. pārvietoties h'90 '; Jā, atiestatīt displeju. movwf dis5 returnsw6debounce zvans debounce; Pagaidiet 0,2 sek. Zvanu debounce incf dis6; Atjaunināt skaitītāju movf dis6, W; Pārbaudiet, vai nav pārplūdes xorlw 0xCA; 10 uz 7 segmentiem? btfss STATUS, Z atgriešanās; Nē, atgriezieties skenēšanā. movlw h'C0 '; Jā, atiestatīt displeju. movwf dis6 returnendisr bcf INTCON, T0IF swapf status_temp, w movwf STATUS swapf w_temp, f swapf w_temp, wretfie; ============================ ================================================== =; Sāc šeit!;---------------------------------------------- ---------------------------------sākt; Konfigurēt I/O portus clrf PORTA movlw 0x07 movwf CMCON bcf STATUS, RP1 bsf STATUS, RP0 movlw h'00 '; RA izejas, RA5 Nav izejas movwf TRISA bcf STATUS, RP0 clrf PORTB bsf STATUS, RP0 movlw h'FF'; RB Ievadi movwf TRISB; Iestatiet iekšējo taimeri bsf PCON, 3; Iestatiet 4Mhz. movlw h'CF '; Tmr0 Iekšējais avots, iepriekšēja mēroga TMR0 1: 256 movwf OPTION_REG movlw h'A0 'movwf INTCON; Iespējot TMR0 pārtraukumus, bcf STATUS, RP0; Initialize Registers clrf PORTA; Notīrīt PortA clrf PORTB; Notīrīt PortB izejas 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 zvans debounce; 0,2 sek.; testa gaismas diodes, displejs 8 ???; ====================================== ==========================================; Galvenais; Iegūst ievadi no slēdžiem, disbounces un incriments displejiem; Displejs 1-6 ir vadu.; Pirmkārt, BCD-7Seg IC ir ielādēts ar displeja vērtību, UN BCD-Dec IC tiek aktivizēts; displeja izvēle.; Otrkārt, displejā tiek aizturēta ms aizkave.; Treškārt, BCD-Dec IC ir deaktivizēts … displejs 0 tiek izvēlēts, lai izslēgtu displeju;; Tas tiek atkārtots katram no 6 displejiem un ir cilpots.; ISR apstrādā slēdžu uztveršanu ar 15 Hz frekvenci.; -------------- -------------------------------------------------- --------------- galvenais; Disp1 movf dis1, 0 movwf PORTA zvans ledon goto main; ===================== ================================================== ========; Ledons; Iestatīšanas laiks LED ieslēgšanai.; 6 displeji-> 1/6 darba cikls pie 1Khz = 166 cikli; ----------------------------------- -------------------------------------------- ledon movlw.54 movwf count1ledloop decfsz count1, F goto ledloopreturn; ============================================ ====================================; Atkāpšanās signāls; 4 cikli, lai ielādētu un izsauktu, 2 cikli, lai atgrieztos.; 4Mhz Tc:: skaits2 = 255-> 0,2 sek.; -------------------------------------- ----------------------------------------- debounce movlw.255; Kavēšanās par 1/5 sekunžu atkāpšanos. movwf count2 zvans pon_wait return; -------------------------------------------- -----------------------------------; count1 = 255d:: 775 cikli līdz 0, + 3 cikli, lai atgrieztos.; --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F goto short_loopS decfsz count2, F goto big_loopSreturnend3 CIRCUITI sākotnēji bija 470Ohm rezistori no katras displeja draivera līnijas no 74LS47 un CD4028 iespējošanas līnijas. Tomēr es pārbaudīju ķēdes strāvas stiprumu un atklāju, ka tas velk tikai ~ 31mA. Un tā kā faktiskais displeju draiveris ir tieši no 74LS47 un iespējošana ir no cita IC, ātra vidējo un maksimālo prasību samazināšana un attiecīgās datu lapas ….. Es izvilku rezistorus no maizes dēļa un atradu 1mA atšķirību ! Šķiet, ka tieši vadīt CA līniju no 4028, vienlaikus vadot visus segmentus, ir labi! … Veida.:) Manā kodā man bija kļūda, kas neizdzēsa manu reģistru, nospiežot pogu, kā rezultātā pēdējā displejā, nospiežot pogu, bija ļoti spilgti izgaismoti 2 segmenti. Tas bija slikti. Tomēr, dzēšot reģistru, šī problēma tika novērsta, un nepārtrauktas jaudas pārbaudes apstiprina, ka tā nepārtrauktais patēriņš ir aptuveni 30 mA. Tam vajadzētu dot man (pamatojoties uz iepriekšējo pieredzi ar līdzīgām shēmām) ~ 20 stundu darbības laiku, izmantojot 1 9V akumulatoru (500mAH/30mAH saskaņā ar 5V regulējumu) … Es ceru! Es nolēmu saglabāt gaismas diodes tiešu piedziņu, bet ievietojiet tās kontaktligzdās ja kaut kas noticis, ilgtermiņā.

4. solis: PCB lodēšana

PCB lodēšana
PCB lodēšana

Katru reizi, kad nonāku līdz šim projekta punktam, es aizkavēju abit. Sākumā es gatavojos ietīt šo lietu ar stiepli, bet ātri šo ideju atteicu. Sākumā es domāju: "Daži vadi, lai pielodētu, nekāds lielais darījums" … tad, kad mans projekts ir gatavs lodēšanai, es domāju: " Man vajadzēja vai nu izsūtīt, lai izgatavotu proto dēli, vai arī iegravēt savu dēli. "Es neesmu PCB kodināšana (vēl), un es negribēju maksāt $ $ par tāfeles izgatavošanu, tāpēc…. Jā….. Es pavadīju apmēram 3 stundas, lodējot šo lietu. Tas ir aptuveni 150 vadi, tātad 300 lodēšanas punkti, kā arī lodēšanas tiltu pieskārieni. Jebkurā gadījumā, šeit ir attēlota tāfeles aizmugure…. Jā… nekārtība, bet, kad tas viss bija izdarīts, man bija tikai 1 lodēšanas īss. Pagāja 20 minūšu domāšana, jo displejā tika parādīts nepareizs #numurs loģiskā veidā, kas man bija jāatšifrē. Pēc tam es atradu īso un bam! Tas strādāja perfekti.

5. darbība. Secinājums

Secinājums
Secinājums

TAS IZDARĪJĀS! Šis projekts aizņēma apmēram; ~ 2 nedēļas, lai pārdomātu un nosūtītu e -pasta ziņojumus pieprasītājam, ~ 3 stundas koda pabeigšanas un atkļūdošanas, ~ 4 stundas maizes dēļa un atkļūdošanas, ~ 3 stundas lodēšanas Izmantojot tikai 3 IC, ir iespējams Charlieplex 6 7 segmentu gaismas diodes. Ar šo dizainu strāvas padeve ir aptuveni 30 mA, kas nav slikti, ja es pats tā saku. Man ir aizdomas, ka varētu izmantot vairāk 7 segmentu gaismas diodes, bet neesmu spiedis aploksni. jāpiemēro gandrīz jebkurai lietojumprogrammai, izmantojot 7 segmentu gaismas diodes; termometrs, pulkstenis, teksta displejs utt. Izmantojot kādu sarežģītu kodu, jums varētu būt kustīgs displejs vai attēli … varbūt pat pamats POV (redzes noturības) projektam. Galīgo īstenošanu atstāj mans draugs, lai uzbūvētu savu torni un ievietojiet tāfeli pēc saviem ieskatiem. Ja/kad tas būs izdarīts, es augšupielādēšu attēlu. Bet, kas attiecas uz ķēdi, tas, šķiet, ir veidots pēc pasūtījuma!

Ieteicams: