想玩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
设置地址线
本文关键字:暂无联系方式编程器-仿真,电子制作 - 编程器-仿真
上一篇:利用S系列的ISP功能制作编程器