فهرست مطالب:

مقدمه ای بر برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو): 7 مرحله (همراه با تصاویر)
مقدمه ای بر برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو): 7 مرحله (همراه با تصاویر)

تصویری: مقدمه ای بر برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو): 7 مرحله (همراه با تصاویر)

تصویری: مقدمه ای بر برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو): 7 مرحله (همراه با تصاویر)
تصویری: آموزش برنامه نویسی پایتون از مقدماتی تا پیشرفته ( صفر تا صد python ) 2024, نوامبر
Anonim
آشنایی با برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو)
آشنایی با برنامه نویسی 8051 با AT89C2051 (با بازی مهمان: آردوینو)

8051 (همچنین به عنوان MCS-51 شناخته می شود) یک طراحی MCU از دهه 80 است که امروزه همچنان محبوب است. میکروکنترلرهای سازگار با 8051 مدرن از چندین فروشنده ، در همه اشکال و اندازه ها ، و با طیف گسترده ای از لوازم جانبی در دسترس هستند. در این قسمت آموزشی ما ATC9C2051 MCU از Atmel را بررسی خواهیم کرد.

AT89C2051 یک میکروکنترلر کوچک (فلش 2 کیلوبایت ، 128 گیگابایت RAM) ، ارزان (1.40 دلار آمریکا برای هر تراشه) است. ویژگی ها:

  • عملکرد 2.7-6V
  • 15 خط ورودی/خروجی
  • 2 تایمر (16 بیت)
  • وقفه های داخلی و خارجی
  • UART
  • مقایسه کننده آنالوگ روی تراشه
  • حداکثر 2MIPS با کلاک 24 مگاهرتز

مرحله 1: الزامات

الزامات
الزامات

الزامات:

  • کامپیوتر لینوکس (نرم افزار مورد نیاز: Arduino IDE ، git ، make ، sdcc)
  • آردوینو UNO
  • تراشه AT89C2051 (بسته DIP20)
  • سوکت ZIF 20 پینی
  • Optocoupler (ترجیحاً MOSFET-output)
  • سپر نمونه اولیه آردوینو
  • منبع تغذیه 12 ولت
  • منبع تغذیه 5 ولت
  • نوسان ساز کریستالی 16 مگاهرتز
  • خازن 2x 30pF
  • خازن 100nF
  • دیود (به عنوان مثال: 1N400X)
  • مقاومت ها (1K ، 3K3)
  • پروتو بورد
  • پرش کننده ها
  • سیم مسی

نرم افزار مورد نیاز را بررسی کنید:

کدام پایتون 3

که کدوم sdcc کدوم رو درست میکنن

مرحله 2: ایجاد برنامه نویس

ساختن برنامه نویس
ساختن برنامه نویس
ساختن برنامه نویس
ساختن برنامه نویس
ساختن برنامه نویس
ساختن برنامه نویس

این بخش مختصر خواهد بود ، زیرا من مدتی پیش سپر برنامه نویسی خود را ساختم. من شماتیک و تصاویر تخته مونتاژ شده را ضمیمه کرده ام. PDF طرحواره را می توان در مخزن یافت.

شما باید صفحه برنامه نویس را برنامه ریزی کنید:

1. مخزن را کلون کنید.

git clone

2. فایل AT89C2051_programmer/AT89_prog/AT89_prog.ino را در Arduino IDE باز کنید.

3. طرح را از IDE Arduino بسازید و بارگذاری کنید.

مرحله 3: نصب نرم افزار برنامه نویس

نصب نرم افزار برنامه نویس
نصب نرم افزار برنامه نویس
نصب نرم افزار برنامه نویس
نصب نرم افزار برنامه نویس

1. یک محیط مجازی پایتون ایجاد کنید.

python3 -m venv venv

به venv/bin/activ

2. at89overlord را نصب کنید. at89overlord یک برنامه نویس منبع باز برای تراشه AT89C2051 است که توسط من نوشته شده است. کد منبع را می توانید در اینجا پیدا کنید.

پیپ را در at89overlord نصب کنید

3. نصب را تأیید کنید.

at89overlord -h

مرحله 4: برنامه نویسی تراشه

برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه
برنامه نویسی تراشه

1. یک پروژه پلک زدن ساده را کلون کنید.

سی دی

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

2. برنامه را بسازید.

بساز

3. آردوینو را به رایانه وصل کنید ، منبع تغذیه 12 ولت را وصل کنید ، تراشه AT89C2051 را در سوکت ZIF قرار دهید.

4. محل پورت سریال آردوینو را پیدا کنید.

ls /dev /tty*

5. فایل IntelHex ساخته شده را روی تراشه بارگذاری کنید. اگر پورت Arduino شما متفاوت از /dev /ttyACM0 است ، باید مقدار صحیح را با پارامتر خط فرمان -p ارسال کنید.

at89overlord -f./hello.ihx

مرحله 5: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

مدار را مطابق شماتیک جمع کنید. نسخه PDF را می توانید در مخزن پیدا کنید.

شما باید فلش LED سبز را با فرکانس حدود 0.5Hz مشاهده کنید.

مرحله 6: توضیح کد

توضیح کد
توضیح کد

#عبارتند از

#عبارتند از

کار را با قرار دادن هدر AT89X051 از sdcc شروع می کنیم. این شامل ماکروهایی برای تعامل با ثبات ها است که گویی متغیر هستند. ما همچنین شامل stdint.h است که شامل تعاریف انواع صحیح uint8_t و uint16_t است.

// با فرض نوسان ساز 16 مگاهرتز

#تعریف INTERRUPTS_PER_SECOND 5208

وقفه زمانی رخ می دهد که تایمر 0 سرریز شود. این برنامه به عنوان یک تایمر 8 بیتی پیکربندی شده است ، بنابراین این اتفاق در هر چرخه پردازش 2^8 رخ می دهد. یک چرخه پردازنده 12 چرخه ساعت را می گیرد و بنابراین به 16000000/12/2^8 = 5208.33333 می رسیم.

فرار uint8_t led_state = 0؛

فرار uint16_t timer_counter = INTERRUPTS_PER_SECOND؛

ما کنترل حالت led را اعلام کرده و متغیرهای شمارنده را قطع می کنیم.

void Timer0_ISR (void) _ وقفه (1) {

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

هربار که تایمر 0 سرریز می شود شمارنده کاهش می یابد. اگر مساوی صفر باشد بازنشانی می شود و حالت led تغییر می کند. این اتفاق یک بار در ثانیه رخ می دهد و در نتیجه ~ 0.5Hz فرکانس چشمک زدن LED ایجاد می شود.

int main () {

TMOD = 0x3 ؛ // حالت تایمر - 8 بیت ، بدون پیش شماره. freq = OSCFREQ/12/2^8 TL0 = 0؛ // پاک کننده شمارنده TH0 = 0؛ // پاک کردن ثبت TR0 = 1؛ // تایمر را برای اجرا تنظیم کنید. ET0 = 1 ؛ // تنظیم وقفه. EA = 1 ؛ // تنظیم وقفه جهانی. در حالی که (1) {if (led_state) {P1 = 0xFF ؛ } else {P1 = 0x00؛ }}}

ما ماژول تایمر را پیکربندی کرده و منتظر تغییرات در متغیر کنترل حالت led هستیم. TMOD ثبت کننده زمان کنترل زمان است. TL0 و TH0 رجیسترهای کنترل Timer0 هستند. ET0 بیت فعال-زمان سنج 0 در رجیستر کنترل تایمر (TCON) است. TR0 و EA بیت هایی در ثبت وقفه فعال (IE) هستند.

مرحله 7: منابع اضافی

  • برگه اطلاعات AT89C2051:
  • کوچک دستگاه C کامپایلر (sdcc):
  • منابع 8051:
  • مخزن برنامه نویس AT89C2051:
  • سلام مخزن 8051:

توصیه شده: