Агуулгын хүснэгт:
- Алхам 1: Шаардлага
- Алхам 2: Программист бүтээх
- Алхам 3: Программист програмыг суулгах
- Алхам 4: Чипийг програмчлах
- Алхам 5: Чуулган
- Алхам 6: Кодын тайлбар
- Алхам 7: Нэмэлт нөөц
Видео: AT89C2051 програмтай 8051 програмчлалын танилцуулга (Зочин Гол дүрд: Arduino): 7 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
8051 (MCS-51 гэгддэг) нь 80-аад оны үеийн MCU загвар бөгөөд өнөөг хүртэл алдартай хэвээр байна. Орчин үеийн 8051-тэй нийцтэй микроконтроллеруудыг янз бүрийн хэлбэр, хэмжээтэй, олон төрлийн дагалдах хэрэгсэлтэй олон үйлдвэрлэгчдээс авах боломжтой. Энэхүү зааварчилгаанд бид Atmel -ийн AT89C2051 MCU -ийг үзэх болно.
AT89C2051 бол жижиг (2Кбайт флаш, 128 байт RAM), хямд (нэг чип тутамд ~ 1.40 доллар) микроконтроллер юм.
- 2.7-6V ажиллах хүч
- 15 I/O шугам
- 2 таймер (16 бит)
- Дотоод болон гадаад тасалдал
- UART
- Чип дээрх аналог харьцуулагч
- 24MHz цагтай 2MIPS хүртэл
Алхам 1: Шаардлага
Шаардлага:
- Linux PC (шаардлагатай програм хангамж: Arduino IDE, git, make, sdcc)
- Ардуино НҮБ
- AT89C2051 чип (DIP20 багц)
- 20 зүү ZIF залгуур
- Optocoupler (илүү зохимжтой MOSFET гаралт)
- Arduino загварчлалын бамбай
- 12V цахилгаан хангамж
- 5V цахилгаан хангамж
- 16 МГц болор осциллятор
- 2х 30pF конденсатор
- 100nF конденсатор
- Диод (жишээ нь: 1N400X)
- Эсэргүүцэл (1K, 3K3)
- Protoboard
- Үсрэгчид
- Зэс утас
Шаардлагатай програм хангамжийг шалгана уу:
аль питон3
аль нь ямар sdcc аль git
Алхам 2: Программист бүтээх
Би хэсэг хугацааны өмнө програмчлалын бамбайгаа бүтээсэн тул энэ хэсэг товч байх болно. Би угсарсан самбарын схем, зургийг хавсаргав. Схемийн PDF файлыг репозитороос олж болно.
Та програмист самбарыг програмчлах хэрэгтэй болно.
1. Хадгалах санг хуулбарлах.
git clone
2. AT89C2051_programmer/AT89_prog/AT89_prog.ino файлыг Arduino IDE дээр нээнэ үү.
3. Arduino IDE -аас ноорог зурж, байршуулах.
Алхам 3: Программист програмыг суулгах
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 -г компьютерт холбож, 12V тэжээлийг холбож, AT89C2051 чипийг ZIF залгуурт байрлуулна.
4. Arduino -ийн цуваа портыг олоорой.
ls /dev /tty*
5. Баригдсан IntelHex файлыг чип дээр байршуулах. Хэрэв таны Arduino -ийн порт нь /dev /ttyACM0 -ээс өөр байвал та -p тушаалын мөрийн параметрийн тусламжтайгаар зөв утгыг дамжуулах ёстой.
at89overlord -f./hello.ihx
Алхам 5: Чуулган
Схемийн дагуу хэлхээг угсарна. PDF хувилбарыг репозитороос олж болно.
Та ойролцоогоор 0.5 Гц давтамжтай ногоон LED гэрлийг харах ёстой.
Алхам 6: Кодын тайлбар
#оруулах
#оруулах
Бид sdcc -ээс AT89X051 толгойг оруулж эхэлнэ. Энэ нь регистрүүдтэй хувьсагч шиг харьцах макро агуулдаг. Бид мөн uint8_t ба uint16_t бүхэл тоон төрлүүдийн тодорхойлолтыг агуулсан stdint.h -ийг агуулдаг.
// Осцилляторыг 16 МГц гэж үзье
5208 -ийн INTERRUPTS_PER_SECOND -ийг тодорхойлох
Timer0 халих үед тасалдал гардаг. Энэ нь нэг 8 битийн таймер байдлаар тохируулагдсан байдаг тул энэ нь 2^8 процессорын цикл тутамд тохиолддог. Нэг процессорын цикл нь 12 цагийн мөчлөг шаарддаг бөгөөд ингэснээр бид 16000000/12/2^8 = 5208.33333 болно.
дэгдэмхий uint8_t led_state = 0;
дэгдэмхий uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Бид удирдсан төрийн хяналтыг зарлаж, тоолуурын хувьсагчдыг тасалдаг.
хүчингүй Timer0_ISR (void) _ тасалдал (1) {
timer_counter-; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Timer0 -ийг халих бүрт тоолуур буурдаг. Хэрэв энэ нь тэгтэй тэнцүү бол түүнийг дахин тохируулж, удирдсан төлөвийг өөрчилдөг. Энэ нь секундэд нэг удаа тохиолддог бөгөөд үүний үр дүнд ~ 0.5 Гц LED анивчих давтамж үүсдэг.
int main () {
TMOD = 0x3; // Таймерын горим - 8 бит, урьдчилсан тооцоолуур хийгээгүй. давтамж = OSCFREQ/12/2^8 TL0 = 0; // Цэвэр тоолуур TH0 = 0; // TR0 = 1 бүртгэлийг цэвэрлэх; // Таймерыг ажиллуулахаар тохируулна уу. ET0 = 1; // Тасалдлыг тохируулах. EA = 1; // Глобал тасалдлыг тохируулах. while (1) {if (led_state) {P1 = 0xFF; } өөр {P1 = 0x00; }}}
Бид таймерын модулийг тохируулж, удирдлагын төлөвийн хувьсагчийн өөрчлөлтийг хүлээж байна. TMOD бол таймер горимын хяналтын бүртгэл юм. TL0 ба TH0 нь Timer0 хяналтын бүртгэл юм. ET0 бол таймерын хяналтын регистрийн (TCON) идэвхжүүлэгч-timer0 бит юм. TR0 ба EA нь тасалдлыг идэвхжүүлэх бүртгэлийн (IE) битүүд юм.
Алхам 7: Нэмэлт нөөц
- AT89C2051 мэдээллийн хуудас:
- Жижиг төхөөрөмж C хөрвүүлэгч (sdcc):
- 8051 эх сурвалж:
- AT89C2051 програмистын репозитор:
- Сайн байна уу-8051 репозитор:
Зөвлөмж болгож буй:
BT програмтай 7 хөл 7 сегментийн RGB дэлгэц: 22 алхам (зурагтай)
BT програмтай 7 хөл 7 сегментийн RGB дэлгэц: Энэ бол 6 футын цаг гаргах миний урт хугацааны мөрөөдөл (гэхдээ энд 7 футын дэлгэц байна), гэхдээ энэ бол зөвхөн мөрөөдөл юм. Энэ бол эхний цифрийг хийх эхний алхам боловч лазер таслагч гэх мэт машинтай ажиллахдаа ийм б хийхэд маш хэцүү байдаг
Гар кодлохгүйгээр Raspberry Pi програмчлалын танилцуулга: 3 алхам
Гар кодлохгүйгээр Raspberry Pi програмчлах танилцуулга: Сайн байна уу, энэхүү зааварчилгаа нь Raspberry Pi-ийг функциональ блок диаграм (IEC 61131-3 стандартын нэг хэсэг) гэж нэрлэдэг PLC-ийн график чиглэсэн програмчлалын хэлтэй нийцсэн бүрэн програмчлагдах автомат төхөөрөмж болгон хэрхэн яаж хийхийг танд үзүүлэх болно. Энэ байж болно
LED болон AT Tiny -ийг ашиглан анивчсан од үүсгэхийн тулд "Гялалзах, гялалзах, бяцхан од" дүрд тоглож буй пьезо ашиглан 6 алхам
LED болон AT Tiny -ийг ашиглан "Гялалзах, гялалзах, бяцхан од" тоглуулах замаар анивчсан од бүтээх: Энэ хэлхээ нь LED, AT TINY болон piezo -ийг ашиглан анивчсан од, & Twinkle, Twinkle, little star " Дараагийн алхамыг болон хэлхээний тоймыг үзнэ үү
Өөрийн BT програмтай RGB хязгааргүй цаг: 15 алхам (зурагтай)
Өөрийн BT програмтай RGB хязгааргүй цаг: Энгийн дижитал ба аналог цаг нь уйтгартай байдаг тул Dial, Hour hand, Minute hand, Second hand зэрэгт тохируулсан өнгө бүхий сэрүүн цаг бүтээхээр төлөвлөж байна. Үүнийг хийхийн тулд эхлээд Addressable RGB LED зурвас ашиглан цагийг хөгжүүлэхийг хүсч байна. Дараа нь А -тай холбоо тогтоохын тулд
Компьютерийн хяналтын програмтай Arduino Color Sorter Project: 4 алхам (зурагтай)
Pc Control програмтай Arduino Color Sorter Project: Энэ төсөлд би TCS34725 өнгөний мэдрэгчийг сонгосон. Учир нь энэхүү мэдрэгч нь бусадтай харьцуулахад илүү нарийвчлалтай илрүүлдэг бөгөөд орчны гэрлийн өөрчлөлтөд нөлөөлдөггүй