【教程】51单片机烧录全攻略,轻松掌握!

前期教程

  • 【单片机】51单片机使用总结
  • 前言

      最近心血来潮想研究一下51单片机装系统,于是买了一个51单片机最小系统板,如下图所示。

    同时也买了一个STC86C52,打算以这个单片机来试验。但是很遗憾,第一步——烧录程序就出现了问题,于是就花了几个小时查找相关的资料,同时顺带研究了一下其他型号51单片机的下载方式。

    51单片机到底有几种下载方式?

    建议阅读前先看看这篇博客:【嵌入式】一文彻底搞懂单片机程序烧录

      对于这个问题,最重要的是区分型号。先说说比较古老的ATmel的AT89S52,这个型号的单片机是采用SPI协议进行程序写入的,也就是上图中右边那10个引脚。虽然它用的引脚数比SPI多,但其本质还是基于SPI协议。
      而对于目前仍然被广泛使用的STC的51单片机,一般是通过串口下载程序,采用的是引导程序的方式烧录。但是这里细分为两种,一种是冷启动,一种是热启动。

    STC89C52

      首先说说冷启动,由于STC的单片机是基于串口进行下载的,而且其内部已固化有引导程序,每次上电复位时,系统首先执行引导程序,检测是否有下载指令,如果没有,继续执行用户程序,如果有,则更新程序,其执行逻辑如下图所示。【图片来自官网手册】

    因此,在实际使用时,由于引导程序执行过快,需要先在上位机点击下载的按钮,此时上位机开始不断给单片机传输要下载程序的指令(0x7F),然后再上电使其从引导程序开始执行,这样便能实现冷启动来下载程序。

    附:STC单片机冷启动和复位有什么区别

      但是,这里需要注意的是,一般的USB转TTL模块是不能用来给STC的51单片机下载程序的!必须要略微修改一下电路,参考官网手册,如下图所示。

      如果是一般的USB转TTL模块会在只连TXD,RXD,GND时芯片也会有电(因为TXD和RXD都是5V),这种现象称之为串口漏电,这会导致芯片仍然是有电的状态,从而无法冷启动。所以一般来说51单片机冷启动的烧录电路都是已经布置好的,估计也不会有人专门做一个只适用于STC单片机程序烧录的USB转TTL模块。

      找到一篇教程,里面详细介绍了这个下载电路及相关的理论知识,建议想自己画板的可以结合官方手册看看。 附:链接

      这种冷启动方式下载程序略有点复杂,需要重复上电和断电,因此还有一种下载方式能够实现热启动,即不用下电即可完成程序更新操作,这个实现的原理就是STC单片机中有寄存器可以让芯片从引导程序开始执行。如下图所示。

    这种方式具体实践方式还待研究,可以看一下以下几个链接

  • STC免冷启烧录器DIY – CSDN
  • STC免断电自动程序下载 – CSDN
  • //2022.7.21更新
    免冷启动的实现原理一般有三种:利用DTR和RTS两个引脚在下载程序时电平的变化实现单片机的下电与上电;再加一个单片机,实现目标单片机下载程序时的下电与上电;最后一种方式是在程序中增加固定的代码(设置寄存器使其跳转到ISP区执行),并结合上位机一起使用。
  • 参考链接
  • 最新试验//2022.7.18

      今天又试了一下STC89C52的串口下载,意外发现又好使了!之前写这篇博客时发现一般买来的USB转串口的模块是不能直接用来给STC89C52下载程序的,但是今天试了一下发现好像是可以的!,虽然还会出现串口漏电的情况,即电源指示灯半亮的状态,但确实可以烧进程序!记录一下。

    AT89S52

      说完了比较常用的STC单片机,再来说说比较古老的AT89S52。这种型号的单片机的烧录方式是基于SPI协议,就是那种10针脚的接口。这种单片机需要买一个USBisp或者USBasp设备,如下图所示。

      其对应的上位机是ProgISP,这里给一个软件站的下载链接,还是比较干净的。目前网上流传的版本主要有两个:1.72和2.0,这里推荐使用1.72版的,因为2.0版的不支持USBasp。打开软件,界面如下图所示。

    首先要关注那个program state,如果已插入编程器(USBasp或USBisp)且左侧那个PRG的图标是彩色的,那万事大吉,表明你现在的编程器能够使用,如果是灰色的,那就要开始排查问题,首先确定驱动有没有安装,因为USBasp是需要安装驱动的,个人非常不建议找那种别人下载好的驱动文件,然后你用这个去更新驱动程序。有一个更好的方案是使用软件Zadig,这个软件很常见,主要用来安装一些USB的驱动,这里也放一个软件站的下载链接,挺干净的。
      如果已经安装好驱动但不好使,建议先在设备管理器中删除设备,然后再安装驱动。首先打开Zadig,然后再插入USBasp,就可以在其列表中找到USBasp的选项,然后安装如下图所示的驱动即可。

    如果列表一个设备都没有,可以点击上面的option,选择List All Devices,如下图所示。

      安装好驱动之后,可以重启ProgISP试试,看那个图标是不是还是灰色,如果还出问题的话,那基本就是硬件问题了,得重买一个。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【教程】51单片机烧录全攻略,轻松掌握!

    发表评论