Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Programação da série Atmel AT89 via Arduino

Componentes e suprimentos

Arduino UNO
× 1
LED (genérico)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE
8051 SPI Programmer

Sobre este projeto


Neste tutorial, mostrarei como gravar seu arquivo hexadecimal em AT89c52 usando o Arduino Uno em apenas algumas etapas fáceis. Para isso temos que fazer a interface do AT89c52 com o Arduino Uno e dar a ele indicações de led via LED de interface para o At89c52.





Etapa 1:lista de materiais

  • Arduino UNO
  • Microcontrolador AT89C52
  • Capacitor 10uF
  • Fios de jumpers
  • Resistor de 8,2 kohm
  • Capacitor de 510 ohm
  • LED
  • Cristal de 12 MHz
  • 2 x 33pF capacitor





Etapa 2:Conectando o microcontrolador


Conecte o microcontrolador conforme mencionado abaixo:
  • At89c52 Arduino Uno
  • pino 6 pino 5
  • pino 7 pino 4
  • pino 8 pino 3
  • pino 9 pino 2





Etapa 3:Cristal


Conecte um cristal nos pinos 18 e 19 do Atmel e, em seguida, conecte dois capacitores 33pf dos pinos 18 e 19 ao aterramento do Atmel. Consulte a seção de esquemáticos para obter o diagrama completo do circuito.





Etapa 4:VCC e GND


Conecte o pino 5v do Arduino Uno ao 40º pino do Atmel e o pino GND ao 20º pino do Atmel.





Etapa 5:interface de LED


LED de interface com a ajuda do diagrama de circuito fornecido na seção esquemática.





Etapa 6:Software


Precisamos do 8051 SPI Programmer para gravar o arquivo hexadecimal em 89c52. O link é fornecido na seção de software. Carregue o código fornecido ao Arduino UNO e seu programador está pronto.

Código

  • Arquivo sem título
Arquivo sem título 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; / * Bloco de definição de variável * / dados de byte; byte AL , AH; // addressbyte de 16 bits lockByte; // incorpora bits de bloqueio aqui SigH, SigL; // Assinatura Bytesvoid setup () {pinMode (_MISO, INPUT); pinMode (_MOSI, OUTPUT); pinMode (_CLK, OUTPUT); pinMode (RST, OUTPUT); Serial.begin (115200); // depende da configuração do PC host} void loop () {while (! Serial.available ()); // espera pelo caractere if (Serial.available ()> 0) switch (Serial.read ()) {case 'p':Serial.write (progEnable ()); pausa; case 'r':readProgmem (); Serial.write (dados); pausa; case 'a':while (! Serial.available ()); AL =Serial.read (); pausa; case 'A':while (! Serial.available ()); AH =Serial.read (); pausa; case 'd':while (! Serial.available ()); dados =Serial.read (); pausa; caso 'S':AH =0; AL =0; SigH =readSign (); Serial.write (SigH); pausa; case 's':AH =2; AL =0; SigL =readSign (); Serial.write (SigL); AH =1; AL =0; SigL =readSign (); Serial.write (SigL); pausa; // lê o caso SigL 'o':digitalWrite (RST, 1); caso 'c':digitalWrite (RST, 0); pausa; case 'e':eraseChip (); Serial.write (RDY); pausa; caso 'j':quebra; case 'w':writeProgmem (); pausa; }} SendSPI de char não assinado (dados de char não assinados) {uint8_t retval =0; uint8_t intData =data; int t; para (int ctr =0; ctr <7; ctr ++) {if (intData &0x80) digitalWrite (_MOSI, 1); senão digitalWrite (_MOSI, 0); digitalWrite (_CLK, 1); atrasoMicrosegundos (1); t =digitalRead (_MISO); digitalWrite (_CLK, 0); if (t) retval | =1; senão retval &=0xFE; retval <<=1; intData <<=1; atrasoMicrosegundos (1); } if (intData &0x80) digitalWrite (_MOSI, 1); senão digitalWrite (_MOSI, 0); digitalWrite (_CLK, 1); atrasoMicrosegundos (1); t =digitalRead (_MISO); digitalWrite (_CLK, 0); if (t) retval | =1; senão retval &=0xFE; return retval; } byte progEnable () {SendSPI (0xAC); SendSPI (0x53); SendSPI (dummyData); retornar SendSPI (dummyData);} void eraseChip () {SendSPI (0xAC); SendSPI (0x9F); SendSPI (dummyData); SendSPI (dummyData); atraso (520);} void readProgmem () {SendSPI (0x20); SendSPI (AH); SendSPI (AL); dados =SendSPI (dummyData);} void writeProgmem () {SendSPI (0x40); SendSPI (AH); SendSPI (AL); SendSPI (dados);} 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); retornar SendSPI (dummyData);} 

Esquemas


Processo de manufatura

  1. Programação da série Atmel AT89 via Arduino
  2. Leitura do sinal PPM do receptor RC usando Arduino
  3. Arduino - Enviar temperatura para a Web via serial
  4. ThimbleKrox - Controle do mouse com os dedos
  5. Controle de circuito sensível a movimento via Intel Curie
  6. BLUE_P:Wireless Arduino Programming Shield
  7. Arduino - Monitorando a porta aberta via Facebook Messenger
  8. Arduino - Desenho via Web usando o controlador de motor de passo
  9. Calculadora Arduino
  10. Controle de ventilador PWM de 4 pinos de 25 kHz com Arduino Uno