历史上的今天
今天是:2026年03月14日(星期六)
2023年03月14日 | RTL8139如何改制AT89C51编程器
2023-03-14 来源:elecfans
想玩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的编程。LPT1EPP并口的数据口地之一般为0x378,控制rtl8139的EEPROM的寄存器地址为卡的I/O基地址+0xD4,下表为该寄存器的定义

如果不想自己写软件,也可以用我编写的软件,软件还不完善,不支持加密,不支持分段模式的HEX文件烧写(对于89c51的4KROM来说用不着),因为所有的编程信号都由软件提供,因此为了保证信号时序的正确,降低了烧写速度,建议在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支持,而且预留的控制线还有很多,因此有很大的功能扩展空间,只要简单改动几条控制线,再在软件上稍加修改,就可以支持别的芯片。由于篇幅问题,无法为大家详细介绍该编程器的硬件和软件编程方面的原理,如果你想通过本文中的技术完全自主的制作自己的编程器或者想让本文中介绍的编程器烧写更多种类的芯片并能够使用其他网卡,你可以去看本文附带的软件包中提供详细的资料,包括RTL8139datasheet89C51烧录的资料,与本编程器相关的PCI.和并口的硬件软件开发的资料,还有HEX文件格式。
史海拾趣
|
这是NI的初级教程和大家一起学。 菜鸟们只要对Labview 控件,前面板,程序面板有一定的初步了解后,就可以开始做一些相对复杂的小程序。 欢迎大家在此一起讨论。… 查看全部问答> |
|
我正在调试一个视频采集系统,可是在显示部分显示出来的图像左边总是有一条不算很宽的黑条,其他都正常,这是为什么呢?是不是行场的尺寸不对,我的是720*576,谁能告诉我更准确的数据呀(包括行场同步信号的尺寸)?好急!先谢谢了!… 查看全部问答> |
|
WINCE下的USB OTG怎么实现啊?看BSP包里面的代码,不见外接U盘(只见自己当PC的U盘)的操作啊!有没做过的人啊?给点思路啊! WINCE下的USB OTG怎么实现啊?看BSP包里面的代码,不见外接U盘(只见自己当PC的U盘)的操作啊!有没做过的人啊?给点思路啊!… 查看全部问答> |
|
流媒体是从英语StreamingMedia中翻译过来的名称,指的是在Internet/Intranet中使用流式传输技术的连续实时媒体。它实际上就是一种流式媒体,实现的是将传统媒体网络化,并通过网上点播的形式播放给浏览者。所谓流媒体技术,就是一种可以使音频、视 ...… 查看全部问答> |
|
#include void main (void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; & ...… 查看全部问答> |
|
我整一个打印机驱动,应用程序把数据送到打印机驱动程序里面,我在驱动程序里面要把数据处理了之后再通过串口把数据传输给打印机,然后我就要在打印机驱动里面来设置串口的波特率,实现串口的读写,现在如何实现在内核里面操作串口,求大神指导,最 ...… 查看全部问答> |
|
利用单芯片电压和电流输出DAC AD5422及数字隔离器ADUM1401构建16位全隔离输出模块 ... 电路功能与优势 本电路提供一种完整的工业控制输出模块解决方案。该设计适合过程控制可编程逻辑控制器(PLC)和分布式控制系统(DCS)模块,这些模块均要求具有标准4 mA至20 mA电流输出及单极性或双极性输出电压范围。16位DAC AD5422可通过软件配置提 ...… 查看全部问答> |
|
从通讯、计算机、消费类电子到汽车、工业,从能源、医疗到安防、航空航天,TI整合双方优势,不断提升产品结合后的总体效用,已陆续推出一系列创新、完整、独特的系统解决方案。TI致力于为客户提供“更多的设计和开发,更多的产品,更多的支持,更强 ...… 查看全部问答> |




