Sisällysluettelo:
- Vaihe 1: Kellonjakajan asentaminen
- Vaihe 2: Äärellisen tilan koneen (FSM) luominen
- Vaihe 3: Seitsemän segmentin näytön kartoittaminen
- Vaihe 4: Vertailijan luominen
- Vaihe 5: Ajastimen asettaminen
- Vaihe 6: Pseudo -satunnaislukugeneraattorin suunnittelu
- Vaihe 7: Muuntimen luominen
- Vaihe 8: Kokoa kaikki yhteen pelimoduulissa
- Vaihe 9: Lisäongelmia
- Vaihe 10: Lähdetiedostot ja rajoitukset
Video: Binaarinen desimaalipeli: 10 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Tässä ohjeessa näytetään prosessi ja moduulit, joita tarvitaan binäärinen desimaalipeli -pelimme luomiseen. 60 sekunnin kuluessa käyttäjät kääntävät ja syöttävät niin monta satunnaisesti luotua desimaalilukua seitsemän segmentin näytöllä binääriksi vaihtamalla kytkimiä ja lähettämällä arvauspainikkeella. Kun olet valmis, lopullinen pisteet näytetään ja palautetaan toistettavaksi.
Binaaristen ja nopeiden refleksien ymmärtäminen on hyödyllistä, jos haluat menestyä hyvin, mutta nollauspainike on käytettävissä, jos haluat yrittää heti uudelleen.
Vaihe 1: Kellonjakajan asentaminen
Koko tämän projektin selkäranka tulee tämän gizmo -laitteen kaikkien osien oikeasta synkronoinnista. Finite State Machine käyttää sisäistä kelloa, mutta seitsemän segmentin näytön ja ajastimen on käytettävä kellon muutettua versiota.
Tämä "uusi kello" tulee jakamalla sisäinen kello halutulla ajanjaksolla, jotta saavutetaan tietty taajuus, jota tarvitaan kullekin tietylle komponentille. Tämä on tehty aiemmissa laboratorioissa ja kokemuksesta tiedämme, että ajastimen "yhden" numero on asetettu 0,1 Hz: iin ja "kymmenien" numero on 1 Hz
Tulot: ClkIn, jakaja (32 -bittinen)
Lähdöt: ClkOut
Vaihe 2: Äärellisen tilan koneen (FSM) luominen
Äärellisessä tilakoneessamme päätimme, että viisi tilaa (alku, näyttö, tarkistus, pisteet ja loppu) ovat tarpeen viiden tulon (aloitus, nollaus, arvaus, yhtä suuri, aikakatkaisu) kanssa. Tilakoneemme ainoa lähtö on 3 -bittinen luku, joka edustaa käyttäjän tilaa (000, 001, 011, 101, 100) alla olevien tilojen suhteen.
Muista, että äärellinen tilakone ei itse esimuodosta alla olevia toimintoja, vaan kertoo vain, missä tilassa ohjelma on ja mitä. Mitä todellisuudessa tapahtuu, määritetään alla selostetulla ylämoduulilla.
Lähtötila (000)
Käynnistystila on paikka, jossa käyttäjä aloittaa, kunnes käynnistystulo on korkea. Tämä on myös tila, joka saavutetaan aina, kun nollauspainiketta painetaan.
Pelitila (001)
Pelin tila on pelin alku, jossa satunnaisluku luodaan ja käyttäjä vaihtaa kytkintä syöttön luomiseksi. Kun arvauspainiketta on painettu, peli siirretään tarkistustilaan.
Tarkista tila (011)
Tässä tilassa käytetään vertailua, joka vertaa käyttäjän syötteen arvoja ja satunnaisesti luotua lukua. Jos lähetys on oikein, sama arvo on korkea ja Mikronesia siirtyy pisteytystilaan; kuitenkin, jos lähetys on virheellinen, Mikronesia palaa takaisin näyttötilaan, kunnes lähetys on oikea.
Tämä tarkistustila tapahtuu suhteellisen nopeasti muihin verrattuna, koska se tapahtuu vain niin kauan kuin tarkistuspainiketta painetaan
Pistetilanne (101)
Koska sama arvo on korkea, lähetys oli oikea. Tässä tilassa pistemäärä kasvaa yhdellä ja käyttäjä luo uuden numeron syötettäväksi. Tämä uusi numero tuo meidät takaisin aloitustilaan, jossa käyttäjä vaihtaa jälleen kytkimiä.
Loppu tila (100)
Kun 60 sekunnin ajastin on kulunut umpeen, aikakatkaisutulo on korkea ja käyttäjä saavuttaa lopputilan, jossa lopputulos näytetään. Reset -tuloa painetaan ja FSM alkaa uudelleen aloitustilassa.
Tulot: Clk, ensimmäinen, alku, arvaus, yhtä suuri, aikakatkaisu
Lähtö: tila (3 bittiä)
Vaihe 3: Seitsemän segmentin näytön kartoittaminen
Seitsemän segmentin näyttö on keskeinen osa koko projektia, koska näytön kahta ensimmäistä numeroa käytetään satunnaislukugeneraattorin ulostulona, kun taas kaksi viimeistä numeroa ovat ajastin. Vaikka olemme toteuttaneet tästä esimerkin viimeisessä laboratoriossa sen suhteen, että näytöllä on numeroita, se näytettiin heksadesimaalina. Korjasimme tämän ongelman muuntimella ja kellonjakajalla, joka selitetään tarkemmin alla.
Näytössä näkyy kaikki 0, kunnes Mikronesia siirtyy pelitilaan; lopputilassa näytön pitäisi kuitenkin näyttää vain käyttäjän pisteet.
Koska käytämme seitsemän segmentin näytön kaikkia neljää numeroa, meidän on selattava jokainen anodi riittävän nopeasti 300 Hz: n taajuudella, jotta meidät havaitaan aina palaviksi.
Tulot: Clk, seitsemän segmenttiä
Lähdöt: katodit (7 bittiä), anodit (4 bittiä)
Vaihe 4: Vertailijan luominen
Tätä alimoduulia käytetään tarkistustilassa siinä, miten se vertaa 7 -bittistä binääritettyä arvausta todelliseen desimaaliarvoon.
Meillä oli if -lause, joka arvioi sekä panoksia että kahta lähtöä sen mukaan, onko sama arvo korkea vai matala. Niin tärkeä kuin tämä moduuli on, se on ylivoimaisesti yksi yksinkertaisimmista ohjelmista suunnitella tässä projektissa.
Tulot: kytkimet (8 bittiä), numero (8 bittiä)
Lähtö: EQ
Vaihe 5: Ajastimen asettaminen
Ajastimemme on lähinnä kaksi eri laskuria, jotka kasvavat eri tahtiin. Yksi laskuri "yhden" arvossa (seitsemän ensimmäisen segmentin näyttö) ja yksi "kymmenen" arvon laskuri (toinen numero seitsemän segmentin näytössä). Jokainen numero perustuu kellon nousevaan reunaan, ja kun laskuri saavuttaa 60 sekuntia, time_out on korkea ja peli päättyy ja palaa aloitustilaan.
Tulot: Clk, tila (3 bittiä), aloitus
Lähdöt: Virta (8 bittiä), aikakatkaisu
Vaihe 6: Pseudo -satunnaislukugeneraattorin suunnittelu
Toinen vaihtoehtoinen tapa nimenomaan tässä tapauksessa käytettävälle numeronmuodostajalle on toistolaskuri 0-99 (binäärinä), joka antaa lasketun numeron, kun tulo on korkea, koska tämä poistaisi tarpeen käyttää LFSR: ää.
Numero muuttuu sisäisen kellon jokaisesta nousevasta reunasta (10 nanosekuntia) ja käy läpi kaikki 100 numeroa yhdessä mikrosekunnissa. Aina kun käyttäjä haluaa uuden numeron numerogeneraattorista, se antaa numeron, jolla se oli, Vaikka tämä prosessi ei ole täysin satunnainen, todennäköisyys löytää asiaan liittyviä tuloksia tästä prosessista on riittävän pieni ollakseen näennäissatunnainen.
Tulot: Clk, muutos, yhtä suuri
Lähdöt: numero (8 bittiä)
Vaihe 7: Muuntimen luominen
Tarvittava komponentti on muunnin, jolla käytimme desimaalilukuja seitsemän segmentin näytössä alkuperäisen heksadesimaalin sijasta. Vaikka molemmat numerot perustuvat 7 -bittiseen binäärilukuun, loimme kokonaisen moduulin, joka on suunniteltu muuttamaan heksadesimaali desimaaliluvuksi.
Jos esimerkiksi pisteemme lopputulos olisi 0010001 (seitsemäntoista), seitsemän segmentin näytössä olisi heksadesimaaliluku 11 desimaaliluvun 17 sijasta.
Tulo: Numin (8 bittiä)
Lähtö: Numout (8 bittiä)
Vaihe 8: Kokoa kaikki yhteen pelimoduulissa
Komponenteissamme käytimme tarvittavia kytkimiä 0-6, jotta käyttäjä voi vaihtaa, ja kolme painiketta toimivat käyttäjän syöttöinä käynnistykseen, nollaus- ja arvaukseen. Seitsemän segmentin näyttö- ja kellokomponentit ovat myös komponentteja, jotka olemme tehneet aiemmista laboratorioista, mutta joita oli muutettava, jotta ne sopisivat tähän projektiin.
Jaamme tämän projektin kuuteen edellä esitettyyn moduuliin, jotta koko gizmo voidaan jakaa moniin työosiin, mutta tapa, jolla ne on kytketty, on melko monimutkainen ja näkyy liitteenä olevasta mustan laatikon kuvasta.
Pelin aikana 7 LED -valoa syttyy ilmoittamaan käyttäjälle, mikä kytkin käyttää, ja kun peli päättyy, ohjelmoimme myös LED -valot vilkkumaan
Tulot: kytkimet (8 bittiä), Clk, nollaus, käynnistys, arvaus
Lähdöt: katodit (7 bittiä), anodit (4 bittiä), LEDit (7 bittiä)
Vaihe 9: Lisäongelmia
Vaikka tässä pelissä käytetään vain seitsemää kytkintä, koodi on asettanut sen 8 -bittiseksi numeroksi. Teimme tämän, jotta meillä olisi kätevämpi vertailija, joka vertaisi näitä 8 bittiä satunnaislukugeneraattorista luomaamme 8 bitin numeroon.
Pisteet antoivat meille myös aluksi vähän ongelmia, koska asetimme sen nostamaan yhden pisteen, kun Mikronesia oli pisteytyksessä; sen sijaan tapahtui, että pisteet kasvoivat niin kauan kuin valtio oli päällä, mikä antoi meille kohtuuttoman korkean pistemäärän, jota emme voineet käsitellä. Korjasimme tämän lisäämällä pulssisignaalin, joka synkronoitiin kellon nousevan reunan kanssa, kuten koodissa vaiheessa 8 näkyy.
Lopuksi ajastimen vianetsintä vei paljon aikaa, koska se vääristäisi seitsemän segmentin näyttöä, kun sitä laskettiin alas, joten jouduimme muuttamaan sen laskemisesta 60: sta laskemiseen 0: sta.
Vaihe 10: Lähdetiedostot ja rajoitukset
Jos haluat mieluummin vetää lähdetiedostoistamme omien luomisen sijaan, tässä ne ovat. Myös rajoitustiedosto on mukana.
Suositeltava:
Binaarinen puumorse -dekooderi: 7 vaihetta (kuvilla)
Binaarinen puumorse-dekooderi: a. Artikkelit {font-size: 110,0%; fontin paino: lihavoitu; fontti-tyyli: kursivoitu; tekstin koristelu: ei mitään; taustaväri: punainen;} a. artikkelit: hover {background-color: black;} Tässä ohjeessa selitetään, kuinka Morse-koodi puretaan Arduino Uno R3.T -laitteella
DIY Arduino -binaarinen herätyskello: 14 vaihetta (kuvilla)
DIY Arduino Binary Herätyskello: Se on klassinen binaarikello jälleen! Mutta tällä kertaa vielä enemmän lisätoimintoja! Tässä ohjeessa näytän sinulle, kuinka rakentaa binäärinen herätyskello Arduinolla, joka voi näyttää sinulle paitsi ajan, myös päivämäärän, kuukauden, jopa ajastimen ja herätyksen kanssa
74HC393 Binaarinen laskuri: 4 vaihetta
74HC393 -binäärilaskuri: 74HC393 on laajalti käytetty ic -siru. Sen päätehtävä on binäärinen laskuri. Binäärilaskuri on samanlainen kuin vuosikymmenen laskuri, kuten tunnettu 4017 Johnson -laskuri, mutta 74HC393 -laskuri toimii hieman eri tavalla (kuten näet seuraavassa
Binaarinen työpöytäkello: 9 vaihetta (kuvilla)
Binaarinen työpöytäkello: Binaarikellot ovat mahtavia ja yksinomaan binaarin (digitaalisten laitteiden kieli) tuntevalle henkilölle. Jos olet tekninen kaveri, tämä outo kello on sinua varten. Joten tee yksi itse ja pidä aikasi salassa! Löydät paljon binaarista c
4 bitin binaarinen laskuri ylös/alas: 11 vaihetta
4 -bittinen binäärilaskuri ylös/alas: Laskin on 4 -bittinen binäärinen laskuri ylös/alas. Toisin sanoen tämä laskuri voi laskea 0-15 tai 15-0, koska se laskee joko ylös tai alas. Projekti on binäärinen laskuri, joka on valmistettu 4029-, 555- ja 4-10 mm: n LED-valolla pääasiassa kaksinkertaisella upotuksella