PP - Návrh MIT aplikace: Porovnání verzí
Bez shrnutí editace |
|||
(Není zobrazeno 34 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
[[Soubor:PovinnaPrace_NavrhMIT_aplikace.png|left|link=PP_-_Návrh_MIT_aplikace]] | |||
{| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 40em" | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 40em" | ||
| colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Postup vypracování: ''''' | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Postup vypracování: ''''' | ||
Řádek 4: | Řádek 6: | ||
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
| | | | ||
# Navrhněte MIT aplikaci dle zadání níže | # Navrhněte MIT aplikaci dle zadání níže nebo [https://www.google.com/search?q=8051+ciurcit&tbm=isch&ved=2ahUKEwih9vGYgpn4AhVVP-wKHbzDC_oQ2-cCegQIABAA&oq=8051+ciurcit&gs_lcp=CgNpbWcQAzIECCMQJ1CwEViwEWCCGGgAcAB4AIABYIgBpQGSAQEymAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=jgyeYqH3KtX-sAe8h6_QDw&bih=704&biw=1468&rlz=1C1PRFI_enCZ905CZ905 zde]. Aplikace musí obsahovat alespoň jeden vstupní prvek (tlačítko, klívesnice apod.) a jeden výstupní (LED, 7segment, DC motor, LCD.....) (náročnost přizpůsobte poptávané známce na vysvědčení) | ||
# | # Navrhněte blokové schéma. Použijte např.: [[ProfiCAD]], [https://jspaint.app/#local:b4be2de210fac mspaint] apod. | ||
# Napište program v asm | # Napište program v asm AC3 pro [[8051]] např. v IDE [[MCU 8051 IDE]] alt. [http://www.edsim51.com/ EDSIM51], B3 pro [[Arduino|ATmega328P]] v IDE např. [https://www.microchip.com/en-us/tools-resources/develop/microchip-studio Microchip Studio for AVR® (AtmelStudio)], [https://wokwi.com/projects/362336146934483969 wokwi] [https://www.cartagena99.com/recursos/alumnos/apuntes/A1a_practice_Fisrt_Arduino_assembler.pdf Atmel Studiu] | ||
# Uložte *.asm (*.a51, apod.) | # Uložte *.asm (*.a51, apod.) | ||
# Řešení odsimulujte ( | # Řešení odsimulujte (vygenerujte *.hex) a předveďte při cvičení. Alt. natočte video s komentářem. | ||
# Zpracujte dokumentaci [[soubor:doc.gif]] [[:Media:Trida_PoradoveCislo_Prijmeni_Jmeno_ID_Nazev.doc|Předloha]] | # Zpracujte dokumentaci [[soubor:doc.gif]] [[:Media:Trida_PoradoveCislo_Prijmeni_Jmeno_ID_Nazev.doc|Předloha]]. DOC (PDF) bude obsahovat | ||
#* Vyplněnou hlavičku | |||
#* | #* Zadání | ||
#* Zdrojový kód s barevnou syntaxí (screen) | #* Popis funkce | ||
# Odevzdává | #* Blokové schéma (např.: kresleno v [[ProfiCAD]]u) | ||
#* dokumentace ve formátu: | #* Schéma (AC3 např. kresleno v [[Eagle]], B3 např. v [https://www.google.com/search?q=Wokwi+arduino&rlz=1C1PRFI_enCZ970CZ970&sxsrf=APwXEddSRhj9bZFwkEF5kkTNmwFk_Az4ug:1684759241488&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiJt_ug-Yj_AhW8gP0HHaa0Cr8Q_AUoA3oECAEQBQ&biw=1858&bih=977&dpr=1 wokwi], [[Tinkercad]]u, [[Fritzing]]u) apod.) | ||
#* zdrojový kód ve formátu: | #* Zdrojový kód s barevnou syntaxí (nejlépe [[MCU-color-syntax|takto]] )(v krajním případě screen obrazovky) BEZ KOMENTÁŘŮ | ||
# Odevzdává v termínu elektronicky do Bakalářů. Po termínu písemně. | |||
#* dokumentace ve formátu: Trida_Prijmeni_Jmeno_MCU_Nazev.pdf (doc) např: A3_Novak_Jan_8051_kostka.pdf, B3_Novak_Jan_ATmega328_krizovatka.pdf | |||
#* zdrojový kód ve formátu: Trida_Prijmeni_Jmeno_MCU_Nazev.txt např: A3_Novak_Jan_8051_kostka.txt | |||
#* v případě nemožnosti předvedení ve škole komentované video ve formátu: Trida_Prijmeni_Jmeno_MCU_nazev.mp4 např: A3_Novak_Jan_8051_kostka.mp4 | |||
|} | |} | ||
{| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 40em" | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 40em" | ||
| colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | ''''' | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Výkonostní stupně''''' | ||
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
| | | | ||
Předpokladem je naprogramovaná HW aplikace a odevzdaná dokumentace. | |||
Výkonnostní stupně: | |||
minimum: (dostatečně) | |||
* Použití alespoň 1ks tlačítka + více LED (display) | |||
* V časové smyčce použity registry (verze pro simulaci, verze pro reálný test) | |||
dále je možné využít: (= chci lepší známku) | |||
* čtení dat z RAM (Použito nepřímé adresování) | |||
* čtení dat z ROM (DPTR) | |||
* V časové smyčce použit čítač/časovač | |||
* Ovládání složitějších systémů (MPX diplay, ser. display, MATRIX...) | |||
* Ovládání ještě složitějších systémů (LCD, keyboard...) | |||
* Využito přerušení k zastavení opakujícího cyklu | |||
bonusy: vícemístný display, LCD, motory, čidlo teploty | |||
|} | |} | ||
{| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 40em" | |||
| colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Zadání úloh z MIT3r ''''' | |||
|- style="vertical-align: top;" | |||
| | |||
{{Šablona:zadani_uloh_z_MIT_v2019}} | |||
|} | |||
'''Vzory:''' | '''Vzory:''' | ||
Řádek 37: | Řádek 68: | ||
[[Soubor:MCU-blok-schema-06.png]] | [[Soubor:MCU-blok-schema-06.png]] | ||
=== Schéma zapojení === | === Schéma zapojení v [[Eagle]]=== | ||
[[Soubor:Icon-eagle.jpg]] [[:Media:Eagel - vyber soucastek.sch|Předpřipravené schéma]] (stáhnout a pak spustit v Eagle) | |||
[[Soubor:89S51-sch.png|550px|[[ATM80]]]] | [[Soubor:89S51-sch.png|550px|[[ATM80]]]] | ||
[[Soubor:Atmega328-sch.png|550px|]] | |||
<gallery> | <gallery> | ||
Řádek 48: | Řádek 82: | ||
Soubor:89S2051-sch-uni.png|HW: [[ATM89]] | Soubor:89S2051-sch-uni.png|HW: [[ATM89]] | ||
Soubor:ATM93_1-sch.png|HW: [[ATM93]] | Soubor:ATM93_1-sch.png|HW: [[ATM93]] | ||
Soubor:Multifunctional Expansion Board.png|[[:Soubor:MFEB-schematic.png|schéma]] [[:Soubor:MFEB-example.pdf|příklady]] | |||
</gallery> | |||
=== alt. schéma v [https://www.tinkercad.com TinkerCADu]=== | |||
<gallery> | |||
Soubor:.png|HW: [[ATM13]] | |||
Soubor:.png|HW: [[VYV22]] | |||
Soubor:.png|HW: [[ATM75]] | |||
</gallery> | </gallery> | ||
Řádek 55: | Řádek 98: | ||
Soubor:MCU-8051-IDE-screen.png|IDE: [[MCU 8051 IDE]] pro vývoj aplikací v asm/C | Soubor:MCU-8051-IDE-screen.png|IDE: [[MCU 8051 IDE]] pro vývoj aplikací v asm/C | ||
Soubor:EDSIM-screen.png|IDE: [http://www.edsim51.com/ EdSim51] pro vývoj aplikací v asm/C | Soubor:EDSIM-screen.png|IDE: [http://www.edsim51.com/ EdSim51] pro vývoj aplikací v asm/C | ||
Soubor:Atmel-studio.png|IDE: [https://www.google.com/search?q=atmel+studio&rlz=1C1PRFI_enCZ905CZ905&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjd5aTqpuLwAhUYt6QKHWETCMgQ_AUoAXoECAEQAw&biw=1920&bih=947 Atmel Studio] | |||
</gallery> | </gallery> | ||
== Ukázka == | == Ukázka == | ||
Řádek 175: | Řádek 218: | ||
[[Soubor:blok_schema_B3.png|600px]] | [[Soubor:blok_schema_B3.png|600px]] | ||
https://docs.google.com/spreadsheets/d/1ykGv2NkAL2MeuU935A1K4tMGkzLxwVsejpexPm3S_zA/edit?resourcekey#gid=1260219589&range=C:D |
Aktuální verze z 16. 4. 2024, 08:44
Postup vypracování: | |
|
Výkonostní stupně | |
Předpokladem je naprogramovaná HW aplikace a odevzdaná dokumentace. Výkonnostní stupně: minimum: (dostatečně)
dále je možné využít: (= chci lepší známku)
bonusy: vícemístný display, LCD, motory, čidlo teploty |
Zadání úloh z MIT3r | |
2b - Napište a odlaďte program, který zajistí změnu LED dle obrázku. 5b - Napište a odlaďte program, který zajistí postupné rozsvěcování a zhasínání diod podle následujícího obrázku. 8b - Napište a odlaďte program, který bude počítat počet stisků tlačítka a zobrazovat jej na 7segmentovce. 10b - Napište a odlaďte program, který bude realizovat “běžícího hada“ na osmi LED diodách podle následujícího obrázku. Rychlost se bude postupně zvyšovat a zase snižovat. 12 - Napište a odlaďte program, který bude realizovat posun svítící diody podle stisku tlačítek:
13a - Napište a odlaďte program, který bude počítat počet stisků tlačítka a zobrazovat jej na LED diodách jako binární číslo. Maximální dekadická hodnota bude 30. 14a - Napište a odlaďte program, který zajistí střídavé blikání diod: po určitou dobu bliká první dioda, po chvilce LED1 přestane a začne blikat s dvojnásobnou frekvencí druhá dioda. Děj se bude neustále opakovat. 15a - Napište a odlaďte program, který bude zobrazovat vaše iniciály na LEDMatrix podobně jako na následujícího obrázku. 16a - Napište a odlaďte program, který podle 4-bitové binární kombinace zadané tlačítky, zobrazí na 7segmentovce znak 0 až F 17a - Napište a odlaďte program, který bude počítat a zobrazovat na 7segmentovce počet přijatých impulsů na vstup P3.4 (T0) z vnějšího zdroje signálu (po 9 naskočí 0 atd.). 18a - Na jednotlivé vývody brány jsou připojeny LED diody, na vstup T0 brány P3 jsou přiváděny impulsy z vnějšího zdroje signálu. Napište a odlaďte program, který bude počítat a zobrazovat na LED diodách v kódu BCD počet přijatých impulsů. 19a - Napište a odlaďte program, který bude snímat binární číslo zadané DIP přepínači a vyhodnocovat je:
20 - Napište a odlaďte program, který bude snímat binární číslo zadané DIP přepínači a vyhodnocovat počet jedniček v něm:
21a - Napište a odlaďte program, který bude řídit frekvenci blikání LED diody binárním číslem zadaným dolními třemi bity DIP přepínače. Dle zadání čísla 0 až 7D, bude dioda blikat vždy dvojnásobnou rychlostí. 22 - Napište a odlaďte program, který bude na MPX zobrazovací jednotce stejný efekt jako následující obrázek. 23 - Napište a odlaďte program, který bude realizovat osmibitový dekadický čítač inkrementující nebo dekrementující. Výstup čítače zobrazujte na osmici LED diod. Tlačítky 1 a 2 je možné přepínat čítač mezi vzestupným a sestupným. 24a - Napište a odlaďte program, který bude na LED zobrazovat kód Johnsonův a to dle zadané binární kombinace přiváděná v kódu BCD na tlačítka (převodník kódu BCD na Johnsonův). 25a - Napište a odlaďte program, který bude na dvoumístné zobrazovací jednotce postupně zobrazovat čísla 0 - FF 26a - Napište a odlaďte program, který bude generovat na LED výsledný efekt podle obrázku. Časové zpoždění řešte pomocí přerušení od 27a - Napište a odlaďte program, který vždy při zadání nového binárního čísla v dolní čtveřici bitů DIP přepínače (na horní čtveřici nezáleží) rozběhne stejnosměrný motorek (simulováno dvěma LED) na dobu odpovídající zadanému číslu x konstanta (např. 0 = stojí, 1 = točí 1 sekundu 2 = točí 2 sekundy atd.). 28a - Napište a odlaďte program realizující programový osmibitový binární čítač. Čítač bude inkrementovat při každém stisku tlačítka Tl1 a dekrementovat při stisku tlačítka Tl2 Výstup čítače zobrazujte na 7segmentovce. 29a - Napište a odlaďte program, který bude opakovaně číst binární číslo zadané DIP přepínači a porovnávat je s mezemi:
Blikání řešte pomocí DJNZ 30a - Napište a odlaďte program, který bude realizovat hrací kostku (7segmentovka) 31 - Napište a odlaďte program, který zajistí po každém stisku tlačítka blikání další diody připojené na následujícím vývodu portu. Např.: bliká-li dioda připojená na P1.0, bude po stisku tlačítka blikat dioda připojená na P1.1 atd. (po blikání diody připojené na P1.7 bude po stisku tlačítka opět blikat dioda na P1.0). Zpoždění řešte pomocí čítače-časovače. 32 - Napište a odlaďte program, který bude na LCD zobrazovat nápis SPŠ a VOŠ Pisek 33 - Napište a odlaďte program, který bude na 7segmentovce ukazovat aktuálně aktivovanou číslici na klávesnici 4 x x4. 34 - Napište a odlaďte program, který bude zobrazovat vaše efekty dle následujícího obrázku. 35 - Na portu P0 máme zapojený LED display a k portu P1 druhý LED display. Napište program, který bude na jednou z LED displayů jednotky a druhý desítky. Zobrazované hodnoty budou od 0 do 99 stále se opakující. |
Vzory:
Blokové schéma v ProfiCADu
Schéma zapojení v Eagle
Předpřipravené schéma (stáhnout a pak spustit v Eagle)
alt. schéma v TinkerCADu
Nabízený SW
-
IDE: MCU 8051 IDE pro vývoj aplikací v asm/C
-
IDE: EdSim51 pro vývoj aplikací v asm/C
-
IDE: Atmel Studio
Ukázka
Zadání:
K portu P1 mikropočítače je připojen modul 8xLED, k portu P3 modul 8xDIP. Napište a odlaďte program,
1) který zajistí blikání té diody, která bude vybrána dolními třemi bity přepínače (na dalších bitech nezáleží):
000 …………… bliká dioda na P1.0 001 …………… bliká dioda na P1.1 : 111 …………… bliká dioda na P1.7
2) vybraná dioda bude svítit 0,8 s a zhasnuta bude 0,5 s.
Blokové schéma
Výpis programu s komentáři
1)
; **************************************************************
; blikani diody vybrane dolnimi tremi bity na DIP prepinaci
; **************************************************************
org 0
;---------------------------------------------------------------
start: mov a,p3 ; nacteni stavu prepinace
anl a,#00000111b ; maskovani nepouzivanych bitu
prevod: mov b,a ; uschovani prectene informace
mov r0,a ; poradi blikajici diody do r0
inc r0 ; v r0 pocet rotaci
mov a,#10000000b ; pocatecni byte do akumulatoru
;---------------------------------------------------------------
rotuj: rl a ; prevod bin. kodu na kod 1 z 8
djnz r0,rotuj
mov r7,a ; uschovani kodu 1 z 8 do r7
;---------------------------------------------------------------
rozsv: mov a,r7
xrl p1,a ; rozsviceni odpovidajici diody
mov a,p3 ; nove nacteni stavu prepinace
anl a,#00000111b ; maskovani
cjne a,b,prevod ; zadana nova kombinace? - ano, novy prevod
sjmp rozsv ; ne, rozsviceni teze diody
;--------------------------------------------------------------
end
2)
; **************************************************************
; blikani diody vybrane dolnimi tremi bity na DIP prepinaci
; **************************************************************
org 0
;---------------------------------------------------------------
start: mov a,p3 ; nacteni stavu prepinace
anl a,#00000111b ; maskovani nepouzivanych bitu
prevod: mov b,a ; uschovani prectene informace
mov r0,a ; poradi blikajici diody do r0
inc r0 ; v r0 pocet rotaci
mov a,#10000000b ; pocatecni byte do akumulatoru
;---------------------------------------------------------------
rotuj: rl a ; prevod bin. kodu na kod 1 z 8
djnz r0,rotuj
mov r7,a ; uschovani kodu 1 z 8 do r7
;---------------------------------------------------------------
rozsv: mov a,r7
xrl p1,a ; rozsviceni odpovidajici diody
acall z_08s
orl p1,a ; zhasnuti diody
acall z_05s
mov a,p3 ; nove nacteni stavu prepinace
anl a,#00000111b ; maskovani
cjne a,b,prevod ; zadana nova kombinace? - ano, novy prevod
sjmp rozsv ; ne, rozsviceni teze diody
;--------------------------------------------------------------
z_08s: mov r3,#8 ; zpozdovaci podprogram
sjmp cek1
z_05s: mov r3,#5
cek1: mov r2,#200
cek2: mov r1,#250
djnz r1,$
djnz r2,cek2
djnz r3,cek1
ret
;--------------------------------------------------------------
end
Simulace
Zdroj informací
námět: ing. Šindelář Petr
zpracoval: JA