RTL8139改制AT89C51编程器

全部代码下载

   想玩89C51,但没有编程器,于是便想自制编程器,找了很多自制的资料,大多都是使用89C51做控制逻辑,需要有编程器才能制作,电路一般也比较复杂(最ez的也要30个元件),再看看不需要编程器的,一看我就放弃,太复杂了,我手头甚至连一块74LS373那样的锁存器都没有一块,可用到的元件又没多少。

       天无绝人之路,充分利用计算机硬件软件,作出了这款编程器,所有的数据地址和控制信号线都需要由计算机提供,我借来一块rtl8139网卡(非常常见的PCI百兆网卡,一块新的rtl8139C才40元,如果有,更是这样省了不少米)引用它的EEPROM的地址线和数据线,因为rtl8139的EEPROM地址线和数据线是由一个32位寄存器提供,一次操作必须锁存所有的地址线数据线和控制线,因此不适合于提供89C51烧写所需的编程信号线,只用它来锁存地址和数据线,编程需要的控制线由EPP(SPP)并口提供,下面是电路原理图。

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控制变成电压,Q1,Q2,R1,R2,R3为编程电压电路,12V电源用PC机内部电源提供(测一下最好能在12.5V~13V)ACK(并口pin10)接P3.4,反映烧写状态,为了防止误操作,S1为H时为擦除芯片和加密,L时为读写,电路简单,相信很容易看懂,印刷电路板的土我就不给出,我使用的是实验板做成的,样子非常丑。

然后是对EPP并口和rtl8139的编程。LPT1 EPP并口的数据口地之一般为0x378,控制rtl8139的EEPROM的寄存器地址为卡的I/O基地址+0xD4,下表为该寄存器的定义

Flash Memory Read/Write Register

(Offset 00D4h-00D7h, R/W)

/

定义

描述

31-24

R/W

D7-D0

反映数据线状态,当外部高阻时为输出,否则为输入

23-21

-

-

保留

20

W(只写)

CS

设置CS线

19

W

OE

设置OE线

18

W

WR

设置WR线

17

W

SWRWEn

准许软件访问flash memory:

0: 不准许通过软件访问flash memory

1: 准许通过软件访问flash memory并且在通过软件访问flash memory期间不准许访问EEPROM(我也不太懂什么意思,不过似乎没什么用,下面是原文)

Enable software access to flash memory:

0: Disable read/write access to flash memory via software.

1: Enable read/write access to flash memory via software and disable the EEPROM access during flash memory access via software.

16-0

W

A16-A0

设置地址线

       如果不想自己写软件,也可以用我编写的软件,软件还不完善,不支持加密,不支持分段模式的HEX文件烧写(对于89c51的4K ROM来说用不着 ),因为所有的编程信号都由软件提供,因此为了保证信号时序的正确,降低了烧写速度,建议在Windows2000下使用(98理论上可以,但尚未测试),软件界面如下:

软件介绍:

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

5.  此软件完全免费开放原代码,如果想自己做软件,可做为参考,或者改动硬件需要修改软件,也可随意修改软件,无版权限制。(因为此代码造成的计算机爆炸,不要找我补偿医药费!^_^)

此编程器因为线路简单,不需另外的编程器和MCU支持,而且预留的控制线还有很多,因此有很大的功能扩展空间,只要简单改动几条控制线,再在软件上稍加修改,就可以支持别的芯片。由于篇幅问题,无法为大家详细介绍该编程器的硬件和软件编程方面的原理,如果你想通过本文中的技术完全自主的制作自己的编程器或者想让本文中介绍的编程器烧写更多种类的芯片并能够使用其他网卡,你可以去看本文附带的软件包中提供详细的资料,包括RTL8139datasheet 89C51烧录的资料,与本编程器相关的PCI.和并口的硬件软件开发的资料,还有HEX文件格式,如果还有什么问题或者好的意见,可以在CSDN(www.csdn.net)论坛VC硬件系统版给我留言(我是版主AthlonxpX86),或者发贴,我的邮件E-mail: yds_086@163.com

版权所有:单片机教程网 2007
Email:erd51@163.com qq:58565254