Orodha ya maudhui:

Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino): Hatua 7 (na Picha)
Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino): Hatua 7 (na Picha)

Video: Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino): Hatua 7 (na Picha)

Video: Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino): Hatua 7 (na Picha)
Video: История спасение дикого кабанчика. Кабанчик нуждался в помощи. 2024, Novemba
Anonim
Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino)
Utangulizi wa Programu ya 8051 na AT89C2051 (Mgeni anayeigiza: Arduino)

8051 (pia inajulikana kama MCS-51) ni muundo wa MCU kutoka miaka ya 80 ambayo bado inajulikana leo. Udhibiti mdogo wa kisasa wa 8051 unapatikana kutoka kwa wauzaji wengi, kwa maumbo na saizi zote, na anuwai ya vifaa vya pembezoni. Katika hili tunaweza kufundisha AT89C2051 MCU kutoka Atmel.

AT89C2051 ni ndogo (2Kbyte Flash, 128byte RAM), nafuu (~ $ 1.40 kwa chip) microcontroller.

  • Operesheni ya 2.7-6V
  • Mistari 15 I / O
  • Vipima muda 2 (16 bit)
  • Usumbufu wa ndani na nje
  • UART
  • Mlinganisho wa Analog ya kwenye-chip
  • Hadi 2MIPS na saa ya 24MHz

Hatua ya 1: Mahitaji

Mahitaji
Mahitaji

Mahitaji:

  • PC ya Linux (programu inayohitajika: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Chip ya AT89C2051 (kifurushi cha DIP20)
  • Tundu la ZIF la pini 20
  • Optocoupler (ikiwezekana pato la MOSFET)
  • Ngao ya protoksi ya Arduino
  • Usambazaji wa umeme wa 12V
  • Usambazaji wa umeme wa 5V
  • 16MHz kioo oscillator
  • 2x 30pF capacitor
  • 100nF capacitor
  • Diode (mfano: 1N400X)
  • Resistors (1K, 3K3)
  • Kitabu cha ulinzi
  • Wanarukaji
  • Waya wa shaba

Angalia programu inayohitajika:

chatu3

ambayo hufanya sdcc ipi git

Hatua ya 2: Kuunda Programu

Kujenga Programu
Kujenga Programu
Kujenga Programu
Kujenga Programu
Kujenga Programu
Kujenga Programu

Sehemu hii itakuwa fupi, kama nilivyojenga ngao yangu ya programu muda uliopita. Nimeambatanisha picha na picha za bodi iliyokusanyika. PDF ya skimu inaweza kupatikana kwenye hazina.

Utalazimika kupanga bodi ya programu:

1. Clone hazina.

clone ya git

2. Fungua AT89C2051_programmer / AT89_prog / AT89_prog.ino faili katika Arduino IDE.

3. Jenga na upakie mchoro kutoka Arduino IDE.

Hatua ya 3: Kufunga Programu ya Programu

Kusakinisha Programu ya Programu
Kusakinisha Programu ya Programu
Kusakinisha Programu ya Programu
Kusakinisha Programu ya Programu

1. Unda mazingira dhahiri ya chatu.

chatu3 -m venv venv

. venv / bin / kuamsha

2. Sakinisha at89overlord. at89overlord ni programu ya Chanzo wazi kwa chip ya AT89C2051 iliyoandikwa na mimi. Nambari ya chanzo inaweza kupatikana hapa.

pip kufunga at89overlord

3. Thibitisha ufungaji.

at89overlord -h

Hatua ya 4: Kupanga Chip

Kupanga Chip
Kupanga Chip
Kupanga Chip
Kupanga Chip
Kupanga Chip
Kupanga Chip
Kupanga Chip
Kupanga Chip

1. Clone mradi rahisi blink.

cd ~

clone ya git https://github.com/piotrb5e3/hello-8051.git cd hello-8051 /

2. Jenga programu.

fanya

3. Unganisha Arduino kwenye PC, unganisha usambazaji wa 12V, weka chip ya AT89C2051 kwenye tundu la ZIF.

4. Pata bandari ya serial ya Arduino.

ls / dev / tty *

5. Pakia faili ya IntelHex iliyojengwa kwenye chip. Ikiwa bandari yako ya Arduino ni tofauti na / dev / ttyACM0 lazima upitishe thamani sahihi na -p amri ya mstari wa amri.

at89overlord -f./hello.ihx

Hatua ya 5: Mkutano

Mkutano
Mkutano
Mkutano
Mkutano
Mkutano
Mkutano

Kukusanya mzunguko kulingana na mpango. Toleo la PDF linaweza kupatikana kwenye hazina.

Unapaswa kuona taa ya kijani ya LED na masafa ya karibu 0.5Hz.

Hatua ya 6: Ufafanuzi wa Kanuni

Maelezo ya Kanuni
Maelezo ya Kanuni

# pamoja

# pamoja

Tunaanza kwa kujumuisha kichwa cha AT89X051 kutoka sdcc. Inayo macros ya kuingiliana na madaftari kana kwamba ni anuwai. Sisi pia ni pamoja na stdint.h ambayo ina ufafanuzi wa uint8_t na uint16_t aina kamili.

// Kudhani oscillator ni 16MHz

#fafanua INTERRUPTS_PER_SECOND 5208

Usumbufu hufanyika wakati Timer0 inapojaa. Imesanidiwa kama kipima muda kimoja cha 8bit, kwa hivyo hii hufanyika kila mizunguko ya processor 2 ^ 8. Mzunguko mmoja wa processor unachukua mizunguko ya saa 12, na kwa hivyo tunafika saa 16000000/12/2 ^ 8 = 5208.33333.

tete uint8_t led_state = 0;

tete uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Tunatangaza udhibiti wa hali iliyoongozwa na kukatiza vigeu vya kukabiliana.

timer timer0_ISR (batili) _katika (1) {

timer_counter--; ikiwa (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Kila wakati Timer0 inapofurika kaunta hupungua. Ikiwa ni sawa na sifuri imewekwa upya, na hali iliyoongozwa inabadilishwa. Hii hufanyika mara moja kwa sekunde, na kusababisha ~ 0.5Hz frequency ya blinking ya LED.

int kuu () {

TMOD = 0x3; // Njia ya Timer - 8bits, hakuna mchungaji. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Futa kaunta TH0 = 0; // Sajili wazi TR0 = 1; // Weka kipima muda ili kukimbia. ET0 = 1; // Weka usumbufu. EA = 1; // Weka usumbufu wa ulimwengu. wakati (1) {if (led_state) {P1 = 0xFF; } mwingine {P1 = 0x00; }}}

Tunasanidi moduli ya kipima muda na tunasubiri mabadiliko katika kutofautisha kwa udhibiti wa hali iliyoongozwa. TMOD ni sajili ya kudhibiti hali ya timer. TL0 na TH0 ni sajili za kudhibiti Timer0. ET0 ni wakati wa kuwezesha-timer0 katika rejista ya kudhibiti saa (TCON). TR0 na EA ni bits katika usumbufu kuwezesha rejista (IE).

Hatua ya 7: Rasilimali za Ziada

  • Jedwali la data la AT89C2051:
  • Kidhibiti C cha Kifaa Kidogo (sdcc):
  • Rasilimali 8051:
  • Hifadhi ya programu ya AT89C2051:
  • hello-8051 hifadhi:

Ilipendekeza: