Съдържание:
- Стъпка 1: Изисквания
- Стъпка 2: Изграждане на програмист
- Стъпка 3: Инсталиране на софтуер за програмисти
- Стъпка 4: Програмиране на чипа
- Стъпка 5: Монтаж
- Стъпка 6: Обяснение на кода
- Стъпка 7: Допълнителни ресурси
Видео: Въведение в програмирането 8051 с AT89C2051 (Гост с участието: Arduino): 7 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
8051 (известен също като MCS-51) е MCU дизайн от 80-те, който остава популярен и днес. Съвременните 8051-съвместими микроконтролери се предлагат от множество доставчици, във всички форми и размери и с широка гама от периферни устройства. В тази инструкция ще разглеждаме AT89C2051 MCU от Atmel.
AT89C2051 е малък (2Kbyte Flash, 128byte RAM), евтин (~ $ 1.40 на чип) микроконтролер.
- 2.7-6V работа
- 15 I/O линии
- 2 таймера (16 бита)
- Вътрешни и външни прекъсвания
- UART
- Аналогов компаратор на чип
- До 2MIPS с 24MHz часовник
Стъпка 1: Изисквания
Изисквания:
- Linux компютър (необходим софтуер: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Чип AT89C2051 (пакет DIP20)
- 20-пинов ZIF гнездо
- Оптрон (за предпочитане MOSFET изход)
- Щит за прототипиране на Arduino
- 12V захранване
- 5V захранване
- 16MHz кристален осцилатор
- 2x 30pF кондензатор
- 100nF кондензатор
- Диод (например: 1N400X)
- Резистори (1K, 3K3)
- Protoboard
- Джъмпери
- Меден проводник
Проверете за необходимия софтуер:
който python3
които правят кой sdcc кой git
Стъпка 2: Изграждане на програмист
Този раздел ще бъде кратък, тъй като преди време изградих моя щит за програмиране. Прилагам схемата и снимките на сглобената платка. PDF файлът на схемата може да бъде намерен в хранилището.
Ще трябва да програмирате борда на програмиста:
1. Клонирайте хранилището.
git клонинг
2. Отворете файла AT89C2051_programmer/AT89_prog/AT89_prog.ino в Arduino IDE.
3. Изградете и качете скицата от IDE на Arduino.
Стъпка 3: Инсталиране на софтуер за програмисти
1. Създайте виртуална среда на python.
python3 -m venv venv
. venv/bin/активира
2. Инсталирайте at89overlord. at89overlord е програмист с отворен код за чипа AT89C2051, написан от мен. Изходният код може да бъде намерен тук.
pip install at89overlord
3. Проверете инсталацията.
at89overlord -h
Стъпка 4: Програмиране на чипа
1. Клонирайте прост мигащ проект.
cd ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Създайте приложението.
направете
3. Свържете Arduino към компютъра, свържете 12V захранване, поставете чипа AT89C2051 в гнездото ZIF.
4. Намерете серийния порт на Arduino.
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.
// Ако приемем, че осцилаторът е 16MHz
#дефинирайте 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;
Декларираме контрола на променящите се състояния на LED и прекъсваме брояча.
void Timer0_ISR (void) _interrupt (1) {
таймер_ брояч--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Всеки път, когато Timer0 прелива, броячът намалява. Ако е равно на нула, то се нулира и състоянието на светодиода се променя. Това се случва около веднъж в секунда, което води до ~ 0.5Hz честота на мигане на 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; } else {P1 = 0x00; }}}
Конфигурираме модула на таймера и чакаме промени в променливата за управление на състоянието. TMOD е регистърът за управление на режима на таймера. TL0 и TH0 са контролни регистри на Timer0. ET0 е битът enable-timer0 в регистъра за управление на таймера (TCON). TR0 и EA са битове в регистъра за разрешаване на прекъсване (IE).
Стъпка 7: Допълнителни ресурси
- Информационен лист за AT89C2051:
- Компилатор за малко устройство C (sdcc):
- 8051 ресурси:
- Хранилище за програмисти AT89C2051:
- хранилище за здравей-8051:
Препоръчано:
Въведение в Arduino: 15 стъпки (със снимки)
Въведение в Arduino: Arduino е платка за разработка на микроконтролер с отворен код. На обикновен английски можете да използвате Arduino за четене на сензори и управление на неща като двигатели и светлини. Това ви позволява да качвате програми на тази дъска, които след това могат да взаимодействат с нещата
Подобрения в програмирането на влакове в MATLAB: 6 стъпки
Подобрения в програмирането на влакове в MATLAB: Цел: Целта на тази програмирана система е да разгледа Arduino в малък мащаб и да приложи кодирането в по -голям мащаб, за да подобри потенциално някои характеристики за безопасност на железопътните системи Amtrak. За да направим това, добавихме сензор за влажност на почвата
Въведение в програмирането на Raspberry Pi без ръчно кодиране: 3 стъпки
Въведение в програмирането на Raspberry Pi без ръчно кодиране: Здравейте, тази инструкция ще ви покаже как да превърнете вашия Raspberry Pi в напълно програмируемо устройство за автоматизация, съвместимо с графично ориентиран език за програмиране за PLC, наречен функционална блокова диаграма (част от стандарта IEC 61131-3). Това може да бъде
Улесняване на изучаването на електрониката и програмирането с Visual DIY Workbench: 3 стъпки
Улесняване на изучаването на електрониката и програмирането с Visual DIY Workbench: Искали ли сте някога да вдъхновите децата да научат за електрониката и микроконтролерите? Общият проблем, с който често се сблъскваме, е, че основните познания в областта са доста трудни за разбиране от малки деца. Има няколко платки на
Въведение в разпознаването на глас с Elechouse V3 и Arduino .: 4 стъпки (със снимки)
Въведение в разпознаването на глас с Elechouse V3 и Arduino .: Здравейте …! Технологията за разпознаване на глас е тук през последните няколко години. Все още си спомняме голямото вълнение, което изпитахме, докато разговаряхме с първия iphone с Siri. Оттогава устройствата за гласови команди са нараснали до много напреднало ниво