Mündəricat:
- Addım 1: Tələblər
- Addım 2: Proqramçı qurmaq
- Addım 3: Proqramçı Proqramının Qurulması
- Addım 4: Çipin proqramlaşdırılması
- Addım 5: Montaj
- Addım 6: Kodun izahı
- Addım 7: Əlavə mənbələr
Video: AT89C2051 ilə 8051 Proqramlaşdırmaya Giriş (Qonaq Baş Rollarda: Arduino): 7 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
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:
- 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
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ı
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ı
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
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ı
#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ə:
Qonaq Kitab Kamerası: 4 addım
Qonaq Kitabçası Kamerası: Çoxlarınızın bildiyiniz kimi, toy çox zəhmət tələb edir. Damat nişanlısının və son dərəcə məşğul olacağını, xüsusi günündə yanında olduqları üçün qonaqlarına belə təşəkkür edə bilməyəcəyini yaxşı bilir. Bu günlərdə keçirilən bir çox toy, gəlin
Halloween Kuklaları Arduino ilə Baş: 6 addım (şəkillərlə)
Halloween Kuklaları Arduino ilə Baş: Bir "təkmilləşdirmə"; Arduino/servo motor birləşməsindən istifadə edərək kukla başına. Böyük hallowe'en prop və ya mənim evimdə .. qəhvə masasının mərkəzində
Elechouse V3 və Arduino ilə Səs Tanınmasına Giriş: 4 Addım (Şəkillərlə)
Elechouse V3 və Arduino ilə Səs Tanınmasına Giriş: Salam! … Səs tanıma texnologiyası son bir neçə ildə burada olmuşdur. Siri ilə işləyən ilk iPhone ilə danışarkən yaşadığımız böyük həyəcanı hələ də xatırlayırıq. O vaxtdan bəri səsli komanda cihazları çox inkişaf etmiş bir səviyyəyə yüksəldi
Raspberry Pi B+ilə GPS Ublox Neo 6M -ə Əl ilə Giriş: 3 Addım
Raspberry Pi B+ilə GPS Ublox Neo 6M -ə Manual Giriş: Raspberry Pi, istifadəsi olduqca asan olan müxtəlif modullar üçün çox uyğun bir mini kompüterdir. Əsasən PC ilə eynidir, ancaq Raspberry Pi -dən GPIO ilə idarə oluna bilər. Raspberry Pi eyni zamanda bir neçə ünsiyyət xətti ilə dəstəklənir
Proqramlaşdırmaya axın cədvəli ilə başlayın: 7 addım
Proqramlaşdırmaya axın cədvəli ilə başlayın: Layihələriniz üçün PIC mikro nəzarətçilərindən istifadə etməyə başladınızmı? Proqramınız işləmədikdə çox faydalıdır, amma çox sinir bozucu olur. Akış qrafiki çəkərək fikirlərinizi sıralamağın bir yoludur. Peşəkar proqramçılar tez -tez bu şəkildə