Mündəricat:

AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino): 7 Addım (Şəkillərlə)
AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino): 7 Addım (Şəkillərlə)

Video: AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino): 7 Addım (Şəkillərlə)

Video: AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino): 7 Addım (Şəkillərlə)
Video: Таймер с использованием Arduino Uno, программирование Arduino 2024, Noyabr
Anonim
AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino)
AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino)

8051 (MCS-51 olaraq da bilinir) 80-ci illərin MCU dizaynıdır və bu gün də populyar olaraq qalır. Müasir 8051-ə uyğun mikrokontrollerlər, hər cür forma və ölçüdə və bir çox periferik qurğuya malik bir çox satıcıdan əldə edilə bilər. Bu təlimatda Atmel -dən AT89C2051 MCU -ya baxacağıq.

AT89C2051 kiçik (2Kbayt Flash, 128bayt RAM), ucuz (çip başına ~ 1,40 dollar) mikro nəzarətçidir.

  • 2.7-6V işləmə
  • 15 I/O xətti
  • 2 taymer (16 bit)
  • Daxili və xarici fasilələr
  • UART
  • Çipdəki analog müqayisə cihazı
  • 24MHz saat ilə 2MIPS -ə qədər

Addım 1: Tələblər

Tələblər
Tələblər

Tələblər:

  • Linux PC (tələb olunan proqram: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 çipi (DIP20 paketi)
  • 20 pinli ZIF yuvası
  • Optocoupler (tercihen MOSFET çıxışı)
  • Arduino prototip qalxan
  • 12V enerji təchizatı
  • 5V enerji təchizatı
  • 16MHz kristal osilator
  • 2 x 30pF kondansatör
  • 100nF kondansatör
  • Diod (məsələn: 1N400X)
  • Rezistorlar (1K, 3K3)
  • Protoboard
  • Tullananlar
  • Mis tel

Lazımi proqramı yoxlayın:

hansı python3

hansı sdcc hansı git

Addım 2: Proqramçı qurmaq

Proqramçı qurmaq
Proqramçı qurmaq
Proqramçı qurmaq
Proqramçı qurmaq
Proqramçı qurmaq
Proqramçı qurmaq

Bir müddət əvvəl proqramlaşdırma qalxanımı qurduğum üçün bu bölmə qısa olacaq. Quraşdırılmış lövhənin sxemini və şəkillərini əlavə etdim. Şematik PDF -ni depoda tapa bilərsiniz.

Proqramçı lövhəsini proqramlaşdırmalısınız:

1. Anbarı klonlaşdırın.

git klonu

2. Arduino IDE -də AT89C2051_programmer/AT89_prog/AT89_prog.ino faylını açın.

3. Arduino IDE -dən eskiz yaradın və yükləyin.

Addım 3: Proqramçı Proqramının Qurulması

Proqramçı Proqramının Quraşdırılması
Proqramçı Proqramının Quraşdırılması
Proqramçı Proqramının Quraşdırılması
Proqramçı Proqramının Quraşdırılması

1. Python virtual mühiti yaradın.

python3 -m venv venv

. venv/bin/aktivləşdirin

2. at89overlord qurun. at89overlord, mənim yazdığım AT89C2051 çipi üçün açıq mənbə proqramçısıdır. Mənbə kodunu burada tapa bilərsiniz.

pip at89overlord -a quraşdırın

3. Quraşdırmanı yoxlayın.

at89 ağası -h

Addım 4: Çipin proqramlaşdırılması

Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması
Çipin proqramlaşdırılması

1. Sadə bir göz qırpma layihəsini klonlayın.

cd ~

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

2. Tətbiqi qurun.

etmək

3. Arduino -nu PC -yə qoşun, 12V -luq şəbəkəyə qoşun, AT89C2051 çipini ZIF yuvasına yerləşdirin.

4. Arduinonun seriyalı limanını tapın.

ls /dev /tty*

5. Qurulmuş IntelHex faylını çipə yükləyin. Arduino portunuz /dev /ttyACM0 -dan fərqlidirsə, -p əmr satırı parametri ilə düzgün dəyəri verməlisiniz.

at89verlord -f./hello.ihx

Addım 5: Montaj

Məclis
Məclis
Məclis
Məclis
Məclis
Məclis

Dövrəni sxematik şəkildə yığın. PDF versiyasını depoda tapa bilərsiniz.

Təxminən 0,5 Hz tezlikli yaşıl LED flaşını görməlisiniz.

Addım 6: Kodun izahı

Kodun izahı
Kodun izahı

#daxil edin

#daxil edin

Sdcc -dən AT89X051 başlığını daxil etməklə başlayırıq. Qeydlər ilə sanki dəyişən kimi qarşılıqlı əlaqə qurmaq üçün makrolar var. Uint8_t və uint16_t tam ədəd növlərinin təriflərini ehtiva edən stdint.h də daxildir.

// Osilatörün 16 MHz olduğunu düşünürük

5208

Timer0 daşdıqda bir fasilə yaranır. Tək 8 bitlik bir taymer kimi qurulmuşdur, buna görə də hər 2^8 prosessor dövrü olur. Bir prosessor dövrü 12 saat dövrü alır və beləliklə 16000000/12/2^8 = 5208.33333 -ə çatırıq.

uçucu uint8_t led_state = 0;

uçucu uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Lider dövlət nəzarətini elan edirik və sayğac dəyişənlərini kəsirik.

boş Timer0_ISR (void) _ ara vermə (1) {

timer_counter--; əgər (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Timer0 hər dəfə aşanda sayğac azalır. Sıfıra bərabərdirsə, sıfırlanır və led vəziyyəti dəyişdirilir. Bu, saniyədə təxminən bir dəfə baş verir, nəticədə ~ 0.5Hz LED yanıb -sönmə tezliyi ilə nəticələnir.

int main () {

TMOD = 0x3; // Taymer rejimi - 8 bit, əvvəlcədən ölçən yoxdur. freq = OSCFREQ/12/2^8 TL0 = 0; // Təmiz sayıcı TH0 = 0; // Təmiz qeyd TR0 = 1; // Taymeri işə salın. ET0 = 1; // Fasiləni təyin edin. EA = 1; // Qlobal fasiləni təyin edin. while (1) {if (led_state) {P1 = 0xFF; } başqa {P1 = 0x00; }}}

Taymer modulunu konfiqurasiya edirik və led vəziyyət nəzarət dəyişikliyində dəyişikliklər gözləyirik. TMOD, timer rejimi nəzarət qeydidir. TL0 və TH0 Timer0 nəzarət qeydləridir. ET0, timer nəzarət reyestrində (TCON) aktivləşdirmə-timer0 bitidir. TR0 və EA, kəsilmə aktivləşdirmə reyestrinin (IE) bitləridir.

Addım 7: Əlavə mənbələr

  • AT89C2051 məlumat cədvəli:
  • Kiçik Cihaz C Tərtibçisi (sdcc):
  • 8051 mənbələri:
  • AT89C2051 proqramçı deposu:
  • salam-8051 anbarı:

Tövsiyə: