Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Программирование серии Atmel AT89 через Arduino

Компоненты и расходные материалы

Arduino UNO
× 1
LED (общий)
× 1

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

IDE Arduino
Программист SPI 8051

Об этом проекте

В этом руководстве я покажу вам, как записать ваш шестнадцатеричный файл в 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);} 

Схема


Производственный процесс

  1. Программирование серии Atmel AT89 через Arduino
  2. Чтение PPM-сигнала RC-приемника с использованием Arduino
  3. Arduino - отправка температуры в Интернет через последовательный
  4. ThimbleKrox - управление мышью пальцами
  5. Управление цепями с учетом движения через Intel Curie
  6. BLUE_P:беспроводной экран программирования Arduino
  7. Arduino - мониторинг открытия двери через Facebook Messenger
  8. Arduino - Рисование через Интернет с помощью контроллера шагового двигателя
  9. Калькулятор Arduino
  10. 4-контактный ШИМ-контроль вентилятора, 25 кГц, с Arduino Uno