单片机编程工具 DIY
用rtl8139网卡制作AT89C51编程器

🏠 首页 《无线电》杂志 2004年 🔗 第11期 🔗 第38页 分类:电脑与单片机 🔗 桃源村 🔗

笔者想学习和使用AT89C51单片机,但没有编程器,于是便充分利用计算机网卡和并口,制作了这款编程器,用于对AT89C51的编程和烧写,编程器所有的数据地址和控制信号线都由计算机提供,现将改制方法介绍给读者。

硬件原理

笔者利用了一块rtl8139网卡(常见的PCI百兆网卡,一块新的rtl8139网卡40元左右)和计算机并口。因为rtl8139的EEPROM地址线和数据线是由一个32位寄存器提供,一次操作必须锁存所有的地址线、数据线和控制线,因此不适合于提供89C51烧写所需的编程信号线,只用它来锁存地址和数据线,编程需要的控制线由EPP(SPP)并口提供。图1是该编程器的电路原理图。

图1
图1 🔍原图 (709×668)

rtL8139网卡的EEPROM插座一般有28针和32针两种。28针的针脚定义与27C512芯片相同,32针的与29C010芯片相同。

你需要引出网卡的地址线和数据线A0~A7分别接到单片机的P1.0~P1.7, A8~A11接单片机的P2.0~P2.3,Q0~Q7接单片机的P0.0~P0.7 (笔者用硬盘排线和28针集成块插座制作的插座做成连接器将其连出),EPP并口D0提供读写信号,D1提供编程脉冲,D2控制编程电压,VT1、VT2、R1、R2、R3构成编程电压电路,12V电源由PC机内部电源提供(电压在12.5~13V之间),ACK(并口的第10脚)接P3.4,反映烧写状态。为了防止误操作,S1为H时可擦除芯片和加密,S1为L时可读写。

软件使用

笔者编写的配合该编程器工作的计算机软件还不完善,不支持加密,不支持分段模式的HEX文件烧写(对于89C51的4K ROM来说用不着),所有的编程信号都由软件提供。为了保证信号时序的正确,该编程器降低了烧写速度,建议在Windows2000下使用(98理论上可以,但尚未测试),软件界面如图2所示。使用方法如下:

图2
图2 🔍原图 (442×310)

1. 在计算机打开后连接制作好的编程器,注意在计算机启动过程中最好关闭编程器上的12V电源,以防止误编程。打开软件,选择“读特征字”,如果出现30H=1E、31H=51、32=FF,说明编程器连接成功,如果不对,开关S2,或者热拔插ROM连接器(不会损坏硬件的),多试几次,如果还不成功,检查编程器上的地址数据线是否连接错误。

2.如果要烧写89C51,先将编程卡12V电源打开,S1置为L,然后选择“读bin文件烧写89C51”或者“读HEX文件烧写89C51”,烧写完会在执行目录下生成“烧写结果信息.txt”。通过此文件,可以判断89C51的坏块,修改程序代码,使出现坏块的89C51有继续使用的可能,或者检查编程器的错误。比如“写地址0x0失败,写数据0x2,效验数据42”,则说明很有可能是编程器的数据线7出了问题。

3.若要读取89C51,S1置为L,关闭12V电源,选择“读89C51并保存”。

4.若要擦除89C51,S1置为H,打开12V电源,选择“擦除89C51”。

读者可以自己对EPP并口和rtl8139网卡进行编程。LPT1 EPP并口的数据口的地址一般为0x378,控制rtl8139网卡的EEPROM寄存器地址为卡的I/O基地址+0xD4,附表为该寄存器的定义。

此编程器线路简单,不需另外的编程器和MCU支持,而且预留的控制线还有很多,因此有很大的功能扩展空间,只要简单改动几条控制线,再在软件上稍加修改,就可以支持别的芯片。具体的编程方法,本文就不细说了,因为会涉及到计算机高级语言的使用。如果你想让本文中介绍的编程器烧写更多种类的芯片,可以参考本文附带的软件包中提供的详细资料,包括rtl8139数据手册、89C51烧录的资料、与本编程器相关的PCI和并口的硬件开发资料,还有HEX格式文件。该软件包可到www.radio.com.cn下载,有何问题可以到www.csdn.net论坛VC硬件系统版给笔者留言。

(桃源村)