单片机编程工具DIY
简易的89C2051单片机编程器

🏠 首页 《无线电》杂志 2004年 🔗 第6期 🔗 第37页 分类:电脑与单片机 🔗 徐世锋 🔗

本文介绍的编程器可以对AT89C2051单片机进行编程、读出、校验、擦除操作。虽然功能不很强大,但电路很简单,它只使用了一块数字电路CD4017和一些三极管、二极管、电阻等元件,很适合单片机的初学者自制。


一 电路原理

图1
图1 🔍原图 (850×703)

电路图如图1所示。笔者使用电脑的并口对编程器进行操作,并口的数据端口(地址378H)与89C2051的P1口相连,负责向单片机输入数据或者从单片机中读出数据。并口的控制端口(地址37AH)负责向单片机输送编程所需的各种控制信号,比如12V编程电压、编程脉冲、内部地址计数器的计数脉冲以及模式选择信号。由89C2051的使用手册可知,在进行各种操作时,需要在2051芯片的第1、5、6、7、8、9、11脚加上合适的电压或脉冲,具体的信号设置方法见表1。而控制端口的输出线仅有4根,为了解决这个矛盾,电路中使用了CD4017和若干三极管、二极管为第1、7、8、9、10脚提供合适的电压,进行工作模式的转换。CD4017的计数脉冲由控制端口的D0位提供,编程脉冲由控制端口的D1位提供,单片机的地址计数脉冲由D2位提供,这样仅需3根控制线。

图2
图2 🔍原图 (449×217)

给CD4017输入计数脉冲时,它的输出端会依次变成高电平。从图1可以看到:当Q0脚输出高电平时,VT8截止,同时由编程软件配合,将2051的其他引脚也置成高电平,这样单片机的电源处于切断状态,你可以放心地插、拔2051芯片。当Q1输出高电平时,VT8导通,为单片机接通电源,同时,VT6导通,2051的RST引脚被置成低电平,这种状态持续10ms以上,就可以使单片机复位。同样道理,你可以分析,当Q2、Q3、Q4引脚分别输出高电平时,单片机分别处于读出、擦除、编程状态。这样,通过向CD4017输出合适个数的计数脉冲,就可以使单片机处于预定的状态。然后由编程软件向单片机输出其他信号,从而完成编程或读出等操作。

这个编程器不能写入加密位,也不能读取标志位,不过这两项功能对初学者并没有什么用处。电路中二极管VD1~VD7和三极管VT1~VT4组成的是或非逻辑电路,可以用相应的数字电路代替。CD4017只使用了5个输出端,你完全可以在Q5~Q7端接上几个二极管来实现写加密位和读标志位的操作,当然编程软件也需要修改。


二 制作与调试

该电路对元件没有什么特殊要求,二极管VD1~VD7选用IN4148,三极管选用2SC1815,放大倍数β值最好大于100。电源可以用市场上常见的整流电源,要求输出电压在15V以上。印制板如图2所示,这是用单面敷铜板设计的,尺寸为108mm×74mm,图中几根细线代表飞线。印制板的线条比较粗,很容易绘制,制作时要看清这张图的方向,不要弄反了。2051的插座是普通的集成电路插座,如果你想换成ZIF插座,需要修改这一部分的印制板,否则空间不够。

制作好编程器后,首先对它进行调试。软件有一个专用的调试程序:test.exe,该软件没有安装程序,双击它就可以运行。它只能在Win98环境下运行,如果你使用的是Win2000或XP操作系统,需要首先安装porttalk端口驱动程序(安装方法可以参考readme.txt),然后双击test.bat运行该程序。使用它可以很方便地调好编程器。请按下列步骤对它进行调试。

1.把编程器接到电脑上,不要插2051芯片,接通编程器的电源,运行调试程序。

2.测试数据线:按下“FF”按钮,用万用表测量2051插座上的12~19脚,其电压是5V(有的电脑输出电压仅有3.5V左右)。按下“00”按钮,相应的电压应该是0V。

3.按下“关闭”按钮,第10脚为高阻状态,第1脚电压可能不是5V。除空脚外,其他引脚电压都是5V。

4.按一下“4017计数”按钮,编程器进入复位状态,第1脚电压为0V。

5.再按一下“4017计数”按钮,编程器进入读取数据状态,参照表1中的数据,测量相应的引脚电压是否正常,第1脚电压可能不是5V,先不要管它。

6.再按一下“4017计数”按钮,编程器进入擦除状态,调整RP1使LM317输出电压为12V。同时验证其他引脚电压。

7.按“关闭”按钮,调整RP2,使LM317输出电压为5V。

如果调试无误,就可以给2051编程了。


三 编程器的使用方法

使用时,先不要插入2051芯片,打开编程器电源,运行编程软件2051.exe,Win2000、XP用户应双击2051.bat。程序界面如图3所示。如果编程器正常,右侧的信息框中会显示“编程器状态:空闲”,此时可以插入芯片。拔出芯片也应该在这种状态下进行。

以写入过程为例,应这样进行操作: 按“打开”按钮,在“打开”对话框中找到合适的hex文件,打开后,文件中的数据会显示在数据缓冲区中(不过在这个软件中,不能对数据进行编辑),然后按“写入”按钮就可以了。编程时软件会首先擦除芯片中的数据,然后写入新的数据,十几秒后就可以写完。该软件在写入时不进行校验。你可以在写入过程结束后按“校验”按钮进行校验,校验和读出过程要快得多。如果有错误,缓冲区中相应的位置会变成红色,不过所显示的数据仍然是你所打开的文件中的数据,并没有改变。

如果读写的成功率不高,可以尝试缩短连接线,增大或减小C1、C2的容量,或在数据线上添加小容量电容以减小干扰。电脑的并口必须支持双向数据传送,如果无法读出数据,可以试试在电脑的BIOS设置中把并口的工作模式改成EPP。

编程器软件2051.exe及其源程序见本期配刊光盘的“本期程序”文件夹。

(文/徐世锋)