Tartalomjegyzék:
- 1. lépés: Az óraosztó beállítása
- 2. lépés: Véges állapotú gép (FSM) létrehozása
- 3. lépés: A hét szegmenses megjelenítés leképezése
- 4. lépés: Az összehasonlító létrehozása
- 5. lépés: Az időzítő beállítása
- 6. lépés: Az ál -véletlenszám -generátor tervezése
- 7. lépés: Konverter létrehozása
- 8. lépés: Mindent összerakni a játékmodulban
- 9. lépés: További problémák
- 10. lépés: Forrásfájlok és korlátozások
Videó: A bináris -decimális mérkőzés játék: 10 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ez az utasítás megmutatja a bináris -decimális illesztési játék létrehozásához szükséges folyamatot és modulokat. 60 másodpercen belül a felhasználók a hét szegmenses kijelzőn tetszőleges számú véletlenszerűen előállított tizedes számot lefordítják és binárisra írják be a kapcsolók átkapcsolásával és a találgatás gomb megnyomásával. A befejezés után megjelenik a végső pontszám, majd újraindul a lejátszás.
A bináris és a gyors reflexek megértése előnyös ahhoz, hogy jól teljesítsen, de a reset gomb rendelkezésre áll arra az esetre, ha azonnal újra akarja próbálni.
1. lépés: Az óraosztó beállítása
Ennek az egész projektnek a gerincét a gizmo összes részének megfelelő szinkronizálása adja. Véges állapotú gépünk a belső órát használja, de a hét szegmenses kijelzőnek és az időzítőnek az óra módosított változatát kell használnia.
Ez az "új óra" abból származik, hogy elosztja a belső órát a kívánt időtartammal, hogy elérje az egyes komponensekhez szükséges bizonyos frekvenciát. Ezt a korábbi laboratóriumokban is megtették, és tapasztalatból tudjuk, hogy az időzítő "egy" számjegye 0,1 Hz -re van állítva, a "tízes" pedig 1 Hz
Bemenetek: ClkIn, osztó (32 bit)
Kimenetek: ClkOut
2. lépés: Véges állapotú gép (FSM) létrehozása
Véges állapotú gépünkben úgy döntöttünk, hogy öt állapotra (Start, Display, Check, Score és End) lesz szükség öt bemenettel (start, reset, guess, egyenlő, timeout). Az állapotgépünk egyetlen kimenete egy 3 bites szám, amely azt jelzi, hogy a felhasználó milyen állapotban van (000, 001, 011, 101, 100) az alábbi állapotokhoz képest.
Ne feledje, hogy egy véges állapotú gép valójában nem hajtja végre az alábbi funkciókat, hanem csak azt jelzi, hogy a program milyen állapotban van és mi. Hogy valójában mi történik, azt az alább ismertetett felső modul határozza meg.
Kezdő állapot (000)
A Start állapot az a hely, ahol a felhasználó elkezdi, amíg az indítási bemenet magas lesz, ez az az állapot is, amely a reset gomb megnyomásakor érhető el.
Játékállapot (001)
A játék állapota a játék kezdete, ahol a véletlen szám generálódik, és a felhasználó átkapcsolja a kapcsolókat, hogy bemenetet hozzon létre. Miután megnyomta a találgatás gombot, a játék az Ellenőrzési állapotba kerül.
Ellenőrzési állapot (011)
Ebben az állapotban használják az összehasonlítót, amely összehasonlítja a felhasználó által megadott értékeket és a véletlenszerűen generált számokat. Ha a benyújtás helyes, az egyenlő érték magas, és az MSZÁ a pontszámállapotba kerül; ha azonban a benyújtás helytelen, az FSM visszatér a megjelenítési állapotba, amíg a benyújtás helyes.
Ez az ellenőrzési állapot viszonylag gyorsan megtörténik a többihez képest, mivel csak addig történik, amíg lenyomják az ellenőrző gombot
Pontszámállapot (101)
Mivel az egyenlő érték magas, a benyújtás helyes volt. Ebben az állapotban a pontszám értéke eggyel nő, és a felhasználó új számot generál. Ez az új szám visszavezet minket a kiindulási állapotba, ahol a felhasználó ismét átkapcsolja a kapcsolókat.
Végállapot (100)
A 60 másodperces időzítő letelte után az időkorlát bemenete magas lesz, és a felhasználó eléri a végállapotot, ahol a végső pontszám megjelenik. Ekkor megnyomja a reset bemenetet, és az FSM újrakezdi a Start állapotot.
Bemenetek: Clk, rst, start, guess, egyenlő, timeout
Kimenet: állapot (3 bit)
3. lépés: A hét szegmenses megjelenítés leképezése
A Hét szegmenses kijelző a teljes projekt kulcsfontosságú része, mivel a képernyő első két számjegye a véletlenszám -generátor kimenete, míg az utolsó két számjegy az időzítő. Bár az elmúlt laboratóriumban példát is alkalmaztunk abból a szempontból, hogy számjegyek vannak a képernyőn, hexadecimális formában jelenítettük meg. A probléma megoldásához átalakítót és óraosztót használtunk, amelyeket az alábbiakban ismertetünk.
A kijelző mind a 0 -t mutatja, amíg az FSM játékállapotba nem lép; a végállapotban azonban a kijelzőn csak a felhasználó pontszámát kell megjeleníteni.
Mivel a hét szegmenses kijelző mind a négy számjegyét használjuk, 300 Hz -en kellő gyorsasággal kell végiglapoznunk minden anódot, hogy mindig világíthassunk.
Bemenetek: Clk, hét szegmens
Kimenetek: katódok (7 bit), anódok (4 bit)
4. lépés: Az összehasonlító létrehozása
Ez az almodul az Ellenőrzési állapotban használatos, mivel összehasonlítja a 7 bites binárisan bevitt találgatást a tényleges tizedes értékkel.
Volt egy if állításunk, amely mind a bemeneteket, mind a két kimenetet értékelte attól függően, hogy az azonos érték magas vagy alacsony. Bármennyire fontos is ez a modul, messze az egyik legegyszerűbb program a projektben.
Bemenetek: kapcsolók (8 bit), szám (8 bit)
Kimenet: EQ
5. lépés: Az időzítő beállítása
Az időzítőnk lényegében két különböző számláló, amelyek eltérő ütemben nőnek. Egy számláló a "saját" értékben (az első hét szegmenses kijelző) és egy számláló a "tíz" értékben (második számjegy a hét szegmenses kijelzőn). Minden számjegy az óra emelkedő szélén alapul, és amint a számláló eléri a 60 másodpercet, a time_out magas lesz, és a játék véget ér, és visszatér a kezdő állapotba.
Bemenetek: Clk, állapot (3 bit), start
Kimenetek: áram (8 bit), időtúllépés
6. lépés: Az ál -véletlenszám -generátor tervezése
Egy másik alternatív módszer a számgenerátor számára kifejezetten erre az esetre, ha van egy ismétlődő számlálója 0-99 között (bináris), amely a bemeneti számot adja ki, ha a bemenet magas, mivel ez kiküszöböli az LFSR használatát.
A szám megváltoztatja a belső óra minden emelkedő élét (10 nano-másodperc), és egy mikroszekundum alatt végigmegy mind a 100 számon. Amikor a felhasználó új számot akar a számgenerátorból, akkor kiadja azt a számot, amelyen volt, Bár ez a folyamat nem teljesen véletlenszerű, a folyamathoz kapcsolódó kimenetek megtalálásának valószínűsége elég kicsi ahhoz, hogy ál-véletlenszerű legyen.
Bemenetek: Clk, changenum, egyenlő
Kimenetek: szám (8 bit)
7. lépés: Konverter létrehozása
Szükséges összetevő az Átalakító, amelyet az eredeti hexadecimális helyett tizedes számok megjelenítésére használtunk a hét szegmenses kijelzőn. Bár mindkét szám egy 7 bites bináris számra épül, létrehoztunk egy teljes modult, amely a hexadecimális tizedesre konvertálására lett kijelölve.
Például, ha a végső eredményünk a pontszámra 0010001 (tizenhét) volt, akkor a hét szegmenses kijelző a hexadecimális értéket 11 -nel jeleníti meg a 17 -es tizedes szám helyett.
Bemenet: Numin (8 bit)
Kimenet: Szám (8 bit)
8. lépés: Mindent összerakni a játékmodulban
Alkatrészeinkhez a szükséges kapcsolókat 0-6 használtuk, hogy a felhasználó válthasson, a három gombbal pedig az indítás, a visszaállítás és a találgatás felhasználói bemeneteiként kell eljárni. A hét szegmenses kijelző és óra alkatrészek szintén olyan elemek, amelyeket korábbi laboratóriumokból készítettünk, de módosítanunk kellett, hogy illeszkedjenek ehhez a projekthez.
Ezt a projektet a fent bemutatott hat modulra osztottuk, hogy a teljes gizmo -t sok működő részre bonthassuk, azonban a csatlakoztatásuk módja meglehetősen bonyolult, és a mellékelt fekete dobozról látható.
Amíg a játék zajlik, 7 LED világít, hogy értesítse a felhasználót, hogy melyik kapcsolót használja, és amikor a játék véget ér, a LED -eket is villogásra programoztuk
Bemenetek: kapcsolók (8 bit), Clk, reset, start, guess
Kimenetek: katódok (7 bit), anódok (4 bit), LED -ek (7 bit)
9. lépés: További problémák
Bár ebben a játékban csak hét kapcsolót használnak, a kód 8 bites számként van beállítva. Ezt azért tettük, hogy kényelmesebb komparátorunk legyen, amely összehasonlítja ezt a 8 bitet a véletlenszám -generátorból generált 8 bites számmal.
A pontszám eleinte némi gondot is okozott nekünk, mert azt állítottuk, hogy növeljük az egy pontot, amikor az MSZÁ pontszerű volt; helyette azonban az történt, hogy az állapot folyamatosan nőtt, amíg az állam működött, ésszerűtlenül magas pontszámot kaptunk, amellyel nem tudtunk megbirkózni. Ezt úgy javítottuk ki, hogy hozzáadtunk egy impulzus jelet, amely szinkronban volt az óra emelkedő élével, amint az a 8. lépésben látható kódban látható.
Végül az időzítőnek sok időbe telt a hibakeresés, mivel visszaszámláláskor torzítja a hét szegmenses kijelzőnket, így a 60 -as visszaszámlálásról 0 -ról felfelé kellett változtatnunk.
10. lépés: Forrásfájlok és korlátozások
Ha inkább saját forrás létrehozása helyett a forrásfájljainkból húz, akkor itt vannak. Ezenkívül a kényszerfájl is benne van.
Ajánlott:
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: 22 lépés (képekkel)
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: A kockajátéknak különböző módszerei vannak 1) Hagyományos játék fa vagy sárgaréz kockákkal. 2) Játssz mobilon vagy PC -n a mobil vagy a PC által véletlenszerűen létrehozott kockával. fizikailag játszani a kockával, és mozgatni az érmét a mobilon vagy a számítógépen
Simon játék - szórakoztató játék!: 5 lépés
Simon Game - Szórakoztató játék !: Referencia: IttHosszú hétvége után valóban keményen kell próbálnia elvégezni az összes feladatot és munkát, amelyekért Ön felelős. Itt az ideje, hogy edzjük az agyunkat, nem? Az unalmas és értelmetlen játékok mellett van egy Simon Game nevű játék
Minion Cubecraft játék (zseblámpa játék): 4 lépés
Minion Cubecraft játék (A zseblámpa játéka): Régóta fáklyát akartam készíteni, hogy sötétben is használhassam, de az ötlet, hogy csak egy hengeres alakú tárgy legyen, csak be-ki kapcsolóval, ellenállt, hogy ne csináljam. Túl mainstream volt. Aztán egy napon a bátyám hozott egy kis NYÁK -ot
Bináris játék: 9 lépés (képekkel)
Bináris játék: Ezt a játékot a Tinkercad Circuits rendszeren hoztam létre, hogy megtanuljam a bináris számokat. https://www.tinkercad.com/things/erDquXcpyW8Ha követni szeretné ezt az útmutatót, és saját maga szeretné elkészíteni, a fájlok és a kód megtalálható a githubomon a https://github.com/kee
Bináris kapcsoló játék: 6 lépés
Bináris kapcsolójáték: Ben Heck hexadecimális játékának ihlette Végül ezzel játszom az osztályban, hogy ébren tartsam magam. A képernyőn lévő véletlen dénár (0-255) vagy hexadecimális (0-ff) értékeket binárisra konvertálod, majd minket