
Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:44

8051 (tunnetaan myös nimellä MCS-51) on 80-luvun MCU-malli, joka on edelleen suosittu. Nykyaikaisia 8051-yhteensopivia mikro-ohjaimia on saatavana useilta toimittajilta, kaikissa muodoissa ja kokoissa, ja niissä on laaja valikoima oheislaitteita. Tässä ohjeessa katsomme Atmelin AT89C2051 MCU: ta.
AT89C2051 on pieni (2 kt, Flash, 128 tavua RAM), halpa (~ 1,40 dollaria per siru) mikro -ohjain.
- 2.7-6V toiminta
- 15 I/O -linjaa
- 2 ajastinta (16 bittiä)
- Sisäiset ja ulkoiset keskeytykset
- UART
- Sirun analoginen vertailija
- Jopa 2 MIPS 24 MHz: n kellolla
Vaihe 1: Vaatimukset

Vaatimukset:
- Linux -tietokone (vaadittu ohjelmisto: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 -siru (DIP20 -paketti)
- 20-nastainen ZIF-liitäntä
- Optoerotin (mieluiten MOSFET-lähtö)
- Arduinon prototyyppikilpi
- 12V virtalähde
- 5V virtalähde
- 16MHz kideoskillaattori
- 2x 30pF kondensaattori
- 100nF kondensaattori
- Diodi (esim. 1N400X)
- Vastukset (1K, 3K3)
- Protoboard
- Puserot
- Kuparilanka
Tarkista tarvittavat ohjelmistot:
mikä python3
jotka tekevät mikä sdcc mikä git
Vaihe 2: Ohjelmoijan rakentaminen



Tämä osa on lyhyt, koska rakensin ohjelmointikilveni jokin aika sitten. Olen liittänyt kaavion ja kuvat kootusta levystä. Kaavion PDF -tiedosto löytyy arkistosta.
Sinun on ohjelmoitava ohjelmoijakortti:
1. Kloonaa arkisto.
git -klooni
2. Avaa tiedosto AT89C2051_programmer/AT89_prog/AT89_prog.ino Arduino IDE: ssä.
3. Rakenna ja lähetä luonnos Arduino IDE: stä.
Vaihe 3: Ohjelmointiohjelmiston asentaminen


1. Luo python -virtuaalinen ympäristö.
python3 -m venv venv
. venv/bin/aktivoi
2. Asenna at89overlord. at89overlord on avoimen lähdekoodin ohjelmoija AT89C2051 -sirulle, jonka olen kirjoittanut ja jonka lähdekoodi löytyy täältä.
pip asenna at89overlord
3. Tarkista asennus.
at89overlord -h
Vaihe 4: Sirun ohjelmointi




1. Kloonaa yksinkertainen vilkkuva projekti.
cd ~
git-klooni https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Rakenna sovellus.
tehdä
3. Liitä Arduino tietokoneeseen, 12 V: n syöttö ja aseta AT89C2051 -siru ZIF -pistorasiaan.
4. Paikanna Arduinon sarjaportti.
ls /dev /tty*
5. Lataa rakennettu IntelHex -tiedosto sirulle. Jos Arduinon portti on eri kuin /dev /ttyACM0, sinun on annettava oikea arvo -p -komentoriviparametrilla.
at89overlord -f./hello.ihx
Vaihe 5: Kokoonpano



Kokoa piiri kaavion mukaisesti. PDF -versio löytyy arkistosta.
Sinun pitäisi nähdä vihreä LED -salama, jonka taajuus on noin 0,5 Hz.
Vaihe 6: Koodin selitys

#sisältää
#sisältää
Aloitamme sisällyttämällä sdcc: n AT89X051 -otsikon. Se sisältää makroja vuorovaikutukseen rekisterien kanssa ikään kuin ne olisivat muuttujia. Mukana on myös stdint.h, joka sisältää kokonaislukutyyppien uint8_t ja uint16_t määritelmät.
// Olettaen, että oskillaattori on 16MHz
#define INTERRUPTS_PER_SECOND 5208
Keskeytys tapahtuu, kun Ajastin0 ylittää. Se on määritetty yhdeksi 8 -bittiseksi ajastimeksi, joten tämä tapahtuu 2^8 suoritinjakson välein. Yksi prosessosykli kestää 12 kellosykliä, joten tulemme 16000000/12/2^8 = 5208.33333.
haihtuva uint8_t led_state = 0;
haihtuva uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Ilmoitamme led -tilan ohjaus- ja keskeytyslaskurimuuttujat.
void Ajastin0_ISR (mitätön) _interrupt (1) {
ajastin_laskuri--; jos (timer_counter == 0) {led_state =! led_state; ajastimen_laskuri = INTERRUPTS_PER_SECOND; }}
Joka kerta, kun ajastin0 ylittää, laskuri pienenee. Jos se on nolla, se nollataan ja led -tila muuttuu. Tämä tapahtuu noin kerran sekunnissa, jolloin tuloksena on ~ 0,5 Hz: n LED -vilkkutaajuus.
int main () {
TMOD = 0x3; // Ajastintila - 8 bittiä, ei esiasetinta. taajuus = OSCFREQ/12/2^8 TL0 = 0; // Tyhjennä laskuri TH0 = 0; // Tyhjennä rekisteri TR0 = 1; // Aseta ajastin toimimaan. ET0 = 1; // Aseta keskeytys. EA = 1; // Aseta maailmanlaajuinen keskeytys. while (1) {if (led_state) {P1 = 0xFF; } muu {P1 = 0x00; }}}
Määritämme ajastinmoduulin ja odotamme muutoksia led -tilan ohjausmuuttujassa. TOD on ajastintilan ohjausrekisteri. TL0 ja TH0 ovat Timer0 -ohjausrekistereitä. ET0 on ajastinohjausrekisterin (TCON) mahdollistavan ajastimen0-bitti. TR0 ja EA ovat bittejä keskeytyksen sallimisrekisterissä (IE).
Vaihe 7: Lisäresursseja
- AT89C2051 -tietolomake:
- Pienen laitteen C -kääntäjä (sdcc):
- 8051 -resurssit:
- AT89C2051 -ohjelmointivarasto:
- hello-8051-arkisto:
Suositeltava:
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)

Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Micro: bit Zip Tile Johdanto: 9 vaihetta (kuvilla)

Micro: bit Zip Tile Johdanto: Ennen kuin jatkan sarjaa MU -visioanturiohjeita Micro: bitille, minun on tehtävä tämä ohje Kitronik Zip Tile -laatalle, koska aion käyttää sitä. kutsu sitä vain Zipiksi tästä lähtien, on 8x8 neopikselimatto
Johdanto manipulaattoreihin: 8 vaihetta (kuvilla)

Johdanto manipulaattoreihin: Oikean manipulaattorin luominen haasteeseen on yksi FIRST Robotics Competitionin (FRC) vaikeimmista osista. Neljän opiskeluvuoden aikana se oli aina tiimini suurin epäonnistumispaikka. Vaikka pelihaaste FRC: ssä muuttuu vuodesta toiseen
Johtavat hyytelö munkkeja - johdanto ompelupiireihin Makey Makeyn kanssa: 4 vaihetta (kuvilla)

Conductive Jelly Donuts - Johdanto ompelupiireihin Makey Makeyn kanssa: Huomasimme Twitterissä, että monet Scratch- ja Makey Makey -fanaatikoistamme halusivat tietää enemmän ompelupiireistä, joten olemme laatineet tämän opetusohjelman antaaksemme sinulle lyhyen esittelyn ompelupiireistä ja kuinka voit ommella modulaarisia kappaleita. (Tämä on
Johdanto - DIY -kippikiinnike Gopro -istunnolle jne.: 5 vaihetta (kuvilla)

Johdanto - DIY Gimbal Mount for Gopro Session jne Lopulta päätin tehdä oman. Sama kiinnike toimii myös muissa GoPro -kameroissa - kiinnitä vain kuminauhoilla. Olen