
Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:06

8051 (tiež známy ako MCS-51) je dizajn MCU z 80-tych rokov, ktorý je dnes stále populárny. Moderné mikrokontroléry kompatibilné s 8051 sú k dispozícii od viacerých dodávateľov, všetkých tvarov a veľkostí a so širokou škálou periférií. V tomto návode sa pozrieme na MCU AT89C2051 od spoločnosti Atmel.
AT89C2051 je malý (2 kB Flash, 128 bajt RAM), lacný (~ 1,40 USD za čip) mikrokontrolér. Vlastnosti:
- Prevádzka 2,7-6V
- 15 I/O riadkov
- 2 časovače (16 bitov)
- Interné a externé prerušenia
- UART
- Analógový komparátor na čipe
- Až 2MIPS s hodinami 24 MHz
Krok 1: Požiadavky

Požiadavky:
- Linux PC (požadovaný softvér: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Čip AT89C2051 (balík DIP20)
- 20-kolíková zásuvka ZIF
- Optočlen (najlepšie na výstupe MOSFET)
- Prototypový štít Arduino
- Napájanie 12V
- Napájanie 5V
- 16MHz kryštálový oscilátor
- 2x 30pF kondenzátor
- Kondenzátor 100nF
- Dióda (napr.: 1N400X)
- Rezistory (1K, 3K3)
- Protoboard
- Svetre
- Medený drôt
Skontrolujte požadovaný softvér:
ktorý python3
ktoré robia ktoré sdcc ktoré git
Krok 2: Zostavenie programátora



Táto časť bude stručná, pretože som pred časom postavil svoj programovací štít. Prikladám schému a obrázky zostavenej dosky. PDF schému je možné nájsť v úložisku.
Budete musieť naprogramovať dosku programátora:
1. Klonujte úložisko.
klon git
2. Otvorte súbor AT89C2051_programmer/AT89_prog/AT89_prog.ino v Arduino IDE.
3. Zostavte a nahrajte skicu z Arduino IDE.
Krok 3: Inštalácia softvéru programátora


1. Vytvorte virtuálne prostredie pythonu.
python3 -m venv venv
. venv/bin/aktivovať
2. Nainštalujte at89overlord. at89overlord je open source programátor pre mnou napísaný čip AT89C2051. Jeho zdrojový kód nájdete tu.
pip install at89overlord
3. Overte inštaláciu.
at89overlord -h
Krok 4: Programovanie čipu




1. Klonujte jednoduchý projekt žmurknutia.
CD ~
klon git https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Zostavte aplikáciu.
urobiť
3. Pripojte Arduino k PC, pripojte napájanie 12V, umiestnite čip AT89C2051 do zásuvky ZIF.
4. Nájdite sériový port Arduina.
ls /dev /tty*
5. Nahrajte zabudovaný súbor IntelHex na čip. Ak sa port vášho Arduina líši od /dev /ttyACM0, musíte pomocou parametra príkazového riadka -p zadať správnu hodnotu.
at89overlord -f./hello.ihx
Krok 5: Zostavenie



Zostavte obvod podľa schémy. Verziu vo formáte PDF nájdete v úložisku.
Mali by ste vidieť zelený LED blesk s frekvenciou okolo 0,5 Hz.
Krok 6: Vysvetlenie kódu

#zahrnúť
#zahrnúť
Začneme zahrnutím hlavičky AT89X051 zo sdcc. Obsahuje makrá na interakciu s registrami, ako keby išlo o premenné. Tiež zahrnujeme stdint.h, ktorý obsahuje definície celočíselných typov uint8_t a uint16_t.
// Za predpokladu, že oscilátor je 16 MHz
#define INTERRUPTS_PER_SECOND 5208
K prerušeniu dôjde, keď časový spínač 0 pretečie. Je nakonfigurovaný ako jeden 8bitový časovač, takže sa to stáva každých 2^8 cyklov procesora. Jeden cyklus procesora trvá 12 hodinových cyklov, a tak sa dostaneme k 16000000/12/2^8 = 5208,33333.
volatile uint8_t led_state = 0;
volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Deklarujeme premenné stavu riadenia a počítadla prerušení.
void Timer0_ISR (neplatné) _interrupt (1) {
časovač_počítadlo--; if (timer_counter == 0) {led_state =! led_state; časovač_počítadla = INTERRUPTS_PER_SECOND; }}
Zakaždým, keď časový spínač 0 pretečie, počítadlo sa zníži. Ak sa rovná nule, vynuluje sa a stav LED sa zmení. K tomu dochádza približne raz za sekundu, čo má za následok frekvenciu blikania LED diódy ~ 0,5 Hz.
int main () {
TMOD = 0x3; // Režim časovača - 8 bitov, bez predzosilňovača. frekv = OSCFREQ/12/2^8 TL0 = 0; // Vymazanie počítadla TH0 = 0; // Vymazať register TR0 = 1; // Nastavte časovač na spustenie. ET0 = 1; // Nastaviť prerušenie. EA = 1; // Nastavenie globálneho prerušenia. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Konfigurujeme modul časovača a čakáme na zmeny v riadiacej premennej stavu LED. TMOD je riadiaci register režimu časovača. TL0 a TH0 sú riadiace registre Timer0. ET0 je bit enable-timer0 v registri riadenia časovača (TCON). TR0 a EA sú bity v registri umožňujúcom prerušenie (IE).
Krok 7: Ďalšie zdroje
- Dátový list AT89C2051:
- Kompilátor malého zariadenia C (sdcc):
- Zdroje 8051:
- Úložisko programátora AT89C2051:
- úložisko ahoj-8051:
Odporúča:
Úvod do programovania Raspberry Pi bez ručného kódovania: 3 kroky

Úvod do programovania Raspberry Pi bez ručného kódovania: Ahoj, tento návod vám ukáže, ako z vášho Raspberry Pi urobiť plne programovateľné automatizačné zariadenie kompatibilné s graficky orientovaným programovacím jazykom pre PLC s názvom Function Block Diagram (súčasť normy IEC 61131-3). Toto môže byť
LED hviezda: 7 krokov (s obrázkami)

LED hviezda: 1. plstená hviezda (vystrihnutá zo šablóny) 2. LED3. držiak batérie - " E " karta je kladná) 4. 3V gombíková batéria CR2032 5. ihla (veľkosť výšivky 7) 6. vodivý závit Voliteľné materiály: navliekač ihiel, kliešte, vyšívacia niť, vypchávka
Merač intenzity svetla bez programovania .: 7 krokov (s obrázkami)

Merač intenzity svetla bez programovania: Tento návod je o vytvorení základného merača intenzity svetla bez použitia Arduina alebo akéhokoľvek iného mikrokontroléra alebo programovania. Merač intenzity svetla zobrazuje rôzne úrovne intenzity svetla s rôznymi farbami LED diód. Červená LED
Raspberry PI kamera a svetlo ovládajúca hviezda smrti: 5 krokov (s obrázkami)

Kamera Raspberry PI a ovládanie svetla Death Star: Ako vždy sa snažím stavať zariadenia, ktoré sú užitočné, fungujú robustne a často sú dokonca vylepšením v porovnaní so súčasnými riešeniami, ktoré nie sú k dispozícii. Je tu ešte ďalší skvelý projekt, pôvodne pomenovaný Shadow 0f Phoenix, štít Raspberry PI v spolupráci s
Vianočná hviezda s LED diódami Arduino a RGB: 5 krokov (s obrázkami)

Vianočná hviezda s LED diódami Arduino a RGB: Ahoj! Sme komunita Arduino Novosibirsk z hlboko mrazenej Sibíri. Aby sme sa trochu zahriali, rozhodli sme sa vytvoriť krásne svietiace a blikajúce vianočné hviezdy. Nezabudnite si pozrieť demo video