PP - Návrh MIT aplikace: Porovnání verzí

Z MediaWiki SPŠ a VOŠ Písek
Skočit na navigaci Skočit na vyhledávání
Bez shrnutí editace
Bez shrnutí editace
 
(Není zobrazeno 8 mezilehlých verzí od stejného uživatele.)
Řádek 17: Řádek 17:
#* Blokové schéma (např.: kresleno v [[ProfiCAD]]u)
#* Blokové schéma (např.: kresleno v [[ProfiCAD]]u)
#* 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.)
#* 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 s barevnou syntaxí (nejlépe [[MCU-color-syntax|takto]] )(v krajním případě screen obrazovky)
#* 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ě.
# Odevzdává v termínu elektronicky do N:/......../janousek/temp/trida_prijmeni_jmeno_ID.pdf. 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
#* dokumentace ve formátu: Trida_Prijmeni_Jmeno_MCU_Nazev.pdf 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
#* 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
#* 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
Řádek 33: Řádek 33:
Výkonnostní stupně:
Výkonnostní stupně:


minimum:
minimum: (dostatečně)
* V časové smyčce použity registry
* Použití alespoň 1ks tlačítka + více LED (display)
* Použití tlačítka TL1 k spuštění programu. ¨
* V časové smyčce použity registry (verze pro simulaci, verze pro reálný test)


dále je možné využít:
dále je možné využít: (= chci lepší známku)
* Použito nepřímé adresování
* čtení dat z RAM (Použito nepřímé adresování)
* čtení dat z RAM
* čtení dat z ROM (DPTR)
* čtení dat z ROM  
* V časové smyčce použit čítač/časovač  
* 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
* Využito přerušení k zastavení opakujícího cyklu
* Ovládání složitějších systémů (MPX diplay, ser. display, LCD......)


bonusy: vícemístný display, LCD, motory, čidlo teploty
bonusy: vícemístný display, LCD, motory, čidlo teploty
|}
|}




Řádek 221: Řádek 222:


https://docs.google.com/spreadsheets/d/1ykGv2NkAL2MeuU935A1K4tMGkzLxwVsejpexPm3S_zA/edit?resourcekey#gid=1260219589&range=C:D
https://docs.google.com/spreadsheets/d/1ykGv2NkAL2MeuU935A1K4tMGkzLxwVsejpexPm3S_zA/edit?resourcekey#gid=1260219589&range=C:D
---

Aktuální verze z 7. 6. 2025, 14:12

Postup vypracování:
  1. Navrhněte MIT aplikaci dle zadání níže nebo 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í)
  2. Navrhněte blokové schéma. Použijte např.: ProfiCAD, mspaint apod.
  3. Napište program v asm AC3 pro 8051 např. v IDE MCU 8051 IDE alt. EDSIM51, B3 pro ATmega328P v IDE např. Microchip Studio for AVR® (AtmelStudio), wokwi Atmel Studiu
  4. Uložte *.asm (*.a51, apod.)
  5. Řešení odsimulujte (vygenerujte *.hex) a předveďte při cvičení. Alt. natočte video s komentářem.
  6. Zpracujte dokumentaci Předloha. DOC (PDF) bude obsahovat
    • Vyplněnou hlavičku
    • Zadání
    • Popis funkce
    • Blokové schéma (např.: kresleno v ProfiCADu)
    • Schéma (AC3 např. kresleno v Eagle, B3 např. v wokwi, Tinkercadu, Fritzingu) apod.)
    • Zdrojový kód s barevnou syntaxí (nejlépe takto )(v krajním případě screen obrazovky) BEZ KOMENTÁŘŮ
  7. Odevzdává v termínu elektronicky do N:/......../janousek/temp/trida_prijmeni_jmeno_ID.pdf. Po termínu písemně.
    • dokumentace ve formátu: Trida_Prijmeni_Jmeno_MCU_Nazev.pdf 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
Výkonostní stupně

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


Zadání úloh z MIT3r

b = v2019

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:

  • po stlačení tlačítka 1 se svítící LED posune o jedno místo vpravo
  • po stlačení tlačítka 2 se svítící LED posune o jedno místo vlevo

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:

  1. bude-li číslo obsahovat sudý počet jedniček, zobrazí se na 7segmentovce znak S
  2. bude-li číslo obsahovat lichý počet jedniček, zobrazí se na 7segmentovce znak L
  3. bude-li číslo nulové, zobrazí se na 7segmentovce znak 0

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:

  1. nebude-li číslo obsahovat žádnou jedničku, zobrazí se na 7segmentovce číslice 0
  2. bude-li číslo obsahovat jednu jedničku, zobrazí se na 7segmentovce číslice 1
  3. bude-li číslo obsahovat dvě jedničky, zobrazí se na 7segmentovce číslice 2
  4. :
  5. bude-li číslo obsahovat osm jedniček, zobrazí se na 7segmentovce číslice 8

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:

  1. bude-li přečtené číslo < 4, bude na 7segmentovce blikat dolní vodorovný segment
  2. bude-li přečtené číslo ≥ 4 a ≤ 8, bude na 7segmentovce blikat střední vodorovný segment
  3. bude-li přečtené číslo > 8, bude na 7segmentovce blikat horní vodorovný segment

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í.

---

c = v2025


1c – Napište a odlaďte program, který bude po stisku tlačítka měnit směr "běžícího hada" na osmi LED diodách (směr se střídá mezi doprava a doleva).

3c – Napište a odlaďte program, který bude zobrazovat čítač na dvoumístné 7segmentovce. Po stisku tlačítka se čítač zvýší o 5. Po dosažení hodnoty 99 se začne opět od 0.

4c – Napište a odlaďte program, který bude načítat číslo zadané DIP přepínači a podle této hodnoty rozsvítí odpovídající počet LED diod (např. hodnota 5 = pět svítících LED zleva).

6c – Napište a odlaďte program, který bude zobrazovat na LED diodách Grayův kód pro hodnotu zadanou DIP přepínači.

7c – Napište a odlaďte program, který bude každé dvě sekundy měnit vzor zobrazený na LED matici podle předem dané sady obrázků.

9c – Napište a odlaďte program, který po stisknutí tlačítka generuje na LED výstupu náhodnou hodnotu (simulace hodu kostkou, ale v binárním tvaru).

11c – Napište a odlaďte program, který na 7segmentovce zobrazuje časovač v sekundách od 0 do 9, následně se vynuluje a cyklus opakuje. Čas odměřujte pomocí přerušení od časovače.

36c – Napište a odlaďte program, který bude řídit 3 režimy blikání osmi LED diod. Mezi režimy se bude přepínat pomocí dvou tlačítek (jedno pro přepnutí vpřed, druhé vzad). Každý režim bude mít vlastní efekt (např. běžící had, střídavé blikání, simultánní rozsvícení z krajů do středu).

37c – Napište a odlaďte program, který bude řídit krokový motor. Pomocí dvou tlačítek bude možné měnit směr otáčení a pomocí třetího tlačítka se motor zastaví/spustí. Rychlost otáčení bude řízena DIP přepínačem (3 bity).

38c – Napište a odlaďte program, který bude zobrazovat binární odpočet od zadané hodnoty (nastavené DIP přepínačem) na LED diodách. Odpočet bude spuštěn tlačítkem a bude probíhat každou sekundu, až do nuly. Po dosažení nuly začnou všechny LED blikat.

39c – Napište a odlaďte program, který bude řídit simulaci semaforu pro křižovatku (dvě směry: hlavní a vedlejší). Použijte 6 LED (červená, oranžová, zelená pro každý směr) a dbejte na správné časování. Tlačítkem lze simulovat požadavek chodce, který po určitém čase přepne semafor.

40c – Napište a odlaďte program, který pomocí čtyř tlačítek ovládá směr (vpřed, vzad, vlevo, vpravo) a rychlost (pomocí DIP přepínače) otáčení krokového motoru. LED indikují aktuální směr.

41c – Napište a odlaďte program, který bude na LED zobrazovat binární animaci synchronizovanou s čítačem impulsů z externího zdroje (přes T0). Animace se mění podle počtu impulsů (např. každých 10 změna fáze animace).

42c – Napište a odlaďte program, který bude zobrazovat zadané číslo (pomocí klávesnice 4x4) na dvojité 7segmentovce a zároveň umožní inkrementaci a dekrementaci čísla pomocí dvou samostatných tlačítek.

43c – Napište a odlaďte program, který podle kombinace přepínačů spustí jeden ze čtyř různých efektů na LED pásu (efekty jako posun zleva, zprava, střídání, pulzace). Přepnutí efektu je možné kdykoliv.

---


edit

Archiv


Vzory:

A3_Novak_Jan_8051_02


Blokové schéma v ProfiCADu

Schéma zapojení v Eagle

Předpřipravené schéma (stáhnout a pak spustit v Eagle)

ATM80


alt. schéma v TinkerCADu

Nabízený SW

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

8051 s LED a DIP


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í

MIT3r

8051

ProfiCAD

Základy programování v 8051

Vývoj_MIT_aplikace

námět: ing. Šindelář Petr

zpracoval: JA

Blokové schéma pro B3


https://docs.google.com/spreadsheets/d/1ykGv2NkAL2MeuU935A1K4tMGkzLxwVsejpexPm3S_zA/edit?resourcekey#gid=1260219589&range=C:D


---