Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Programación de la serie Atmel AT89 a través de Arduino

Componentes y suministros

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

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE
8051 SPI Programmer

Acerca de este proyecto

En este tutorial, le mostraré cómo grabar su archivo hexadecimal en AT89c52 usando Arduino Uno en solo unos pocos y sencillos pasos. Para esto, tenemos que conectar AT89c52 a Arduino Uno y darle indicaciones LED a través de la interfaz LED a At89c52.

Paso 1:lista de materiales

  • Arduino UNO
  • Microcontrolador AT89C52
  • Condensador de 10uF
  • Cables de puente
  • Resistencia de 8,2 kohmios
  • Condensador de 510 ohmios
  • LED
  • Cristal de 12 MHz
  • Condensador de 2 x 33pF

Paso 2:Conexión del microcontrolador

Conecte el microcontrolador como se menciona a continuación:

  • At89c52 Arduino Uno
  • Pin 6 Pin 5
  • Pin 7 Pin 4
  • Pin 8 Pin 3
  • Pin 9 Pin 2

Paso 3:cristal

Conecte un cristal a través de los pines 18 y 19 de Atmel y luego conecte dos capacitores de 33pf desde los pines 18 y 19 a tierra de Atmel. Consulte la sección de esquemas para ver el diagrama de circuito completo.

Paso 4:VCC y GND

Conecte el pin 5v de Arduino Uno al pin 40 de Atmel y el pin GND al pin 20 de Atmel.

Paso 5:LED de interfaz

LED de interfaz con la ayuda del diagrama de circuito proporcionado en la sección de esquemas.

Paso 6:software

Necesitamos el programador 8051 SPI para grabar archivos hexadecimales en 89c52. El enlace se proporciona en la sección de software. Cargue el código proporcionado a Arduino UNO y su programador estará listo.

Código

  • Archivo sin título
Archivo sin 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; / * Bloque de definición de variable * / byte data; byte AL , AH; // addressbyte de 16 bits lockByte; // incrustar bits de bloqueo herebyte SigH, SigL; // Firma Bytesvoid setup () {pinMode (_MISO, INPUT); pinMode (_MOSI, OUTPUT); pinMode (_CLK, OUTPUT); pinMode (RST, OUTPUT); Serial.begin (115200); // depende de la configuración de la PC host} void loop () {while (! Serial.available ()); // esperar el carácter if (Serial.available ()> 0) switch (Serial.read ()) {case 'p':Serial.write (progEnable ()); descanso; caso 'r':readProgmem (); Serial.write (datos); descanso; caso 'a':while (! Serial.available ()); AL =Serial.read (); descanso; caso 'A':while (! Serial.available ()); AH =Serial.read (); descanso; caso 'd':while (! Serial.available ()); datos =Serial.read (); descanso; caso 'S':AH =0; AL =0; SigH =readSign (); Serial.write (SigH); descanso; caso 's':AH =2; AL =0; SigL =readSign (); Serial.write (SigL); AH =1; AL =0; SigL =readSign (); Serial.write (SigL); descanso; // lee SigL case 'o':digitalWrite (RST, 1); break; caso 'c':digitalWrite (RST, 0); romper; caso 'e':eraseChip (); Serial.write (RDY); descanso; caso 'j':romper; caso 'w':writeProgmem (); descanso; }} unsigned char SendSPI (datos de caracteres sin firmar) {uint8_t retval =0; uint8_t intData =datos; int t; for (int ctr =0; ctr <7; ctr ++) {if (intData &0x80) digitalWrite (_MOSI, 1); más digitalWrite (_MOSI, 0); escritura digital (_CLK, 1); delayMicroseconds (1); t =digitalRead (_MISO); escritura digital (_CLK, 0); si (t) retval | =1; más retval &=0xFE; retval <<=1; intData <<=1; delayMicroseconds (1); } if (intData &0x80) digitalWrite (_MOSI, 1); más digitalWrite (_MOSI, 0); escritura digital (_CLK, 1); delayMicroseconds (1); t =digitalRead (_MISO); escritura digital (_CLK, 0); si (t) retval | =1; más 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); datos =SendSPI (dummyData);} void writeProgmem () {SendSPI (0x40); SendSPI (AH); SendSPI (AL); SendSPI (datos);} 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); devolver SendSPI (dummyData);} 

Esquemas


Proceso de manufactura

  1. Programación de la serie Atmel AT89 a través de Arduino
  2. Lectura de la señal PPM del receptor RC usando Arduino
  3. Arduino - Enviar temperatura a la web a través de serie
  4. ThimbleKrox - Control del mouse con los dedos
  5. Control de circuito sensible al movimiento a través de Intel Curie
  6. BLUE_P:Escudo de programación inalámbrico Arduino
  7. Arduino - Monitoreo de puerta abierta a través de Facebook Messenger
  8. Arduino - Dibujar vía web usando el controlador de motor paso a paso
  9. Calculadora Arduino
  10. Velas artificiales controladas por Arduino
  11. Control de ventilador PWM de 4 pines y 25 kHz con Arduino Uno