Mundarija:
- 1 -qadam: talablar
- 2 -qadam: Dasturchi yaratish
- 3 -qadam: Dasturchi dasturini o'rnatish
- 4 -qadam: Chipni dasturlash
- 5 -qadam: yig'ish
- 6 -qadam: Kodni tushuntirish
- 7 -qadam: Qo'shimcha manbalar
Video: AT89C2051 bilan 8051 dasturlashga kirish (Mehmonlar ishtirokida: Arduino): 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
8051 (MCS-51 nomi bilan ham tanilgan)-bu 80-yillardagi MCU dizayni, bugungi kunda mashhur bo'lib qolmoqda. Zamonaviy 8051-ga mos keladigan mikrokontrollerlar har xil shakl va o'lchamlarda va atrof-muhit birliklarining keng assortimentida bir nechta sotuvchilardan mavjud. Bu yo'riqnomada biz Atmel'dan AT89C2051 MCU ni ko'rib chiqamiz.
AT89C2051 - bu kichik (2Kbaytli Flash, 128 baytli RAM), arzon (chip uchun ~ 1,40 dollar) mikrokontroller.
- 2.7-6V kuchlanish
- 15 kirish/chiqish liniyasi
- 2 taymer (16 bit)
- Ichki va tashqi uzilishlar
- UART
- Chipdagi analog taqqoslagich
- 24 MGts chastotali 2MIPSgacha
1 -qadam: talablar
Talablar:
- Linux kompyuter (kerakli dasturiy ta'minot: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 chipi (DIP20 to'plami)
- 20 pinli ZIF rozetkasi
- Optocoupler (tercihen MOSFET chiqishi)
- Arduino prototipli qalqoni
- 12V quvvat manbai
- 5V quvvat manbai
- 16 MGts kristalli osilator
- 2x30pF kondansatör
- 100nF kondansatör
- Diyot (masalan: 1N400X)
- Rezistorlar (1K, 3K3)
- Protoboard
- Jumperlar
- Mis sim
Kerakli dasturiy ta'minotni tekshiring:
qaysi python3
qaysi sdcc qaysi git
2 -qadam: Dasturchi yaratish
Bu bo'lim qisqa bo'ladi, chunki men bir muncha vaqt oldin dasturlash qalqonini qurganman. Men yig'ilgan taxtaning sxemasi va rasmlarini biriktirdim. Sxemaning PDF -ni omborda topish mumkin.
Siz dasturchi panelini dasturlashingiz kerak bo'ladi:
1. Ma'lumotlar omborini klonlang.
git klon
2. AT89C2051_programmer/AT89_prog/AT89_prog.ino faylini Arduino IDE -da oching.
3. Arduino IDE -dan eskizni yarating va yuklang.
3 -qadam: Dasturchi dasturini o'rnatish
1. Python virtual muhitini yarating.
python3 -m venv venv
. venv/bin/faollashtiring
2. at89overlord -ni o'rnating. at89overlord - bu AT89C2051 chipi uchun ochiq manba kodli dasturchi, uning manba kodini bu erda topishingiz mumkin.
pipni at89overlord -ga o'rnating
3. O'rnatishni tekshiring.
ot89 ustozi -h
4 -qadam: Chipni dasturlash
1. Oddiy miltillash loyihasini klonlang.
CD ~
git klon https://github.com/piotrb5e3/hello-8051.git cd salom-8051/
2. Ilovani yarating.
qilmoq
3. Arduinoni shaxsiy kompyuterga ulang, 12V quvvat manbaiga ulang, AT89C2051 chipini ZIF rozetkasiga joylashtiring.
4. Arduino ketma -ket portini toping.
ls /dev /tty*
5. Chipga o'rnatilgan IntelHex faylini yuklang. Agar sizning Arduino portingiz /dev /ttyACM0 dan farq qilsa, siz to'g'ri qiymatni -p buyruq qatori parametri bilan o'tkazishingiz kerak.
ot89verlord -f./hello.ihx
5 -qadam: yig'ish
Sxemaga muvofiq sxemani yig'ing. PDF -versiyasini omborda topish mumkin.
Siz taxminan 0,5 Gts chastotali yashil LED chiroqni ko'rishingiz kerak.
6 -qadam: Kodni tushuntirish
#qo'shing
#qo'shing
Biz sdcc -dan AT89X051 sarlavhasini qo'shishni boshlaymiz. U o'zgarmaydiganlar kabi registrlar bilan ishlash uchun makrolarni o'z ichiga oladi. Ud8_t va uint16_t tamsayı turlarining ta'riflarini o'z ichiga olgan stdint.h ni ham o'z ichiga oladi.
// Osilator 16 MGts ga teng deb hisoblaymiz
#aniqlang INTERRUPTS_PER_SECOND 5208
Timer0 oshib ketganda uzilish sodir bo'ladi. U bitta 8 bitli taymer sifatida tuzilgan, shuning uchun bu har 2^8 protsessor tsiklida sodir bo'ladi. Bitta protsessor tsikli 12 soatlik tsiklni oladi va biz 16000000/12/2^8 = 5208.33333 ga yetamiz.
uchuvchi uint8_t led_state = 0;
uchuvchi uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Biz boshqariladigan davlat nazoratini e'lon qilamiz va hisoblagich o'zgaruvchilarini to'xtatamiz.
void Timer0_ISR (void) _ uzilish (1) {
timer_counter--; agar (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Har safar Timer0 oshib ketganda, hisoblagich kamayadi. Agar u nolga teng bo'lsa, u asl holatiga qaytariladi va LED holati o'zgartiriladi. Bu sekundiga bir marta sodir bo'ladi, natijada ~ 0,5Hz LED yonib -o'chib turadi.
int main () {
TMOD = 0x3; // Taymer rejimi - 8 bit, oldindan hisoblagich yo'q. chastota = OSCFREQ/12/2^8 TL0 = 0; // Hisoblagichni tozalash TH0 = 0; // TR0 = 1 registrini tozalash; // Taymerni ishga tushirish uchun o'rnating. ET0 = 1; // uzilishni o'rnating. EA = 1; // Global uzilishni o'rnating. while (1) {if (led_state) {P1 = 0xFF; } boshqa {P1 = 0x00; }}}
Biz taymer modulini konfiguratsiya qilamiz va o'zgaruvchan holatni nazorat qilamiz. TMM - bu taymer rejimini boshqarish registri. TL0 va TH0 - Timer0 boshqaruv registrlari. ET0-taymerni boshqarish registridagi (TCON) faollashtiruvchi-timer0 biti. TR0 va EA - uzilishlarni yoqish registridagi (IE) bitlar.
7 -qadam: Qo'shimcha manbalar
- AT89C2051 ma'lumotlar jadvali:
- Kichik qurilma C kompilyatori (sdcc):
- 8051 manbalari:
- AT89C2051 dasturchi ombori:
- salom-8051 ombori:
Tavsiya:
TinkerCad -da Arduino -dan foydalanadigan mehmonlar hisoblagichi: 3 qadam
TinkerCad -da Arduino -dan foydalanadigan mehmonlar hisoblagichi: Biz ko'p marta seminar zali, konferents -zal yoki Savdo markazi yoki ma'badga tashrif buyurgan odam/odamlarni kuzatib borishimiz kerak. Ushbu loyihadan har qanday konferents -zalga yoki seminar zaliga kiruvchi tashrifchilar sonini hisoblash va ko'rsatish uchun foydalanish mumkin
Samytronix Pi: DIY Raspberry Pi ish stoli kompyuter (kirish mumkin GPIO bilan): 13 qadam (rasmlar bilan)
Samytronix Pi: DIY Raspberry Pi ish stoli kompyuteri (kirish mumkin GPIO bilan): Ushbu loyihada biz Raspberry Pi ish stoli kompyuterini yaratamiz, uni men Samytronix Pi deb atayman. Bu ish stoli kompyuteri asosan 3 mm lazerli kesilgan akril varaqdan qilingan. Samytronix Pi HD monitor, karnay va eng muhimi kirish bilan jihozlangan
Mehmonlar kitobi kamerasi: 4 qadam
Mehmonlar kitobi kamerasi: Ko'pchiligingiz bilasizki, to'y ko'p kuch talab qiladi. Kuyov o'zining kuyovi va u juda band bo'lishini, hatto mehmonlariga maxsus kunda ular bilan bo'lganlari uchun minnatdorchilik bildira olmasliklarini yaxshi biladi. Hozirgi kunda ko'plab to'ylar bo'lib o'tmoqda, kelin
Mehmonlar hisoblagichi bilan avtomatik xona chiroqlari!: 7 qadam
Mehmonlar hisoblagichi bilan avtomatik xona chiroqlari !: Hey! Agar siz zerikarli yorug'lik kalitlaridan xalos bo'lishni va xonangizdagi chiroqlarni arzon narxda avtomatik qilishni xohlasangiz, siz to'g'ri joydasiz! Bu loyihani qurish juda oson bo'ladi. Oddiylik bilan ketmang, bu juda zo'r va 100% ishlaydi
Arduino bilan 4x4 klaviaturaga kirish: 5 qadam (rasmlar bilan)
Arduino yordamida 4x4 klaviaturaga kirish: 4x4 klaviatura matritsa kabi joylashtirilgan 16 tugmachadan iborat. Matritsali skanerlash usuli bilan 4x4 klaviaturaga kirish usuli. 4x4 klaviatura unga kirish uchun 8 ta pinni, ya'ni ustunlar uchun 4 ta va chiziq uchun 4 ta pinni talab qiladi. Qanday skanerlash