Программирование серии Atmel AT89 через Arduino
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
В этом руководстве я покажу вам, как записать ваш шестнадцатеричный файл в AT89c52 с помощью Arduino Uno всего за несколько простых шагов. Для этого мы должны подключить AT89c52 к Arduino Uno и дать ему светодиоды через интерфейсный светодиод с At89c52.
Шаг 1. Спецификация материалов
- Arduino UNO
- Микроконтроллер AT89C52
- Конденсатор 10 мкФ
- Проволочные перемычки
- Резистор 8,2 кОм
- Конденсатор 510 Ом
- светодиод
- Кристалл 12 МГц
- Конденсатор 2 x 33 пФ
Шаг 2:Подключение микроконтроллера
Подключите микроконтроллер, как указано ниже:
- At89c52 Arduino Uno
- Контакт 6 Контакт 5
- Контакт 7 Контакт 4
- Контакт 8 Контакт 3
- Контакт 9 Контакт 2
Шаг 3. Кристалл
Подключите кристалл к контактам 18 и 19 Atmel, а затем подключите два конденсатора 33 пФ от контактов 18 и 19 к заземлению Atmel. Полную принципиальную схему см. В разделе «Схемы».
Шаг 4:VCC и GND
Подключите вывод 5 В Arduino Uno к 40-му выводу Atmel, а вывод GND - к 20-му выводу Atmel.
Шаг 5. Подключение светодиода
Индикатор интерфейса с помощью принципиальной схемы, представленной в разделе схем.
Шаг 6. Программное обеспечение
Нам нужен 8051 SPI Programmer, чтобы записать шестнадцатеричный файл в 89c52. Ссылка находится в разделе «Программное обеспечение». Загрузите предоставленный код в Arduino UNO, и ваш программист готов.
Код
- Файл без названия
Файл без названия C / C ++
#define dummyData 0xAA #define RDY 75 # define NRDY 76const int _MISO =4; const int _MOSI =5; const int _CLK =3; const int RST =2; / * Блок определения переменной * / byte data; byte AL , AH; // 16-битный байт адреса lockByte; // вставляем сюда биты блокировки SigH, SigL; // Байт подписиvoid setup () {pinMode (_MISO, INPUT); pinMode (_MOSI, OUTPUT); pinMode (_CLK, OUTPUT); pinMode (RST, OUTPUT); Serial.begin (115200); // зависит от настройки главного компьютера} void loop () {while (! Serial.available ()); // ждем символа if (Serial.available ()> 0) switch (Serial.read ()) {case 'p':Serial.write (progEnable ()); ломать; case 'r':readProgmem (); Serial.write (данные); ломать; case 'a':в то время как (! Serial.available ()); AL =Serial.read (); ломать; case 'A':в то время как (! Serial.available ()); AH =Serial.read (); ломать; case 'd':в то время как (! Serial.available ()); данные =Serial.read (); ломать; случай «S»:AH =0; AL =0; SigH =readSign (); Serial.write (SigH); ломать; case 's':AH =2; AL =0; SigL =readSign (); Serial.write (SigL); АН =1; AL =0; SigL =readSign (); Serial.write (SigL); ломать; // читаем регистр SigL 'o':digitalWrite (RST, 1); break; case 'c':digitalWrite (RST, 0); перерыв; case 'e':eraseChip (); Serial.write (RDY); ломать; case 'j':перерыв; case 'w':writeProgmem (); ломать; }} символ без знака SendSPI (данные символа без знака) {uint8_t retval =0; uint8_t intData =данные; int t; для (int ctr =0; ctr <7; ctr ++) {если (intData &0x80) digitalWrite (_MOSI, 1); иначе digitalWrite (_MOSI, 0); digitalWrite (_CLK, 1); delayMicroseconds (1); t =digitalRead (_MISO); digitalWrite (_CLK, 0); если (t) retval | =1; иначе retval &=0xFE; retval <<=1; intData <<=1; delayMicroseconds (1); } если (intData &0x80) digitalWrite (_MOSI, 1); иначе digitalWrite (_MOSI, 0); digitalWrite (_CLK, 1); delayMicroseconds (1); t =digitalRead (_MISO); digitalWrite (_CLK, 0); если (t) retval | =1; иначе retval &=0xFE; вернуть retval; } byte progEnable () {SendSPI (0xAC); SendSPI (0x53); SendSPI (dummyData); return SendSPI (dummyData);} недействительным eraseChip () {SendSPI (0xAC); SendSPI (0x9F); SendSPI (dummyData); SendSPI (dummyData); задержка (520);} void readProgmem () {SendSPI (0x20); SendSPI (AH); SendSPI (AL); данные =SendSPI (dummyData);} void writeProgmem () {SendSPI (0x40); SendSPI (AH); SendSPI (AL); SendSPI (данные);} void writeLockBits () {SendSPI (0xAC); SendSPI (lockByte); SendSPI (dummyData); SendSPI (dummyData);} недействительным readLockBits () {SendSPI (0x24); SendSPI (dummyData); SendSPI (dummyData); lockByte =SendSPI (dummyData);} байт readSign () {SendSPI (0x28); SendSPI (AH); SendSPI (AL); return SendSPI (dummyData);}
Схема
Производственный процесс
- Программирование серии Atmel AT89 через Arduino
- Чтение PPM-сигнала RC-приемника с использованием Arduino
- Arduino - отправка температуры в Интернет через последовательный
- ThimbleKrox - управление мышью пальцами
- Управление цепями с учетом движения через Intel Curie
- BLUE_P:беспроводной экран программирования Arduino
- Arduino - мониторинг открытия двери через Facebook Messenger
- Arduino - Рисование через Интернет с помощью контроллера шагового двигателя
- Калькулятор Arduino
- 4-контактный ШИМ-контроль вентилятора, 25 кГц, с Arduino Uno