산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 우노로 Atmel AT89 시리즈 손쉽게 프로그래밍하기 - 단계별 가이드

부품 및 소모품

아두이노 우노 (Arduino UNO) 1개
LED (범용) 1개

필요한 도구 및 장비

납땜 인두 (범용)

앱 및 온라인 서비스

아두이노 IDE (Arduino IDE)
8051 SPI 프로그래머 (8051 SPI Programmer)

프로젝트 소개

이 튜토리얼에서는 아두이노 우노를 사용하여 AT89C52에 헥스 파일을 업로드하는 방법을 몇 가지 간단한 단계로 보여드리겠습니다. 이를 위해 AT89C52를 아두이노 우노와 연결하고, AT89C52에 연결된 LED를 통해 상태 표시를 구현합니다.

1단계: 자재 목록 (Bill of Materials)

2단계: 마이크로컨트롤러 연결

아래와 같이 마이크로컨트롤러를 연결하세요:

AT89C52 핀 아두이노 우노 핀
핀 6 핀 5
핀 7 핀 4
핀 8 핀 3
핀 9 핀 2

3단계: 크리스털 연결

ATMEL의 핀 18과 19 사이에 크리스털을 연결한 다음, 핀 18과 19에서 ATMEL의 그라운드로 각각 33pF 커패시터를 연결하세요. 전체 회로도는 회로도 섹션을 참조하세요.

4단계: VCC 및 GND 연결

아두이노 우노의 5V 핀을 ATMEL의 40번 핀에, GND 핀을 20번 핀에 연결하세요.

5단계: LED 인터페이싱

회로도 섹션에 제공된 회로도의 도움을 받아 LED를 연결하세요.

6단계: 소프트웨어

89C52에 헥스 파일을 업로드하려면 8051 SPI 프로그래머가 필요합니다. 링크는 소프트웨어 섹션에 제공되어 있습니다. 제공된 코드를 아두이노 우노에 업로드하면 프로그래머 준비가 완료됩니다.

코드

#define dummyData 0xAA
#define RDY 75
#define NRDY 76
const int _MISO = 4;
const int _MOSI = 5;
const int _CLK = 3;
const int RST = 2;

/* 변수 정의 블록 */
byte data;
byte AL, AH; // 16비트 주소
byte lockByte; // 락 비트 저장용
byte SigH, SigL; // 시그니처 바이트

void setup() {
  pinMode(_MISO, INPUT);
  pinMode(_MOSI, OUTPUT);
  pinMode(_CLK, OUTPUT);
  pinMode(RST, OUTPUT);
  Serial.begin(115200); // 호스트 PC 설정에 따라 다름
}

void loop() {
  while (!Serial.available()); // 문자 대기
  if (Serial.available() > 0) switch (Serial.read()) {
    case 'p': Serial.write(progEnable()); break;
    case 'r': readProgmem(); Serial.write(data); break;
    case 'a': while(!Serial.available()); AL = Serial.read(); break;
    case 'A': while(!Serial.available()); AH = Serial.read(); break;
    case 'd': while(!Serial.available()); data = Serial.read(); break;
    case 'S': AH = 0; AL = 0; SigH = readSign(); Serial.write(SigH); break;
    case 's': AH = 2; AL = 0; SigL = readSign(); Serial.write(SigL); AH = 1; AL = 0; SigL = readSign(); Serial.write(SigL); break;
    case 'o': digitalWrite(RST, 1); break;
    case 'c': digitalWrite(RST, 0); break;
    case 'e': eraseChip(); Serial.write(RDY); break;
    case 'j': break;
    case 'w': writeProgmem(); break;
  }
}

unsigned char SendSPI(unsigned char data) {
  uint8_t retval = 0;
  uint8_t intData = data;
  int t;
  for (int ctr = 0; ctr < 7; ctr++) {
    if (intData & 0x80) digitalWrite(_MOSI, 1);
    else digitalWrite(_MOSI, 0);
    digitalWrite(_CLK, 1);
    delayMicroseconds(1);
    t = digitalRead(_MISO);
    digitalWrite(_CLK, 0);
    if (t) retval |= 1;
    else retval &= 0xFE;
    retval <<= 1;
    intData <<= 1;
    delayMicroseconds(1);
  }
  if (intData & 0x80) digitalWrite(_MOSI, 1);
  else digitalWrite(_MOSI, 0);
  digitalWrite(_CLK, 1);
  delayMicroseconds(1);
  t = digitalRead(_MISO);
  digitalWrite(_CLK, 0);
  if (t) retval |= 1;
  else retval &= 0xFE;
  return retval;
}

byte progEnable() {
  SendSPI(0xAC);
  SendSPI(0x53);
  SendSPI(dummyData);
  return SendSPI(dummyData);
}

void eraseChip() {
  SendSPI(0xAC);
  SendSPI(0x9F);
  SendSPI(dummyData);
  SendSPI(dummyData);
  delay(520);
}

void readProgmem() {
  SendSPI(0x20);
  SendSPI(AH);
  SendSPI(AL);
  data = SendSPI(dummyData);
}

void writeProgmem() {
  SendSPI(0x40);
  SendSPI(AH);
  SendSPI(AL);
  SendSPI(data);
}

void writeLockBits() {
  SendSPI(0xAC);
  SendSPI(lockByte);
  SendSPI(dummyData);
  SendSPI(dummyData);
}

void readLockBits() {
  SendSPI(0x24);
  SendSPI(dummyData);
  SendSPI(dummyData);
  lockByte = SendSPI(dummyData);
}

byte readSign() {
  SendSPI(0x28);
  SendSPI(AH);
  SendSPI(AL);
  return SendSPI(dummyData);
}

회로도

회로도 이미지는 원문 프로젝트 페이지에서 확인할 수 있습니다.

제조공정

  1. 아두이노 우노로 Atmel AT89 시리즈 손쉽게 프로그래밍하기 - 단계별 가이드
  2. 아두이노로 RC 수신기 PPM 신호 디코딩하기: 단계별 가이드
  3. 아두이노 우노 & WiFi 실드로 웹에서 실시간 온도 모니터링 - 시리얼 통신 활용
  4. ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤
  5. 인텔 퀴리(Arduino 101) 기반 모션 감지 조명 시스템
  6. HC-05 블루투스 모듈을 활용한 무선 아두이노 프로그래밍 실드 – USB 케이블 불필요
  7. 아두이노 도어 센서: IFTTT로 페이스북 메신저 실시간 알림 (서비스 중단)
  8. 아두이노 웹 기반 XY 플로터 - 스테퍼 모터 컨트롤러
  9. 아두이노 16x2 LCD와 키패드로 계산기 만들기
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트