用STC89C52RC制作的AT89C5x编程器,目前可以烧写3*1024字节,烧好的芯片上机运行工作正常。 1、编程器介绍 手头上有两块AT89C52,闲来无事,用STC89C52RC制作了一个AT89C5x编程器。 电路板用的是老早双龙公司NICE-SST-51学习板,99年12.20生产,用于SST89F54/58/59烧写。 我把它改造成烧写AT89C52的电路,增加了VPP电压转换电路,根据编程要求,切换5V和12V。 12V电压源,用早先电视机顶盒12V电源。图2:电路板正面 图1:编程器外形: 图3:电路板背面 图4:USB-串口TTL线 图5:12V电源
STC89C52RC编程程序参考了许多网上资料,AT89C52有不少年头了,编程资料难找。 STC89C52RC编程程序充分利用了STC89C52RC上的资源,STC89C52RC上有1024字节的附加RAM,用它作为编程数据暂存,STC89C52RC上有4K字节的EEPROM,用它作为编程数据保存区。 通过实际使用,用它烧写的程序可以正常运行。 我找到的资料有:Easy 51Pro制作资料、51prog编程软件(PC端)、“PGM89软件完美汉化版”。AT89C52资料,其中Easy 51Pro制作资料内容详尽,是长沙理工大学 电气与信息工程学院,聂忠强,2003.10.28制作编写的,还是WIN98年代,PC端软件用VC6编写的,51芯片程序用的是KIEL环境,可以参考。 我制作的AT89C5x编程器仍然用PC机作为上位机,通过串行口与下位机的STC89C52RC通信,应答、发送和接收命令、传送数据都是通过串口。 上位机的界面,我没有采用Easy 51Pro、51prog、或者“PGM89软件完美汉化版”。与这些界面适配,难度实在太大。我采用的是STC公司的编程软件,其中的串口助手。如下图: 图7:编程器PC端界面
右侧的多字符串发送,用于命令发送,应答。下方的发送缓冲区,用于存放要烧写到AT89Cx中的代码。上方的接收缓冲区,用于显示附加RAM中的数据、显示STC89C52R内部EEPROM中的数据,显示从AT89Cx固件中读出的数据。
图8:宇宙版12V/5V/0V控制电路
图9:编程器12V/5V控制电路,控制信号从R5端输入。
电路元件清单: D--1N4148; Q1--BD139; Q3—9012; R5—4.3K R6—10K; R8—1.5K; R9—10K; R4、Q2、R7不用;
除上述12V/5V/0V控制电路改为12V/5V控制电路外,对比“图7:宇宙版编程器电路图”,编程器实际接线如下: 1、 数据线P0一一对接; 2、 地址线P1、P20~P24一一对接; 3、 模式控制线:AP37—BP37;AP36—BP36;AP35—BP27;AP34—BP26; 4、 EA/VPP接12V/5V控制输出; 5、 ALE/PROG接AP32; 6、 PSEN接地; 7、 RST接5V; 8、 AXTAL2接BXTAL1; 注:1、用A表示STC89C52RC引脚,B表示AT89C52引脚。 注:2、上述4~7表示AT89C52引脚。 2、编程程序综述 从串口助手左侧的“多字符串发送”,从上到下有“0F”、“00”、“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”,共11条字串,说是字串,实际是单字节指令, “0F”、是应答指令,发送“0F”,STC89C回应“F0”; “00”、 是读AT89特征字指令, STC89C回应“00”,并把读出的AT89特征字回传; “01”、 是读AT89固件指令,即读出AT89的内部程序,并把读出的AT89固件回传; “02”、 是擦除AT89固件指令,即擦除AT89的内部程序,叫“片擦除”; “03”、 是读STC89C EEPROM指令,读3*1024个字节,并把读出的数据回传; “04”、 是接收串口发来的1024个字节,并保存在STC89C的附加RAM中; “05”、 是回传保存在STC89C的附加RAM中数据指令; “06”、 是把保存在STC89C的附加RAM中数据写到STC89C的EEPROM中; “07”、 是STC89C的EEPROM扇区擦除,一次擦除叁个扇区。 “08”、 是烧写AT89固件指令; “09”、 是通过用户接口,把EEPROM文件写入STC89C的EEPROM; 特征字说明: 特征字(1E 52 FF):1E--ATMEL公司造;52--AT89C52;FF--12V编程电压; 特征字(1E 51 FF):1E--ATMEL公司造;51--AT89C51;FF--12V编程电压;
图11:用户接口下载EEPROM文件
比对EEPROM文件和EEPROM读出数据,完全准确。说明:通过用户接口下载EEPRO文件到EEPROM中,办法可用。 关于用户接口:上位机在用户接口界面设置好,要写入EEPROM的文件打开,点“下载/编程”按钮,用户接口会发出软启动命令,启动用户程序,进入监控程序区,自动把EEPROM文件烧写到STC89C52RC的EEPROM里面。 要注意!通过用户接口进入监控程序区,下载完EEPROM数据之后,程序并不会回到用户程序区,而是留在监控程序区。要回到用户程序区,要再次下载原先运行的程序到程序区,好在STC下载程序很方便。 AT89C5x的“片擦除”和“烧写程序”,在“EA/VPP”引脚要加12V电压,必须事先插入12V电源。
3、AT89C52编程原理: 图12:AT89C5x编程电路
图13:AT89C5x编程真值表
A: 由其ROM的容量可知其地址线需要13条,硬件连接如图11所示,整个P1口和P2口的低5位为编程地址输入线, P0口为数据输入端,P2.6、P2.7、P3.6、P3.7为编程模式.其电平组合见图12:(表9.). B: 以下是编程过程: 1. 将RST接高电平,PSEN接低电平. 2. 擦除芯片,每次重新编程前都要首先把原来ROM里面的程序擦除掉,将编程模式组合为擦除模式,送ALE\VPP端一个10ms宽度的低电平脉冲即可. 3. 在地址线上输入所需编程的存储单元的地址. 4. 将正确的控制信号组合为有效(写模式). 5. 在数据线上输入相应的字节. 6. 将EA升至12V. 7. 给ALE\PROG一个50us的低电平脉冲. 8. 效验数据,将控制信号组合为读模式,数据即出现在P0口. 9. 改变地址和数据,重复步骤3~8步,直至程序写完.
以上资料51hei下载地址:
at89c52编程.docx
(15.06 MB, 下载次数: 15)
|