ESP-01S无线下载器

 

-项目概述-

最开始学习51的时候,总是“冷启动”,手动按动开关重启,下载一次程序重启一次,觉得很麻烦

而且另一方面,我的最小系统板是有自带电源的,那么这根数据线也显得有些多余了,于是打算做一个“无线自动烧录器”。

目的:

  •  程序发送特定重启指令实现“热启动”。
  • ESP-01S作为无线串口使用。
  • 烧录器端口指定。

材料清单:51系统板一块(STC8G1K08),ESP-01S模块两个(收发),CH340G下载模块

注意:我用的是51单片机是STC8G系列,对于老版本的STC89C52能否使用特定指令重启,需要自己去查看数据手册,具体位置下面会提到。

 

-成品预览-

ESP-01S无线下载器ESP-01S无线下载器

ESP-01S无线下载器ESP-01S无线下载器

 

-项目框架-

这个项目硬件逻辑很简单,主要在于特定指令重启这一块,查阅文档很麻烦,整体流程如下:

ESP-01S无线下载器

 

-硬件资料,代码-

  • ISP软复位方法:

    根据STC8G芯片文档(下文文末):

                ESP-01S无线下载器

    一共有四种方法,这里我选择串口特定指令检测复位,其余方法可以自己查阅文档调试。

    关键代码:

  • IAP_CONTR = 0x60; //复位到系统区
  • #include "reg51.h" #include "intrins.h" #define FOSC 11059200UL #define BR115200 (65536 - FOSC / 4 / 115200) sfr IAP_CONTR = 0xc7; sfr AUXR = 0x8e; sfr P3M0 = 0xb2; sfr P3M1 = 0xb1; char stage;  /* 每一次读取一个字符,当当前字符满足要求,(每一个case的if语句作用) 就判断下一位是否满足要求,如果全部满足,(每一行stage作用) 就执行跳转指令。如果当中有一位不满足, 就从新跳转到第一位,重新进行判断。(go to 语句作用) */ void UartIsr() interrupt 4 //串口中断服务程序 {     char dat;     if (TI)     {         TI = 0;     }     if (RI)     {         RI = 0;         dat = SBUF;         switch (stage)         {             case 0:             default:             L_Check1st:             if (dat == 'S') stage = 1;             else stage = 0;             break;                          case 1:             if (dat == 'T') stage = 2;             else goto L_Check1st;             break;                          case 2:             if (dat == 'C') stage = 3;             else goto L_Check1st;             break;                          case 3:             if (dat == 'I') stage = 4;             else goto L_Check1st;             break;                          case 4:             if (dat == 'S') stage = 5;             else goto L_Check1st;             break;                          case 5:             if (dat == 'P') stage = 6;             else goto L_Check1st;             break;                          case 6:             if (dat == '$') //当检测到正确的用户下载命令时             IAP_CONTR = 0x60; //复位到系统区             else goto L_Check1st;             break;         }     } } void main() {     P3M0 = 0x00;     P3M1 = 0x00;     SCON = 0x50;     TMOD = 0x00;     AUXR = 0x40;     TH1 = BR115200 >> 8; //设置串口波特率为 115200     TL1 = BR115200;     TR1 = 1;     ES = 1;     EA = 1;     stage = 0;     while (1)     {     } }

   

项目全部文件:

个人博客下方私信领取

http://potatoworld.top:5800/

最后,下载成功,非常nice ~

ESP-01S无线下载器

 

 

-项目槽点-

  • 对于STC新系列的单片机,串口寄存器相关的配置还是交给软件去做吧,想要自己配置练练手的拿STC89系列就够了

      切记。新系列需要配置AUXR寄存器,具体配置方式查看数据手册,也可以STC烧录器自带的

    ESP-01S无线下载器

  • 注意电平转换,5V转3.3V ,电平转换电路如下

  ESP-01S无线下载器

 

发表评论

相关文章