Kazalo:
- 1. korak: Nastavitev delilnika ure
- 2. korak: Ustvarjanje stroja za končno stanje (FSM)
- 3. korak: Kartiranje prikaza sedmih segmentov
- 4. korak: Ustvarjanje primerjalnika
- 5. korak: Nastavitev časovnika
- 6. korak: Oblikovanje generatorja psevdo naključnih števil
- 7. korak: Ustvarjanje pretvornika
- 8. korak: Združite vse v igralni modul
- 9. korak: naletite na dodatne težave
- 10. korak: izvorne datoteke in omejitve
Video: Dvojno -decimalna igra za ujemanje: 10 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Ta navodila bodo prikazala postopek in module, potrebne za ustvarjanje naše igre za ujemanje binarnih in decimalnih števil. V 60 sekundah bodo uporabniki prevedli in vnesli toliko naključno generiranih decimalnih števil na prikazovalniku sedmih segmentov v binarno s preklopom stikal in oddajo s tipko za ugibanje. Ko je končan, se prikaže končni rezultat in nato ponastavi za ponovno igro.
Razumevanje binarnih in hitrih refleksov je koristno, vendar je gumb za ponastavitev na voljo, če želite takoj poskusiti znova.
1. korak: Nastavitev delilnika ure
Hrbtenica celotnega projekta prihaja iz pravilne sinhronizacije vseh delov tega pripomočka. Naš stroj za končno stanje uporablja notranjo uro, vendar morata sedemsegmentni zaslon in časovnik uporabljati spremenjeno različico ure.
Ta "nova ura" izhaja iz deljenja notranje ure z želenim obdobjem, da se doseže določena frekvenca, potrebna za vsako posebno komponento. To so naredili v prejšnjih laboratorijih in iz izkušenj vemo, da ima časovnik števec "ena" nastavljen na 0,1 Hz, številka "desetice" pa 1 Hz
Vhodi: ClkIn, delitelj (32 bit)
Izhodi: ClkOut
2. korak: Ustvarjanje stroja za končno stanje (FSM)
V našem stroju za končna stanja smo se odločili, da bo potrebno pet stanj (začetek, prikaz, preverjanje, ocena in konec) s petimi vhodi (zagon, ponastavitev, ugibanje, enako, časovna omejitev). Edini izhod v našem državnem stroju je 3 -bitno število, ki predstavlja stanje uporabnika (000, 001, 011, 101, 100) glede na spodnja stanja.
Ne pozabite, da stroj za končno stanje dejansko ne oblikuje spodnjih funkcij, ampak le pove, v katerem stanju je program in kaj. Kaj se v resnici zgodi, določa zgornji modul, razložen spodaj.
Začetno stanje (000)
Začetno stanje je tam, kjer bo uporabnik začel, dokler začetni vhod ni visok, to je tudi stanje, ki bo doseženo, ko pritisnete gumb za ponastavitev.
Stanje igre (001)
Stanje igre je začetek igre, kjer se ustvari naključno število in uporabnik preklopi stikala, da ustvari vnos. Ko pritisnete gumb za ugibanje, se igra premakne v stanje preverjanja.
Stanje preverjanja (011)
V tem stanju se uporablja primerjalnik, ki bo primerjal vrednosti uporabnikovega vnosa in naključno generiranega števila. Če je predložitev pravilna, je enaka vrednost visoka in FSM preide v stanje točk; če pa je predložitev napačna, se FSM vrne v stanje prikaza, dokler predložitev ni pravilna.
To stanje preverjanja se zgodi razmeroma hitro v primerjavi z drugimi, saj se dogaja le, dokler pritisnete gumb za preverjanje
Točkovanje (101)
Ker je enaka vrednost visoka, je bila vloga pravilna. V tem stanju se bo vrednost točk povečala za eno in ustvarila bo nova številka, ki jo bo uporabnik vnesel. Ta nova številka nas vrne v začetno stanje, kjer bo uporabnik znova preklopil stikala.
Končno stanje (100)
Ko časovnik 60 sekund poteče, bo vnos časovne omejitve visok in uporabnik doseže končno stanje, kjer je prikazana končna ocena. Nato bo pritisnjen vhod za ponastavitev in FSM se bo znova zagnal v stanju zagona.
Vhodi: Clk, rst, start, ugani, enako, timeout
Izhod: stanje (3 bit)
3. korak: Kartiranje prikaza sedmih segmentov
Prikaz sedmih segmentov je ključni del celotnega projekta, saj se prvi dve števki na zaslonu uporabljata kot izhod generatorja naključnih števil, zadnji dve števki pa sta časomer. Čeprav smo v zadnjem laboratoriju izvedli primer tega v smislu števk na zaslonu, je bil prikazan v šestnajstiški številki. Za odpravo te težave smo uporabili pretvornik in delilnik ure, ki je podrobneje pojasnjen spodaj.
Na zaslonu se prikažejo vse 0, dokler FSM ne vstopi v stanje igre; v končnem stanju pa mora zaslon prikazati le uporabnikov rezultat.
Ker uporabljamo vse štiri števke sedemsegmentnega zaslona, moramo dovolj hitro krožiti po vsaki anodi pri 300 Hz, da lahko zaznamo, da je vedno prižgana.
Vhodi: Clk, sedemsegment
Izhodi: katode (7 bit), anode (4 bit)
4. korak: Ustvarjanje primerjalnika
Ta podmodul se uporablja v stanju preverjanja glede na to, kako primerja 7 -bitno ugibanje v binarnem vnosu z dejansko decimalno vrednostjo.
Imeli smo stavek if, ki je ocenjeval tako vložke kot dva izhoda, odvisno od tega, ali je bila enaka vrednost visoka ali nizka. Ne glede na to, kako pomemben je ta modul, je daleč eden od enostavnejših programov za oblikovanje v tem projektu.
Vhodi: stikala (8 bit), številka (8 bit)
Izhod: EQ
5. korak: Nastavitev časovnika
Naš časomer je v bistvu dva različna števca, ki se povečujeta z različnimi hitrostmi. En števec v vrednosti "eno" (prvi sedem segmentni prikaz) in en števec za vrednost "deset" (druga številka na prikazovalniku sedmih segmentov). Vsaka številka temelji na naraščajočem robu ure in ko števec doseže 60 sekund, bo time_out visok in igra se bo končala in se vrnila v začetno stanje.
Vhodi: Clk, stanje (3 bit), start
Izhodi: tok (8 bitov), časovna omejitev
6. korak: Oblikovanje generatorja psevdo naključnih števil
Druga alternativna metoda za generator števila, posebej za ta primer, je imeti ponavljajoči se števec od 0-99 (v binarnem načinu), ki oddaja šteto število, ko je vhod visok, saj bi to odpravilo potrebo po uporabi LFSR.
Število se spreminja z vsakim naraščajočim robom notranje ure (10 nano-sekund) in kroži skozi vseh 100 številk v eni mikrosekundi. Kadar koli uporabnik želi novo številko iz generatorja številk, izpiše številko, na kateri je bil, Čeprav ta proces ni povsem naključen, je verjetnost, da bi našli sorodne rezultate tega procesa, dovolj majhna, da je psevdonaključen.
Vhodi: Clk, changenum, enak
Izhodi: število (8 bit)
7. korak: Ustvarjanje pretvornika
Nujna komponenta je Pretvornik, ki smo ga uporabili za prikaz decimalnih številk na zaslonu sedmih segmentov namesto prvotne šestnajstiške. Čeprav obe številki temeljita na 7 -bitnem binarnem številu, smo ustvarili celoten modul, namenjen pretvorbi šestnajstiškega v decimalno.
Na primer, če bi bil naš končni rezultat za točko 0010001 (sedemnajst), bi prikaz na sedmih segmentih prikazal šestnajstiško vrednost 11 namesto decimalnega števila 17.
Vhod: Numin (8 bit)
Izhod: Numout (8 bit)
8. korak: Združite vse v igralni modul
Za naše komponente smo uporabili potrebna stikala 0-6, ki jih je uporabnik lahko preklapljal, pri čemer so trije gumbi delovali kot uporabniški vnosi za zagon, ponastavitev in ugibanje. Sestavni deli sedmih segmentov zaslona in ure so tudi komponente, ki smo jih naredili v prejšnjih laboratorijih, vendar smo jih morali spremeniti, da bi ustrezali temu projektu.
Ta projekt smo razdelili na šest zgoraj prikazanih modulov, da razdelimo celoten gizmo na številne delovne dele, vendar je način njihovega povezovanja precej zapleten in je razviden iz priložene slike črne škatle.
Med igranjem sveti 7 LED, ki obvestijo uporabnika, ki preklopi na uporabo, in ko se igra konča, smo tudi programirali LED, ki utripajo
Vhodi: stikala (8 bit), Clk, ponastavitev, zagon, ugibanje
Izhodi: katode (7 bit), anode (4 bit), LED (7 bit)
9. korak: naletite na dodatne težave
Čeprav se v tej igri uporablja le sedem stikal, je koda nastavljena kot 8 -bitno število. To smo storili, da bi imeli primernejši primerjalnik, ki bi teh 8 bitov primerjal z 8 -bitnim številom, ki smo ga ustvarili iz generatorja naključnih števil.
Rezultat nam je sprva delal tudi nekaj težav, ker smo ga nastavili za povečanje ene točke, ko je bil FSM v rezultatskem stanju; namesto tega pa se je zgodilo, da se je rezultat ves čas delovanja povečeval, kar nam je dalo neprimerno visok rezultat, s katerim se nismo mogli spopasti. To smo odpravili z dodajanjem impulznega signala, ki je bil sinhroniziran z naraščajočim robom ure, kot je razvidno iz kode v 8. koraku.
Nazadnje je časovnik odpravljal veliko časa, saj je pri odštevanju izkrivil naš sedemsegmentni zaslon, zato smo ga morali spremeniti s štetja od 60 na odštevanje od 0.
10. korak: izvorne datoteke in omejitve
Če bi raje potegnili iz naših izvornih datotek, namesto da bi ustvarili svoje, so tukaj. Vključena je tudi datoteka omejitev.
Priporočena:
Octarine: igra za ujemanje barv z LED diodami WS2812 RGB: 6 korakov
Octarine: igra za ujemanje barv z LED diodami WS2812 RGB: Octarine, barva čarovnije. Bil je živ in žareče živahen in je bil nesporni pigment domišljije, kajti kjerkoli se je pojavil, je bil to znak, da je zgolj snov služabnik čarobnega uma. To so bili čarovniki
Kako povezati krmilno palico z dvojno osjo z Arduino Uno: 5 korakov
Kako povezati igralno palico z dvojno osjo z Arduino Uno: Tukaj bomo povezali eno igralno palico za dvoosno os z arduino uno. Ta krmilna palica ima dva analogna zatiča za os x in os y ter en digitalni zatič za stikalo
Kako dvojno zaščititi dokument RAR?: 5 korakov
Kako dvojno zaščititi dokument RAR?: Dokument RAR nam olajša prenos mape. Pred prenosom mape jo lahko stisnete z WinRAR. Medtem ga lahko šifrirate, ko je dokument RAR ustvarjen. To je običajno za ljudi, zdaj lahko dodamo geslo za
Kako narediti dvojno LED utripajoče vezje na tiskanem vezju: 11 korakov
Kako narediti dvojno LED utripajoče vezje na tiskanem vezju: Hii prijatelj, Danes bom naredil projektno vezje dvojne LED utripalke.To vezje je izdelano s časovnikom IC 555. Začnimo
Dvojno oblikovan vinil za prenos toplote za majico: 10 korakov (s slikami)
Dvojno oblikovan vinil za prenos toplote za majice: Ta navodila vas bodo naučila, kako s pomočjo toplotne stiskalnice narediti majico z dvojno barvo vinila. Materiali-vinil za prenos toploteVinilni rezalnik Računalnik s programom Vinylmaster Toplotna stiskalnica Škarje Weder Majica Ruler X-ACTO nož