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

Arduino를 통한 Atmel AT89 시리즈 프로그래밍

구성품 및 소모품

Arduino UNO
× 1
LED(일반)
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE
8051 SPI 프로그래머

이 프로젝트 정보

이 튜토리얼에서는 몇 가지 간단한 단계로 Arduino Uno를 사용하여 16진수 파일을 AT89c52로 굽는 방법을 보여줍니다. 이를 위해 AT89c52를 Arduino Uno에 인터페이스하고 LED를 At89c52에 인터페이싱하여 LED 표시를 제공해야 합니다.

1단계:BOM

<울>
  • 아두이노 UNO
  • <울>
  • AT89C52 마이크로컨트롤러
  • <울>
  • 10uF 커패시터
  • <울>
  • 점퍼 와이어
  • <울>
  • 8.2kohm 저항기
  • <울>
  • 510옴 커패시터
  • <울>
  • LED
  • <울>
  • 12MHz 크리스탈
  • <울>
  • 2 x 33pF 커패시터
  • 2단계:마이크로컨트롤러 연결

    아래와 같이 마이크로 컨트롤러를 연결합니다.

    <울>
  • At89c52 Arduino Uno
  • <울>
  • 핀 6 핀 5
  • <울>
  • 7번 핀 4번 핀
  • <울>
  • 8번 핀 3번 핀
  • <울>
  • 9번 핀 2번 핀
  • 3단계:크리스탈

    Atmel의 핀 18과 19에 크리스탈을 연결한 다음 핀 18과 19의 33pf 커패시터 2개를 Atmel의 접지에 연결합니다. 전체 회로도는 도식 섹션을 참조하십시오.

    4단계:VCC 및 GND

    Arduino Uno의 5v 핀을 Atmel의 40번 핀에 연결하고 GND 핀을 Atmel의 20번 핀에 연결합니다.

    5단계:LED 인터페이스

    Schematics 섹션에 제공된 Circuit Diagram의 도움으로 Interface LED.

    6단계:소프트웨어

    16진수 파일을 89c52로 굽기 위해서는 8051 SPI 프로그래머가 필요합니다. 링크는 소프트웨어 섹션에서 제공됩니다. Arduino UNO에 제공된 코드를 업로드하면 프로그래머가 준비됩니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 제목 없는 파일
  • 제목 없는 파일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 ,아; // 16비트 주소 바이트 lockByte; // 여기에 잠금 비트를 포함합니다. SigH,SigL; // 서명 Bytesvoid 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()); 부서지다; 케이스 'r':readProgmem(); 직렬.쓰기(데이터); 부서지다; 케이스 'a':while(!Serial.available()); AL =Serial.read(); 부서지다; 케이스 'A':while(!Serial.available()); AH =Serial.read(); 부서지다; 케이스 'd':while(!Serial.available()); 데이터 =Serial.read(); 부서지다; 케이스 'S':AH =0; 알 =0; SigH =readSign(); 직렬.쓰기(SigH); 부서지다; 케이스 's':AH =2; 알 =0; SigL =readSign(); Serial.write(SigL); 아 =1; 알 =0; SigL =readSign(); Serial.write(SigL); 부서지다; // SigL 케이스 'o' 읽기:digitalWrite(RST,1);break; 케이스 'c':digitalWrite(RST,0);중단; 케이스 '':지우기 칩(); 직렬.쓰기(RDY); 부서지다; 케이스 'j':중단; 케이스 'w':writeProgmem(); 부서지다; }}unsigned char SendSPI(unsigned char data){ uint8_t retval =0; uint8_t intData =데이터; 정수 t; for (int ctr =0; ctr <7; ctr++) { if (intData &0x80) digitalWrite(_MOSI,1); 그렇지 않으면 digitalWrite(_MOSI,0); 디지털 쓰기(_CLK,1); 지연마이크로초(1); t =디지털 읽기(_MISO); 디지털 쓰기(_CLK,0); if (t) 검색 |=1; 그렇지 않으면 retval &=0xFE; 검색<<=1; 정수 데이터 <<=1; 지연마이크로초(1); } if (intData &0x80) digitalWrite(_MOSI,1); 그렇지 않으면 digitalWrite(_MOSI,0); 디지털 쓰기(_CLK,1); 지연마이크로초(1); t =디지털 읽기(_MISO); 디지털 쓰기(_CLK,0); if (t) 검색 |=1; 그렇지 않으면 retval &=0xFE; 반환 반환; }바이트 progEnable(){ SendSPI(0xAC); SendSPI(0x53); SendSPI(더미데이터); 반환 SendSPI(dummyData);} 무효 지우기Chip(){ SendSPI(0xAC); SendSPI(0x9F); SendSPI(더미데이터); SendSPI(더미데이터); 지연(520);} 무효 readProgmem(){ SendSPI(0x20); SendSPI(AH); SendSPI(AL); 데이터 =SendSPI(dummyData);} 무효 writeProgmem(){ SendSPI(0x40); SendSPI(AH); SendSPI(AL); SendSPI(데이터);} 무효 writeLockBits(){ SendSPI(0xAC); SendSPI(잠금바이트); SendSPI(더미데이터); SendSPI(dummyData);} 무효 readLockBits(){ SendSPI(0x24); SendSPI(더미데이터); SendSPI(더미데이터); lockByte =SendSPI(dummyData);}바이트 readSign(){ SendSPI(0x28); SendSPI(AH); SendSPI(AL); 반환 SendSPI(dummyData);}

    회로도


    제조공정

    1. Arduino를 통한 Atmel AT89 시리즈 프로그래밍
    2. Arduino를 사용하여 RC 수신기 PPM 신호 읽기
    3. Arduino - 직렬을 통해 웹에 온도 보내기
    4. ThimbleKrox - 손가락으로 마우스 제어
    5. Intel Curie를 통한 동작 감지 회로 제어
    6. BLUE_P:무선 Arduino 프로그래밍 실드
    7. Arduino - Facebook Messenger를 통한 도어 열림 모니터링
    8. Arduino - 스텝 모터 컨트롤러를 사용하여 웹을 통해 그리기
    9. Arduino 계산기
    10. Arduino Uno를 사용한 25kHz 4핀 PWM 팬 제어