在单片机开发过程中,当前期的程序编写或仿真完成后,或者程序需要升级修改时。都需要将程序写到单片机中。现在比较流行的编程方式是ISP。常用的51S系列单片机大都使用并口在线编程器,而当前大多笔记本电脑都没有并口。
USB接口却有几个,针对这种情况,笔者结合工作中开发5l单片机的经验。制作了基于USB接口的ISP,现介绍如下。
一、工作原理
整个方案使用CH341T与计算机进行通信。将计算机应用程序产生的下载数据,通过USB接口输出,通过CH341T将数据转化为串口协议数据,通过单片机AT89C2051将串口数据转化为51S系列单片机的下载协议数据,最后通过驱动芯片74245输出。整个制作无需外接电源,直接使用USB接口的5V电源。该制作简单。体积可以制作得很小。
需要注意的是,AT89C2051最好使用11.0592MHz的晶振。如果没有的话,可以通过修改定时器的定时值达到相同的波特率。电路原理见图1。
二、芯片简介
CH341T在《电平报》2006年第8期的《将串口通讯升级到USB接口》
文章中已作了详细介绍。该芯片自带硬件驱动。使用时只需要安装好驱动软件就可正常工作,驱动软件可以在官方网站上下载。其基本原理是将USB控制器转化为虚拟的串口,可以在“我的电脑/属性,硬件,设备管理器”中看到对应的串口。该串口名字用于下载应用程序的串口设置,见图2所示。
三、软件编程
为了减少制作时间,计算机中和AT89C2051中运行的程序都可以在网上下载得到,其名称为“Easv51Pmv2.0宇宙版”的软件包。
AT89C2051中运行的程序在子文件夹下的串行编程器源程序中。该源程序适应用于所有的C51系列单片机编程。但本文制作只针对51S系列单片机进行下载。并且AT89C2051中程序空间较小。必须将不必要的代码删除掉和更改部分代码才能使用。下面详细介绍修改方法:
1.将文件E51PR0.C中。Main()函数下的switch(ComBuf【l】)中的case(和case1去掉,由于不需要对2051和C51编程,因此可以去掉。将函数setVpp5V0、setVppOVO、setVpp12V0去掉。
2.在文件AT89S5lPR0.C中增加#defineRSTP1_4,将函数voidInitPro020中的1到6行删除,将11行的P3_5=1,改为RST=1。将函数voidProOver020中程序全部删除,增加RST=0。
3.将文件E51PR0.H中的#include改为#include。
整个文件修改完毕后。新建工程。将文件E51PRO.C、AT89S51PRO.C和E51PR0.H加入工程。编译通过后将文件下载到AT89C2051中即可。
四、整体调试
硬件电路制作好以后。将USB接口插入计算机。第一次使用计算机会提示发现新硬件。按照安装向导。完成驱动程序的安装。卜载软件使用Easy5lPro.exe,该程序位于子文件夹中。打开应用程序。设置选项使用图3设置,选择使用Easv51Pm串行编程器,波特率为28800.串口设置按照CH341T的使用方法设置。
如果硬件电路安装无误。不需调试,电路即可正常工作。