Programación de la serie Atmel AT89 a través de Arduino
Componentes y suministros
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Aplicaciones y servicios en línea
| ||||
|
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
- Programación de la serie Atmel AT89 a través de Arduino
- Lectura de la señal PPM del receptor RC usando Arduino
- Arduino - Enviar temperatura a la web a través de serie
- ThimbleKrox - Control del mouse con los dedos
- Control de circuito sensible al movimiento a través de Intel Curie
- BLUE_P:Escudo de programación inalámbrico Arduino
- Arduino - Monitoreo de puerta abierta a través de Facebook Messenger
- Arduino - Dibujar vía web usando el controlador de motor paso a paso
- Calculadora Arduino
- Velas artificiales controladas por Arduino
- Control de ventilador PWM de 4 pines y 25 kHz con Arduino Uno