亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

通过 Arduino 对 Atmel AT89 系列进行编程

组件和用品

Arduino UNO
× 1
LED(通用)
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE
8051 SPI 编程器

关于这个项目

在本教程中,我将向您展示如何通过几个简单的步骤使用 Arduino Uno 将您的 Hex 文件刻录到 AT89c52。为此,我们必须将 AT89c52 连接到 Arduino Uno,并通过将 LED 连接到 At89c52 为其提供 LED 指示。

第 1 步:物料清单

  • Arduino UNO
  • AT89C52 微控制器
  • 10uF 电容器
  • 跳线
  • 8.2kohm 电阻
  • 510 欧姆电容器
  • LED
  • 12 MHz 晶体
  • 2 个 33pF 电容器

步骤 2:连接微控制器

如下连接微控制器:

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

第三步:水晶

在 Atmel 的引脚 18 和 19 上连接一个晶体,然后将两个 33pf 电容器从引脚 18 和 19 连接到 Atmel 的地。完整电路图见原理图部分。

第 4 步:VCC 和 GND

将 Arduino Uno 的 5v 引脚连接到 Atmel 的第 40 个引脚,将 GND 引脚连接到 Atmel 的第 20 个引脚。

第 5 步:连接 LED

借助原理图部分提供的电路图连接 LED。

第 6 步:软件

我们需要 8051 SPI Programmer 将 Hex 文件刻录到 89c52。链接在软件部分提供。上传提供给 Arduino UNO 的代码,您的程序员已准备就绪。

代码

  • 无标题文件
无标题文件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());休息; case 'r':readProgmem();串行写入(数据);休息; case 'a':while(!Serial.available()); AL =Serial.read();休息; case 'A':while(!Serial.available()); AH =Serial.read();休息; case 'd':while(!Serial.available());数据 =Serial.read();休息;案例'S':AH =0; AL =0; SigH =readSign(); Serial.write(SigH);休息;案例's':AH =2; AL =0; SigL =readSign(); Serial.write(SigL); AH =1; AL =0; SigL =readSign(); Serial.write(SigL);休息; // 读取 SigL case 'o':digitalWrite(RST,1);break; case 'c':digitalWrite(RST,0);break;案例“e”:擦除芯片();串行写入(RDY);休息;案例'j':中断; case 'w':writeProgmem();休息; }}无符号字符SendSPI(无符号字符数据){ 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 =数字读取(_味噌);数字写入(_CLK,0);如果 (t) retval |=1;否则返回值 &=0xFE;返回值<<=1;数据<<=1;延迟微秒(1); } if (intData &0x80) digitalWrite(_MOSI,1);否则 digitalWrite(_MOSI,0);数字写入(_CLK,1);延迟微秒(1); t =数字读取(_味噌);数字写入(_CLK,0);如果 (t) retval |=1;否则返回值 &=0xFE;返回 retval; }byte progEnable(){ SendSPI(0xAC);发送SPI(0x53); SendSPI(dummyData); return SendSPI(dummyData);}void eraseChip(){ SendSPI(0xAC);发送SPI(0x9F); SendSPI(dummyData); SendSPI(dummyData); delay(520);}void readProgmem(){ SendSPI(0x20);发送SPI(AH);发送SPI(AL);数据 =SendSPI(dummyData);}void writeProgmem(){ SendSPI(0x40);发送SPI(AH);发送SPI(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);发送SPI(AH);发送SPI(AL); return SendSPI(dummyData);}

示意图


制造工艺

  1. 通过 Arduino 对 Atmel AT89 系列进行编程
  2. 使用 Arduino 读取 RC 接收器 PPM 信号
  3. Arduino - 通过串口向 Web 发送温度
  4. ThimbleKrox - 用手指控制鼠标
  5. 通过英特尔居里的运动敏感电路控制
  6. BLUE_P:无线 Arduino 编程扩展板
  7. Arduino - 通过 Facebook Messenger 监控门打开
  8. Arduino - 使用步进电机控制器通过 Web 绘图
  9. Arduino 计算器
  10. Arduino 控制的人造蜡烛灯
  11. Arduino - 通过网络控制灯泡
  12. 25 kHz 4 Pin PWM 风扇控制与 Arduino Uno