Բովանդակություն:

Ներածություն 8051 ծրագրավորման AT89C2051- ով (Հյուրը ՝ Arduino) ՝ 7 քայլ (նկարներով)
Ներածություն 8051 ծրագրավորման AT89C2051- ով (Հյուրը ՝ Arduino) ՝ 7 քայլ (նկարներով)

Video: Ներածություն 8051 ծրագրավորման AT89C2051- ով (Հյուրը ՝ Arduino) ՝ 7 քայլ (նկարներով)

Video: Ներածություն 8051 ծրագրավորման AT89C2051- ով (Հյուրը ՝ Arduino) ՝ 7 քայլ (նկարներով)
Video: Ներածություն 2024, Նոյեմբեր
Anonim
Ներածություն 8051 ծրագրավորման AT89C2051- ով (հյուրեր ՝ Arduino)
Ներածություն 8051 ծրագրավորման AT89C2051- ով (հյուրեր ՝ Arduino)

8051-ը (հայտնի է նաև որպես MCS-51) 80-ականների MCU ձևավորում է, որն այսօր էլ մնում է հանրաճանաչ: 80ամանակակից 8051 համատեղելի միկրոկառավարիչները հասանելի են բազմաթիվ վաճառողներից ՝ բոլոր ձևերի և չափերի, ինչպես նաև ծայրամասային սարքերի լայն տեսականիով: Այս ուսանելի դասում մենք կանդրադառնանք Atmel- ից AT89C2051 MCU- ին:

AT89C2051- ը փոքր (2 Կբայթ Flash, 128 բայթ RAM), էժան (մեկ չիպի համար 40 1,40 դոլար) միկրոկառավարիչ է: Առանձնահատկություններ.

  • 2.7-6V գործողություն
  • 15 I/O տող
  • 2 ժամաչափ (16 բիթ)
  • Ներքին և արտաքին ընդհատումներ
  • UART
  • Չիպային անալոգային համեմատիչ
  • Մինչև 2MIPS ՝ 24 ՄՀց ժամացույցով

Քայլ 1: Պահանջներ

Պահանջներ
Պահանջներ

Պահանջներ:

  • Linux համակարգիչ (անհրաժեշտ ծրագրակազմ ՝ Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 չիպ (DIP20 փաթեթ)
  • 20-պտույտ ZIF վարդակից
  • Optocoupler (նախընտրելի է MOSFET- ելք)
  • Arduino նախատիպի վահան
  • 12 Վ էլեկտրամատակարարում
  • 5 Վ էլեկտրամատակարարում
  • 16 ՄՀց բյուրեղային տատանում
  • 2x 30pF կոնդենսատոր
  • 100nF կոնդենսատոր
  • Դիոդ (օր. ՝ 1N400X)
  • Ռեզիստորներ (1K, 3K3)
  • Նախատախտակ
  • Ցատկողներ
  • Պղնձի մետաղալար

Ստուգեք անհրաժեշտ ծրագրակազմը.

որը պիթոն 3

որոնք որ sdcc որ git

Քայլ 2: Կառուցեք ծրագրավորող

Կառուցելով ծրագրավորող
Կառուցելով ծրագրավորող
Կառուցելով ծրագրավորող
Կառուցելով ծրագրավորող
Կառուցելով ծրագրավորող
Կառուցելով ծրագրավորող

Այս բաժինը կարճ կլինի, քանի որ ես որոշ ժամանակ առաջ կառուցեցի իմ ծրագրավորման վահանը: Ես կցել եմ հավաքված տախտակի սխեմատիկ պատկերը և նկարները: Սխեմատիկայի PDF- ը կարելի է գտնել շտեմարանում:

Դուք պետք է ծրագրավորեք ծրագրավորողի խորհուրդը.

1. Կլոնավորեք պահեստը:

git կլոն

2. Բացեք AT89C2051_programmer/AT89_prog/AT89_prog.ino ֆայլը Arduino IDE- ում:

3. Կառուցեք և վերբեռնեք էսքիզը Arduino IDE- ից:

Քայլ 3: Programրագրավորողի ծրագրակազմի տեղադրում

Merրագրավորողի ծրագրակազմի տեղադրում
Merրագրավորողի ծրագրակազմի տեղադրում
Merրագրավորողի ծրագրակազմի տեղադրում
Merրագրավորողի ծրագրակազմի տեղադրում

1. Ստեղծել պիթոնի վիրտուալ միջավայր:

python3 -m venv venv

. venv/bin/ակտիվացնել

2. Տեղադրեք at89overlord: at89overlord- ը բաց կոդով ծրագրավորող է AT89C2051 չիպի համար: Իմ աղբյուրի կոդը կարելի է գտնել այստեղ:

pip տեղադրել at89overlord

3. Ստուգեք տեղադրումը:

at89overlord -h

Քայլ 4. Չիպի ծրագրավորում

Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում
Չիպի ծրագրավորում

1. Կլոնավորել մի պարզ թարթման նախագիծ:

cd

git clone https://github.com/piotrb5e3/hello-8051.git cd բարև-8051/

2. Կառուցեք հավելվածը:

կատարել

3. Միացրեք Arduino- ն համակարգչին, միացրեք 12 Վ լարման աղբյուրը, տեղադրեք AT89C2051 չիպը ZIF վարդակից:

4. Տեղադրեք Arduino- ի սերիական նավահանգիստը:

ls /dev /tty*

5. Ներկառուցված IntelHex ֆայլը վերբեռնեք չիպի մեջ: Եթե ձեր Arduino- ի նավահանգիստը տարբերվում է /dev /ttyACM0- ից, ապա պետք է ճիշտ արժեքը փոխանցեք -p հրամանի տողի պարամետրով:

at89overlord -f./hello.ihx

Քայլ 5: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով

Հավաքեք սխեման ըստ սխեմատիկ: Պահեստում կարելի է գտնել PDF տարբերակ:

Դուք պետք է տեսնեք կանաչ LED լուսարձակը ՝ մոտ 0.5 Հց հաճախականությամբ:

Քայլ 6: Կոդի բացատրություն

Կոդի բացատրություն
Կոդի բացատրություն

#ներառում

#ներառում

Մենք սկսում ենք sdcc- ից ներառելով AT89X051 վերնագիրը: Այն պարունակում է մակրոներ ռեգիստրների հետ փոխազդելու համար, կարծես դրանք փոփոխականներ են: Մենք նաև ներառում ենք stdint.h, որը պարունակում է uint8_t և uint16_t ամբողջ տեսակի տեսակների սահմանումներ:

// Ենթադրելով, որ տատանողը 16 ՄՀց է

#սահմանել INTERRUPTS_PER_SECOND 5208

Ընդհատումը տեղի է ունենում, երբ Timer0- ը դուրս է գալիս: Այն կազմաձևված է որպես մեկ 8 բիթ ժամաչափ, այնպես որ դա տեղի է ունենում յուրաքանչյուր 2^8 պրոցեսորային ցիկլերի ընթացքում: Մեկ պրոցեսորային ցիկլը տևում է 12 ժամացույցի ցիկլ, և այսպիսով մենք հասնում ենք 16000000/12/2^8 = 5208.33333:

անկայուն uint8_t led_state = 0;

անկայուն uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Մենք հայտարարում ենք գլխավորած պետական վերահսկողություն և ընդհատում ենք հաշվիչի փոփոխականները:

դատարկ ժամանակաչափ 0_ISR (անվավեր) _ ընդհատում (1) {

ժամանակաչափ_հաշվիչ--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Ամեն անգամ, երբ Timer0- ը դուրս է գալիս հաշվիչից, հաշվիչը նվազում է: Եթե այն հավասար է զրոյի, այն վերակայվում է, և led վիճակը փոխվում է: Սա տեղի է ունենում վայրկյանում մեկ անգամ, որի արդյունքում ~ 0.5 Հց LED լուսարձակի հաճախականությունը:

int main () {

TMOD = 0x3; // Timամաչափի ռեժիմ - 8 բիթ, առանց նախնական չափման սարքի: հաճախականություն = OSCFREQ/12/2^8 TL0 = 0; // Մաքրել հաշվիչ TH0 = 0; // Մաքրել գրանցամատյանը TR0 = 1; // Setամաչափի գործարկում սահմանել: ET0 = 1; // Սահմանել ընդհատում: EA = 1; // Սահմանել գլոբալ ընդհատում: իսկ (1) {if (led_state) {P1 = 0xFF; } այլ {P1 = 0x00; }}}

Մենք կարգավորում ենք ժմչփի մոդուլը և սպասում փոփոխությունների led վիճակի կառավարման փոփոխականում: TMOD- ը ժամաչափի ռեժիմի կառավարման գրանցամատյան է: TL0 և TH0- ը Timer0 կառավարման մատյաններ են: ET0- ը ժամաչափի կառավարման գրանցամատյանում (TCON) միացման-ժամանակաչափ 0 բիթն է: TR0- ն և EA- ն ընդմիջումների միացման գրանցամատյանում (IE) բիթեր են:

Քայլ 7: Լրացուցիչ ռեսուրսներ

  • AT89C2051 տվյալների թերթ ՝
  • Փոքր սարք C կազմող (sdcc) ՝
  • 8051 ռեսուրսներ ՝
  • AT89C2051 ծրագրավորողի շտեմարան ՝
  • բարև -8051 շտեմարան ՝

Խորհուրդ ենք տալիս: