![Uvod u programiranje 8051 s AT89C2051 (Gostujuća uloga: Arduino): 7 koraka (sa slikama) Uvod u programiranje 8051 s AT89C2051 (Gostujuća uloga: Arduino): 7 koraka (sa slikama)](https://i.howwhatproduce.com/images/003/image-8922-27-j.webp)
Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
![Uvod u programiranje 8051 s AT89C2051 (Gostujuća uloga: Arduino) Uvod u programiranje 8051 s AT89C2051 (Gostujuća uloga: Arduino)](https://i.howwhatproduce.com/images/003/image-8922-28-j.webp)
8051 (također poznat kao MCS-51) je MCU dizajn iz 80-ih koji je i danas popularan. Moderni mikrokontroleri kompatibilni s 8051 dostupni su od više prodavača, u svim oblicima i veličinama, sa širokim rasponom perifernih uređaja. U ovom uputstvu gledat ćemo AT89C2051 MCU iz Atmela.
AT89C2051 je mali (2Kbyte Flash, 128byte RAM), jeftin (~ 1,40 USD po čipu) mikrokontroler. Značajke:
- Rad 2,7-6V
- 15 I/O linija
- 2 tajmera (16 bita)
- Unutarnji i vanjski prekidi
- UART
- Analogni usporednik na čipu
- Do 2MIPS sa 24MHz taktom
Korak 1: Zahtjevi
![Zahtjevi Zahtjevi](https://i.howwhatproduce.com/images/003/image-8922-29-j.webp)
Zahtjevi:
- Linux PC (potreban softver: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 čip (paket DIP20)
- 20-polna ZIF utičnica
- Optokapler (po mogućnosti MOSFET izlaz)
- Arduino prototipni štit
- 12V napajanje
- 5V napajanje
- Kristalni oscilator od 16 MHz
- 2x 30pF kondenzator
- 100nF kondenzator
- Dioda (npr.: 1N400X)
- Otpornici (1K, 3K3)
- Protoboard
- Džemperi
- Bakrene žice
Provjerite potreban softver:
koji python3
koji čine koji sdcc koji git
Korak 2: Izrada programatora
![Izrada programatora Izrada programatora](https://i.howwhatproduce.com/images/003/image-8922-30-j.webp)
![Izrada programatora Izrada programatora](https://i.howwhatproduce.com/images/003/image-8922-31-j.webp)
![Izrada programatora Izrada programatora](https://i.howwhatproduce.com/images/003/image-8922-32-j.webp)
Ovaj odjeljak će biti kratak, jer sam prije nekog vremena izgradio svoj programski štit. Priložio sam shemu i slike sastavljene ploče. PDF sheme može se pronaći u spremištu.
Morat ćete programirati ploču programera:
1. Klonirajte spremište.
git klon
2. Otvorite datoteku AT89C2051_programmer/AT89_prog/AT89_prog.ino u Arduino IDE -u.
3. Napravite i prenesite skicu iz Arduino IDE -a.
Korak 3: Instaliranje softvera za programere
![Instaliranje programa za programiranje Instaliranje programa za programiranje](https://i.howwhatproduce.com/images/003/image-8922-33-j.webp)
![Instaliranje programa za programiranje Instaliranje programa za programiranje](https://i.howwhatproduce.com/images/003/image-8922-34-j.webp)
1. Napravite python virtualno okruženje.
python3 -m venv venv
. venv/bin/aktivirati
2. Instalirajte at89overlord. at89overlord je programer otvorenog koda za čip AT89C2051 koji sam napisao. Izvorni kod možete pronaći ovdje.
pip install at89overlord
3. Provjerite instalaciju.
at89overlord -h
Korak 4: Programiranje čipa
![Programiranje čipa Programiranje čipa](https://i.howwhatproduce.com/images/003/image-8922-35-j.webp)
![Programiranje čipa Programiranje čipa](https://i.howwhatproduce.com/images/003/image-8922-36-j.webp)
![Programiranje čipa Programiranje čipa](https://i.howwhatproduce.com/images/003/image-8922-37-j.webp)
![Programiranje čipa Programiranje čipa](https://i.howwhatproduce.com/images/003/image-8922-38-j.webp)
1. Klonirajte jednostavan blink projekt.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Napravite aplikaciju.
napraviti
3. Spojite Arduino na računalo, spojite 12V napajanje, postavite čip AT89C2051 u ZIF utičnicu.
4. Pronađite Arduino serijski port.
ls /dev /tty*
5. Prenesite izgrađenu datoteku IntelHex na čip. Ako se port vašeg Arduina razlikuje od /dev /ttyACM0, morate proslijediti ispravnu vrijednost s parametrom -p naredbenog retka.
at89overlord -f./hello.ihx
Korak 5: Montaža
![Skupština Skupština](https://i.howwhatproduce.com/images/003/image-8922-39-j.webp)
![Skupština Skupština](https://i.howwhatproduce.com/images/003/image-8922-40-j.webp)
![Skupština Skupština](https://i.howwhatproduce.com/images/003/image-8922-41-j.webp)
Sastavite krug prema shemi. PDF verzija može se pronaći u spremištu.
Trebali biste vidjeti zelenu LED bljeskalicu frekvencije oko 0,5Hz.
Korak 6: Objašnjenje koda
![Objašnjenje koda Objašnjenje koda](https://i.howwhatproduce.com/images/003/image-8922-42-j.webp)
#uključi
#uključi
Počinjemo uključivanjem zaglavlja AT89X051 iz sdcc -a. Sadrži makronaredbe za interakciju s registrima kao da su varijable. Uključujemo i stdint.h koji sadrži definicije cjelobrojnih tipova uint8_t i uint16_t.
// Pretpostavimo da je oscilator 16MHz
#define INTERRUPTS_PER_SECOND 5208
Do prekida dolazi kad se Timer0 prelije. Konfiguriran je kao jedan 8 -bitni mjerač vremena, pa se to događa svakih 2^8 ciklusa procesora. Jedan procesorski ciklus traje 12 ciklusa takta, pa dolazimo do 16000000/12/2^8 = 5208.33333.
volatile uint8_t led_state = 0;
volatile uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Deklariramo LED stanje kontrole i prekidač brojača prekida.
void Timer0_ISR (void) _interrupt (1) {
brojač_brojača vremena--; if (brojač_vremena == 0) {led_state =! led_state; brojač_brojača = INTERRUPTS_PER_SECOND; }}
Svaki put kad se Timer0 prelije, brojač se smanjuje. Ako je jednako nuli, resetira se, a LED dioda se mijenja. To se događa otprilike jednom u sekundi, što rezultira frekvencijom treptanja LED -a od 0,5 Hz.
int main () {
TMOD = 0x3; // Timer mode - 8 bita, bez predskalera. učestalost = OSCFREQ/12/2^8 TL0 = 0; // Brisanje brojača TH0 = 0; // Brisanje registra TR0 = 1; // Postavljanje tajmera za pokretanje. ET0 = 1; // Postavi prekid. EA = 1; // Postavljanje globalnog prekida. while (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}
Konfiguriramo vremenski modul i čekamo promjene u LED upravljačkoj varijabli stanja. TMOD je registar za upravljanje timer načinom. TL0 i TH0 su upravljački registri Timer0. ET0 je enable-timer0 bit u registru upravljanja timerom (TCON). TR0 i EA su bitovi u registru za omogućavanje prekida (IE).
Korak 7: Dodatni izvori
- Tehnički list AT89C2051:
- Prevodilac malih uređaja C (sdcc):
- 8051 izvori:
- Spremište programera AT89C2051:
- spremište hello-8051:
Preporučeni:
ATtiny85 Praćenje i programiranje nosivih vibracijskih aktivnosti ATtiny85 s Arduino Uno: 4 koraka (sa slikama)
![ATtiny85 Praćenje i programiranje nosivih vibracijskih aktivnosti ATtiny85 s Arduino Uno: 4 koraka (sa slikama) ATtiny85 Praćenje i programiranje nosivih vibracijskih aktivnosti ATtiny85 s Arduino Uno: 4 koraka (sa slikama)](https://i.howwhatproduce.com/images/002/image-4670-11-j.webp)
ATtiny85 Sat za praćenje i programiranje nosivih vibracijskih aktivnosti ATtiny85 s Arduino Uno: Kako napraviti sat za praćenje aktivnosti koji se može nositi? Ovo je nosivi gadget dizajniran da vibrira kada otkrije stagnaciju. Provodite li većinu vremena na računalu poput mene? Sjedite li satima, a da toga niste svjesni? Tada je ovaj uređaj f
Uvod u programiranje Raspberry Pi bez ručnog kodiranja: 3 koraka
![Uvod u programiranje Raspberry Pi bez ručnog kodiranja: 3 koraka Uvod u programiranje Raspberry Pi bez ručnog kodiranja: 3 koraka](https://i.howwhatproduce.com/images/001/image-1427-36-j.webp)
Uvod u programiranje Raspberry Pi bez ručnog kodiranja: Bok, ova instrukcija će vam pokazati kako pretvoriti svoj Raspberry Pi u potpuno programabilni uređaj za automatizaciju kompatibilan s grafički orijentiranim programskim jezikom za PLC-ove pod nazivom Funkcijski blok dijagram (dio standarda IEC 61131-3). Ovo može biti
Arduino daljinsko/bežično programiranje i Power Bank domaća izrada: 12 koraka (sa slikama)
![Arduino daljinsko/bežično programiranje i Power Bank domaća izrada: 12 koraka (sa slikama) Arduino daljinsko/bežično programiranje i Power Bank domaća izrada: 12 koraka (sa slikama)](https://i.howwhatproduce.com/images/004/image-11127-12-j.webp)
Arduino daljinsko/bežično programiranje i Power Bank Domaće: Problem. Razvijam skicu u blizini računala i koristim USB i serijski program za " ispravljanje pogrešaka " u ovom slučaju stvaram lib za DHT12, isporučujem verziju na githubu biblioteke. Ali dolazi do problema: " kada temperatura padne ispod 0 očitana je vrijednost poništena
Najjeftiniji Arduino -- Najmanji Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 koraka (sa slikama)
![Najjeftiniji Arduino -- Najmanji Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 koraka (sa slikama) Najjeftiniji Arduino -- Najmanji Arduino -- Arduino Pro Mini -- Programiranje -- Arduino Neno: 6 koraka (sa slikama)](https://i.howwhatproduce.com/images/003/image-6862-42-j.webp)
Najjeftiniji Arduino || Najmanji Arduino || Arduino Pro Mini || Programiranje || Arduino Neno: …………………………. PRETPLATITE SE na moj YouTube kanal za više videa ……. .Ovaj projekt govori o tome kako spojiti najmanji i najjeftiniji arduino ikada. Najmanji i najjeftiniji arduino je arduino pro mini. Slično je arduinu
Programiranje ATTiny85, ATTiny84 i ATMega328P: Arduino kao ISP: 9 koraka (sa slikama)
![Programiranje ATTiny85, ATTiny84 i ATMega328P: Arduino kao ISP: 9 koraka (sa slikama) Programiranje ATTiny85, ATTiny84 i ATMega328P: Arduino kao ISP: 9 koraka (sa slikama)](https://i.howwhatproduce.com/images/003/image-8392-15-j.webp)
Programiranje ATTiny85, ATTiny84 i ATMega328P: Arduino Kao ISP: Predgovor Nedavno sam razvijao nekoliko IoT projekata temeljenih na ESP8266 i otkrio da se jezgreni procesor bori za izvršavanje svih zadataka koji su mi bili potrebni za upravljanje, pa sam odlučio distribuirati neke od manje važne aktivnosti za drugi mikrofon