İçindekiler:

AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino): 7 Adım (Resimlerle)
AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino): 7 Adım (Resimlerle)

Video: AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino): 7 Adım (Resimlerle)

Video: AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino): 7 Adım (Resimlerle)
Video: Program Any IC, Micro-Controller | AT89S52, AT89S51, AT89C51,AT89C52 | Universal ISP Programmer | 2024, Kasım
Anonim
AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino)
AT89C2051 ile 8051 Programlamaya Giriş (Konuk Başrol: Arduino)

8051 (MCS-51 olarak da bilinir), 80'lerden günümüze popülerliğini koruyan bir MCU tasarımıdır. Modern 8051 uyumlu mikrodenetleyiciler, çok sayıda satıcıdan tüm şekil ve boyutlarda ve çok çeşitli çevre birimlerinde mevcuttur. Bu talimatta, Atmel'den AT89C2051 MCU'ya bakacağız.

AT89C2051, küçük (2Kbayt Flash, 128bayt RAM), ucuz (çip başına ~1,40$) bir mikrodenetleyicidir. Özellikler:

  • 2.7-6V çalışma
  • 15 G/Ç hattı
  • 2 zamanlayıcı (16 bit)
  • Dahili ve harici kesintiler
  • UART
  • Çipte analog karşılaştırıcı
  • 24 MHz saat hızıyla 2MIPS'ye kadar

Adım 1: Gereksinimler

Gereksinimler
Gereksinimler

Gereksinimler:

  • Linux PC (gerekli yazılım: Arduino IDE, git, make, sdcc)
  • Arduino UNO'su
  • AT89C2051 çipi (DIP20 paketi)
  • 20 pinli ZIF soketi
  • Optocoupler (tercihen MOSFET çıkışı)
  • Arduino prototipleme kalkanı
  • 12V güç kaynağı
  • 5V güç kaynağı
  • 16MHz kristal osilatör
  • 2x 30pF kapasitör
  • 100nF kapasitör
  • Diyot (ör: 1N400X)
  • Dirençler (1K, 3K3)
  • protokol
  • Süveterler
  • Bakır kablo

Gerekli yazılımı kontrol edin:

hangi piton3

hangi sdcc'yi hangi git yap

Adım 2: Programlayıcıyı Oluşturma

Programcıyı Oluşturma
Programcıyı Oluşturma
Programcıyı Oluşturma
Programcıyı Oluşturma
Programcıyı Oluşturma
Programcıyı Oluşturma

Programlama kalkanımı bir süre önce oluşturduğum için bu bölüm kısa olacak. Monte edilen panonun şematik ve resimlerini ekledim. Şematik PDF dosyası depoda bulunabilir.

Programlayıcı panosunu programlamanız gerekecek:

1. Depoyu klonlayın.

git klonu

2. Arduino IDE'de AT89C2051_programmer/AT89_prog/AT89_prog.ino dosyasını açın.

3. Arduino IDE'den taslağı oluşturun ve yükleyin.

Adım 3: Programcı Yazılımını Yükleme

Programcı Yazılımını Yükleme
Programcı Yazılımını Yükleme
Programcı Yazılımını Yükleme
Programcı Yazılımını Yükleme

1. Bir piton sanal ortamı oluşturun.

python3 -m venv venv

. venv/bin/etkinleştir

2. 89overlord'u yükleyin. at89overlord, AT89C2051 yongası için yazdığım bir Açık Kaynak programcısıdır. Kaynak kodu burada bulunabilir.

89overlord'da pip kurulumu

3. Kurulumu doğrulayın.

at89overlord -h

Adım 4: Çipin Programlanması

Çipin Programlanması
Çipin Programlanması
Çipin Programlanması
Çipin Programlanması
Çipin Programlanması
Çipin Programlanması
Çipin Programlanması
Çipin Programlanması

1. Basit bir göz kırpma projesini klonlayın.

cd ~

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

2. Uygulamayı oluşturun.

Yapmak

3. Arduino'yu PC'ye bağlayın, 12V beslemesini bağlayın, AT89C2051 çipini ZIF soketine yerleştirin.

4. Arduino'nun seri portunu bulun.

ls /dev/tty*

5. Yerleşik IntelHex dosyasını çipe yükleyin. Arduino'nuzun bağlantı noktası /dev/ttyACM0'dan farklıysa, -p komut satırı parametresiyle doğru değeri iletmeniz gerekir.

at89overlord -f./hello.ihx

Adım 5: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Devreyi şematik olarak kurunuz. Depoda bir PDF sürümü bulunabilir.

Yeşil LED'in yaklaşık 0,5 Hz'lik bir frekansla yanıp söndüğünü görmelisiniz.

Adım 6: Kod Açıklaması

Kod Açıklama
Kod Açıklama

#Dahil etmek

#Dahil etmek

AT89X051 başlığını sdcc'den ekleyerek başlıyoruz. Kayıtlarla değişkenlermiş gibi etkileşim kurmak için makrolar içerir. Ayrıca uint8_t ve uint16_t tamsayı türlerinin tanımlarını içeren stdint.h dosyasını da dahil ediyoruz.

// Osilatörün 16MHz olduğunu varsayarsak

#define INTERRUPTS_PER_SECOND 5208

Timer0 taştığında bir kesinti meydana gelir. Tek bir 8 bit zamanlayıcı olarak yapılandırılmıştır, bu nedenle bu her 2^8 işlemci döngüsünde gerçekleşir. Bir işlemci döngüsü 12 saat döngüsü alır ve böylece 16000000/12/2^8 = 5208.33333'e ulaşırız.

uçucu uint8_t led_state = 0;

uçucu uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Led durum kontrolünü ve kesme sayacı değişkenlerini bildiriyoruz.

void Timer0_ISR(void) _interrupt (1) {

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

Timer0 her taştığında sayaç azalır. Sıfıra eşitse resetlenir ve led durumu değişir. Bu, saniyede bir kez meydana gelir ve ~0.5Hz LED yanıp sönme frekansına neden olur.

int ana() {

TMOD = 0x3; // Zamanlayıcı modu - 8 bit, ön ölçekleyici yok. frekans = OSCFREQ/12/2^8 TL0 = 0; // Sayacın silinmesi TH0 = 0; // register TR0 = 1; // Zamanlayıcıyı çalışacak şekilde ayarla. ET0 = 1; // Kesintiyi ayarla. EA = 1; // Global kesmeyi ayarla. while(1) { if (led_state) { P1 = 0xFF; } başka { P1 = 0x00; } } }

Zamanlayıcı modülünü yapılandırıyoruz ve led durum kontrol değişkenindeki değişiklikleri bekliyoruz. TMOD, zamanlayıcı modu kontrol kaydıdır. TL0 ve TH0, Timer0 kontrol kayıtlarıdır. ET0, zamanlayıcı kontrol kaydındaki (TCON) etkinleştirme zamanlayıcı0 bitidir. TR0 ve EA, kesme etkinleştirme kaydındaki (IE) bitlerdir.

7. Adım: Ek Kaynaklar

  • AT89C2051 veri sayfası:
  • Küçük Aygıt C Derleyicisi (sdcc):
  • 8051 kaynakları:
  • AT89C2051 programcı deposu:
  • merhaba-8051 deposu:

Önerilen: