安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > easy 51pro(单片机编程器) v2.0 绿色免费版
easy 51pro(单片机编程器)

easy 51pro(单片机编程器)

 v2.0 绿色免费版
  • 软件大小:1.12 MB
  • 更新日期:2019-07-10 09:22
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:1.12 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  Easy 51Pro的第一个版本由于制作简单,操作方便一发布就受到了大家的热烈欢迎,很多用户自制成功后已经感受到了ISP编程技术是多么有成就感,小编今天为大家带来的是2.0版,也是最新版,在以下的详细介绍中,用户可以很快掌握如何扩充Easy 51Pro对器件的支持,用户在使用前可以先了解Keil C(如果扩充Easy 51Pro串行编程器)或VC(如果扩充Easy Isp下载线),小编会为大家介绍基本原理,至于串口通讯的细节和程序界面的制作请看源代码,里面有详细的注释;如果你正在学习单片机与PC的串口通讯,那么这套资料将对你非常有用。强大又实用,需要的用户可以下载体验

easy 51pro(单片机编程器)

软件功能

  支持hex文件了

  用户自己可以扩充器件

  重载的文件对话框,让你不必到处找文件

  热键支持,让你调试程序时效率更高

  灵活的程序设计,甚至可以让整套软件在其他编程器硬件上运行

  可以支持任何下载线,让你有更多选择

  设计了串行通讯超时程序,减少了掉线现象

  下载线,编程器都有相关的调试程序,让你制作时更轻松,提高了成功率

  开放源代码和详细的原理说明,用户可以根据自己的要求进行修改

软件特色

  1、使用串口通讯,芯片自动判别,编程过程中的擦除、烧写、校验各种操作完全由编程器上的监控芯片89C51控制,不受PC配置及其主频的影响,因此烧写成功率高可以达到100%,烧写速度很快并且烧写速度和微机的档次无关。

  2、采用57600高速波特率进行数据传送,编程速度可以和一般并行编程器相媲美,经测试,烧写一片4K ROM的AT89C51仅需要9.5S,而读取和校验仅需要3.5S。

  3、体积小巧,省去笨重的外接电源适配器,直接使用USB端口5V电源,携带方便,非常初学者学习51单片机的要求。

  4、软件界面友好,菜单、工具栏、快捷键齐全,全中文操作,提供加密功能,可以保护您的创作产权。可以说是麻雀虽小,五脏俱全!

  5、功能完善,具有编程、读取、校验、空检查、擦除、加密等系列功能,

  6、40pin和20pin锁紧插座,所有器件全部以第一脚对齐,无附加跳线,对于DIP封装芯片无需任何适配器。

  7、采用优质万用锁紧插座,和接触不良等问题彻底说再见,可烧写40脚单片机芯片和20脚单片机芯片、

  8、改进的烧写深度确保每一片C51系列芯片的反复烧写次数都能达到1000以上!内部数据至少保存10年。

  9、因为采用了9针传口通讯,这样一来就不会再和打印机抢一个打印口,随时随地想烧就烧,让芯片编程成为一种快乐。

安装说明

  1、用户只要点击本网站提供的下载地址即可将应用程序下载到磁盘

easy 51pro(单片机编程器)

easy 51pro(单片机编程器)

  2、打开数据包,解压数据文件,得到可以直接使用的程序文件

easy 51pro(单片机编程器)

  3、双击主程序即可将应用程序打开

easy 51pro(单片机编程器)

使用说明

  别看界面和上一个版本差不多,里面的东西可全部换了,使用还是一样。点击“自动完成”后,就会一项一项的往下进行。最优的设置就像上面这个图。缓冲1会自动刷新上一次你打开的文件,所以你不必每烧一次芯片就去打开一次文件。你也可以不点击“自动完成”,在该界面下“回车”就是的。不在该界面下时可以用“热键”,所以每当编译完程序后,直接按热键就可以了(默认热键Ctrl+Shift+P)。在调试中频繁烧片时这个功能显得很重要。要把按钮设置成“自动”很简单,用“鼠标右键”点一下就可以了。操作成功或失败会有不同的声音提示。成功的声音提示可能会让你编程时更兴奋,效率更高。如果你觉得声音听起来不爽,就在设置里“False”它吧。

easy 51pro(单片机编程器)

  这个下面有提示,一看就知道怎么做了吧。有4个编程器选择。Easy 51Pro串行编程器也是新设计的,原来的那个

  电路中12v/5v切换电路改成了12v/5v/0v切换电路,这样就可以烧AT89C2051了。不过还要使用一对跳线或开关切换(详细内容在《自制Easy 51Pro串行编程器》)。

  Easy ISP下载线可以是任何一种并口下载线,因为我有个这样的设计:

  打开程序目录下的EasyIsp.ini文件可以编辑控制ISP时所用到的并口引脚。文件下面有详细的说明。编辑这个文件就可以支持你手中现有的下载线了,同时也解决了软件向上兼容的问题,如果你是老版本的用户请把这个文件删除。但我还是推荐一款我新设计的下载线,就是用的上面这个配置(其实每根线接个电阻比接根导线更容易焊,那就和Atmel的图一样了):

easy 51pro(单片机编程器)

  其实这个电路就是从Altera 下载线和Atmel 下载线中抄来了一点。我觉得使用74373的OE很有必要,编程完毕后可以设置为高阻,这样就不会影响单片机的那几个引脚。使用LE可以保持当前的信号状态,增加了抗干扰。R1,R2是为以后扩充其他器件而保留的。这个电路在我的电脑上运行得很稳定了,如果你对电路的稳定性还存在怀疑,那么你可以去抄一份适合你的电路,不过要记得特别关照一下SCK这个引脚,不然下载线就会不稳定了。

  Altera ByteBlaster下载线用来下载AT89S51的原理图:

  注意:本软件设置中新增了一个“下载线性能”,里面有3个选择“一般”,“较快”,“最快”。选择“一般”改变一次信号就会有一次控制LE的操作(一个脉冲,开启,关闭);“较快”则每改变一次信号就开启一次LE,但不会关闭,这是因为对并口访问一次可以延时,即使器件没有LE或LE接了高电平;“最快”则不使用LE。请根据你自制下载线的稳定性设置。

easy 51pro(单片机编程器)

  下载线做完后,还要对其进行调试。我为大家开发了一个线路调试软件“IspTest”,功能比上一个版本更强,使用更方便。

  同样它也共享了EasyIsp.ini中的配置。点击按钮后用万用表量那个引脚的电平是否可以控制到位。

  虽让这个东西整个是免费的,但我的服务算做到无微不至了吧。做Easy 51Pro串行编程器也有个调试程序,那是我以前写的,主要是方便当时学CPLD,测试逻辑是否可以实现。不过后来又添加了调试单片机子程序的功能,做编程器时可以用它来测试线路是否都接好,12v/5v/0v是否可以控制。

  这次软件设计的非常Flexible,从上面对下载线的支持就可以看得出,但最主要的还是对器件的支持。一个人做这个东西不可能做到支持很多器件,没时间,也没钱搞。所以我就设计了这样一个东西:

  这上面显示的器件和Easy 51Pro中下拉列表中的一样。Easy 51Pro每次启动都会从一个“ChipList.chip”中载入器件信息,用这个软件打开“ChipList.chip”就会像上图这样。如果列表中没有你期望的器件也不必着急,自己DIY一个就是。这个DIY的过程已经被我简化的不能再容易了。

easy 51pro(单片机编程器)

  你可以直接向这个列表添加新器件,填入一些器件的信息就可以了,也可以“从文件导入”,就是把另外一个“*.chip”文件中的列表合并到一起。器件列表是给Easy 51Pro软件识别器件的,光有这个还不行,还必须让它知道该器件编程的方法。

  这个就要你编程序了。Easy 51Pro串行编程器的控制器单片机程序是用Keil C写的,详细的注释,可读性很高,而且我建立了一种框架让程序可以分层设计,模块化设计。要支持其他器件可以以我写好的AT89C51,AT89C0251,AT89S51编程器程序为模板修改即可。如果要扩充Easy Isp下载线的功能,也不难,只要你懂得一点C++就可以了。扩充器件的具体细节请看《Easy 51Pro的原理与扩充》。

easy 51pro(单片机编程器)

  Easy 51Pro编程器的原理与扩充之Easy ISP篇

  如果你看完了《Easy 51Pro编程器的原理与扩充》,那么你看这篇文章将更加容易。你会发现ProWork和class CIsPro的原理完全一样,其实ProWork就是模仿了CIsPro。我管CIsPro叫“ISP编程方法类”。

  看本文,你可能需要一点C++的基础知识。本文主要是帮助用户掌握对EasyISP进行扩充的原理和方法,所以讨论重点将放在CParlPro和CIsPro,需要了解其他细节可以去看源程序。另外附VC源代码,在VC6.0上就可以编译出一个EPro.exe的可执行文件。不过本程序使用了Code Jock的Xtreme Toolkit界面解决方案,需要先下载安装(至少要装15分钟)。如果编译时提示找不到dll,请把winio.dll,winio.sys,hook.dll,XT2000Lib.dll拷贝到程序所在的目录

easy 51pro(单片机编程器)

  Easy 51Pro的应用程序框架:

  CEProDlg:对话框界面接收用户操作,把用户操作转换成对CPro对象中的函数调用

  CPro:根据用户的选择,建立CParlPro对象(如果使用并口下载线)或CSerialPro对象(如果使用串行编程器);管理CParlPro对象和CSerialPro对象,为它们提供与用户界面的通讯;建立两快64k的缓冲1和缓冲2,提供一些管理缓冲的函数;管理器件列表,可以通过特征字查询到与之匹配的器件。

  CParlPro派生自CParallelPort

  CParallelPort:负责安装驱动程序,提供丰富的函数方便对并口进行操作。

  CParlPro:封装了ISP编程的一般流程,通过CIsPro的派生类对象控制并口对器件进行编程。CSerialPro派生自CSerialPort

easy 51pro(单片机编程器)

  CSerialPort:提供丰富的函数方便串口通讯

  CSerialPort:把CPro传递过来的用户操作信息转换成编程命令按照协议发送给编程器

  由于CParallelPort中设计了这样一些函数:

  BOOL SetPinLogic(int nPin,BOOL bLogic); //设置指定引脚,bLogic=1高电平,bLogic=0低电平

  BOOL GetPinLogic(int nPin); //得到指定引脚的电平

  BOOL SetPinL(int nPin); //设置指定引脚为低电平

  BOOL SetPinH(int nPin); //设置指定引脚为高电平

  他们可以通过并口引脚号对并口的某个引脚进行操作,这就使Easy ISP天生具备支持任何下载线的能力。看看是怎么支持的:

  int m_nPinMosi; //控制MOSI所用的并口引脚

  int m_nPinMiso; //控制MISO所用的并口引脚

  int m_nPinRst; //控制RST所用的并口引脚

  int m_nPinSck; //控制SCK所用的并口引脚

  int m_nPinLe; //控制器件锁存所用的并口引脚

  int m_nPinOe; //控制器件OE所用的并口引脚

  int m_nPinR1; //保留引脚1

  int m_nPinR2; //保留引脚2

  BOOL m_bLe; //锁存有效时的电平

  BOOL m_b2Le; //锁存无效时的电平

  BOOL m_bOe; //OE有效时的电平

  BOOL m_b2Oe; //OE无效时的电平

easy 51pro(单片机编程器)

  上面这一些变量保存了下载线用到的所有并口引脚号。这么多引脚资源,应该够用了吧。要知道MOSI,MISO,SCK这些引脚的用途可以看《Easy 51Pro编程器的原理与扩充》。在初始化的时候会把这些变量赋予设定的值。

  if(nProType==1)//Easy ISP下载线

  {

  CString strEasyIspIni;

  strEasyIspIni=m_strAppPath+"EasyIsp.ini";//从EasyIsp.ini文件获得引脚配置信息

  //如果不存在"EasyIsp.ini"文件,则使用默认的下载线配置(老版本的)

  m_nPinMosi=GetPrivateProfileInt("引脚控制","MOSI",14,strEasyIspIni);

  m_nPinMiso=GetPrivateProfileInt("引脚控制","MISO",15,strEasyIspIni);

  m_nPinSck=GetPrivateProfileInt("引脚控制","SCK",1,strEasyIspIni);

  m_nPinRst=GetPrivateProfileInt("引脚控制","RST",16,strEasyIspIni);

  m_nPinLe=GetPrivateProfileInt("引脚控制","LE",17,strEasyIspIni);

  m_nPinOe=GetPrivateProfileInt("引脚控制","OE",2,strEasyIspIni);

  m_nPinR1=GetPrivateProfileInt("引脚控制","R1",3,strEasyIspIni);

  m_nPinR2=GetPrivateProfileInt("引脚控制","R2",4,strEasyIspIni);

  m_bLe=GetPrivateProfileInt("锁存控制(LE)","Enable",1,strEasyIspIni);

  m_b2Le=GetPrivateProfileInt("锁存控制(LE)","Disable",0,strEasyIspIni);

  m_bOe=GetPrivateProfileInt("输出控制(OE)","Enable",0,strEasyIspIni);

  m_b2Oe=GetPrivateProfileInt("输出控制(OE)","Disable",1,strEasyIspIni);

  }

  如果在设置“编程器”中,选择了EasyISP,那么程序将从EasyIsp.ini中载入引脚的配置信息。

  如果程序目录不存在该文件呢?那就是支持默认的下载线,这个下载线是原来设计的,这样就解决了程序向上兼容的问题。如果设置“编程器”中选择了Atmel ByteBlaster下载线或Altera ByteBlaster下载线,那么就会进行下面这些配置。

  else if(nProType==2) //Atmel ByteBlaster下载线

  {

  m_nPinRst=PIN_SELIN; //PIN_SELIN这些在ParllelPort.h中做了定义,这是并口引脚的功能号

  m_nPinMosi=PIN_D0;

  m_nPinMiso=PIN_ACK;

  m_nPinSck=PIN_STROBE;

  m_nPinLe=PIN_D2; //不用LE,为了延时假定一个不起作用的引脚

  m_bLe=0;

  m_b2Le=0;

  m_nPinOe=0; //不用OE

  m_nPinR1=m_nPinAf=PIN_AUTO; //保留

  m_nPinR2=m_nPinIni=PIN_INIT; //保留

  }

  else if(nProType==3) //Altera ByteBlaster下载线

  {

  m_nPinRst=3;

  m_nPinMosi=8;

  m_nPinMiso=11;

  m_nPinSck=2;

  m_nPinLe=14; //控制74244的LE

  m_bLe=0;

  m_b2Le=0; //LE常置低电平

  SetPinL(14); //先预置74244'LE为低电平

  m_nPinOe=0; //没有OE

  m_nPinR1=0;

  m_nPinR2=0; //无保留引脚

  }

  有些东西要提示一下。m_nPinOe是控制器件锁存的并口引脚号,但74244没有OE怎么办呢,那就把m_nPinOe赋为0吧,并口是没有PIN 0的。还有就是对器件LE的控制。m_bLe表示锁存有效时的电平,例如74373的LE高电平有效,所以m_bLe=1,

  m_b2Le表示锁存无效时的电平,所以74373的m_b2Le=0;如果需要74373的LE常开启怎么办呢?m_bLe=1,m_b2Le=1不就解决问题了吗!同样还有m_bOe,m_b2Oe。看看m_nPinLe主要用在了哪里吧。

  void CParallelPro::SetSck(BOOL bLogic) //设置SCK引脚的电平

  {

  if(bLogic)

  SetPinH(m_nPinSck);

  else

  SetPinL(m_nPinSck);

  if(m_nIspSpd==2) //如果性能设置为“最快”

  {

  return;

  }

  else if(m_nIspSpd==1) //如果性能设置为“较快”

  {

  SetPinLogic(m_nPinLe,m_bLe); //开启锁存

  return;

  }

  else //如果性能设置为“一般”

  {

  SetPinLogic(m_nPinLe,m_bLe); //开启锁存

  for(int n=0;n<=1000;n++) //延时,在LE产生脉冲宽度

  {

  }

  SetPinLogic(m_nPinLe,m_b2Le); //关闭锁存

  }

  }

  这段程序的意思是如果性能设置为“一般”,SCK上的信号改变一次,就锁存一次。如果性能设置为“较快”则把LE开启,但不关闭。你肯定要问为什么每次都要开启呢,即使LE重来没有关闭过?因为这样可以多一次对并口的访问,访问一次并口的会消耗一定的时间,这样就可以当作极短的延时。所以即使器件没有LE,或者74244的LE接到了GND,也可以假定一个吗!如果设置为“最快”呢,就不用锁存了。性能设置为“一般”时,有一个锁存过程,锁存后可以增强抗干扰。

  下面这段程序可以参照一下《Easy 51Pro的原理与扩充》中对void SendInstrc(BYTE nByte)的解释,原理都是一样,不过这里的程序要获得“位”就没有单片机里那么容易了。

  void CParallelPro::SckBytes(int nBytes) //通过下载线与器件通信

  {

  for(int n=0;n

  {

  SetSck(0);

  SetMosi((OutBuf[n] & 0x80)); //SCK为低电平时,发送一位

  SetSck(1);

  if(GetMiso()) //SCK为高电平时,接收一位

  {

  InBuf[n]=InBuf[n] | 0x80;

  }

  else

  {

  InBuf[n]=InBuf[n] & 0x7f;

  }

  SetSck(0);

  SetMosi((OutBuf[n] & 0x40));

  SetSck(1);

  …

  …

  }

  上面那些程序主要是关于对并口控制的,主要是方便你应用。下面介绍一下CParlPro控制编程的主思路。先介绍一下CIsPro是什么?刚说过CIsPro是“ISP编程方法类”。它是一个纯虚类,只有函数定义,没有函数实现,就像还没填数额的支票,当然兑不到钱。

  class CIsPro

  {

  public:

  BYTE FID; //该类所支持的FID

  CParallelPro* m_pParlPro; //方便调用到CParallelPro中的资源

  virtual void InitIsPro(CParallelPro* pParlPro);

  virtual void PreparePro()=0; //编程前的工作

  virtual void ReadSign(BYTE* pBuf)=0; //读特征字

  virtual void Erase()=0; //擦除器件

  virtual BOOL Write(BYTE Data,int nAddr)=0; //写一个单元

  virtual BYTE Read(int nAddr)=0; //读一个单元

  virtual BOOL LockBit(int nBit)=0; //写锁定位

  virtual void ProOver()=0; //编程结束后的工作

  CIsPro();

  virtual ~CIsPro();

  };

  这个类定义了对器件编程的一般操作,是不是和串行编程器中的ProWork很相似?从这个类派生出对器件编程的具体方法。再看看这个CIsPro类是怎么被应用的。以AT89S51为例(因为我手头上只有这种芯片)。现在就是给支票填数额了。

  //At89s51Isp.h

  class CAt89s51Isp : public CIsPro

  {

  public:

  CAt89s51Isp();

  virtual ~CAt89s51Isp();

  virtual void InitIsPro(CParallelPro* pParlPro);

  virtual void PreparePro(); //编程前的工作

  virtual void ReadSign(BYTE* pBuf); //读特征字

  virtual void Erase(); //擦除器件

  virtual BOOL Write(BYTE Data,int nAddr); //写一个单元

  virtual BYTE Read(int nAddr); //读一个单元

  virtual BOOL LockBit(int nBit); //写锁定位

  virtual void ProOver(); //编程结束后的工作

  };

  还是挑几个出来看看究竟吧,最好对照一下DataSheet上的那个表。

  //At89s51Isp.cpp

  void CAt89s51Isp::Erase()//擦除器件

  {

  m_pParlPro->OutBuf[0]=0xac; //根据器件手册上规定的命令协议

  m_pParlPro->OutBuf[1]=0x80;

  m_pParlPro->SckBytes(4); //向器件发编程命令,4个字节

  Sleep(500); //擦除器件要500ms

  }

  BOOL CAt89s51Isp::Write(BYTE Data,int nAddr) //写一个单元

  {

  int nTimeOut=0;

  m_pParlPro->OutBuf[0]=0x40; //根据器件手册上规定的命令协议

  m_pParlPro->OutBuf[1]=((BYTE*)&nAddr)[1]; //高地址

  m_pParlPro->OutBuf[2]=((BYTE*)&nAddr)[0]; //低地址

  m_pParlPro->OutBuf[3]=Data;

  m_pParlPro->SckBytes(4); //向器件发编程命令

  while(Read(nAddr)!=Data) //效验:循环读,直到读出与写入的数相同

  {

  nTimeOut++;

  if(nTimeOut>=1000) //如果超时了,写入失败

  return FALSE;

  }

  return TRUE;

  }

  BYTE CAt89s51Isp::Read(int nAddr) //读一个单元

  {

  m_pParlPro->OutBuf[0]=0x20; //根据器件手册上规定的命令协议

  m_pParlPro->OutBuf[1]=((BYTE*)&nAddr)[1]; //高地址

  m_pParlPro->OutBuf[2]=((BYTE*)&nAddr)[0]; //低地址

  m_pParlPro->SckBytes(4); //向器件发编程命令

  return m_pParlPro->InBuf[3]; //该单元的数据

  }

  void CAt89s51Isp::PreparePro() //编程前的准备工作

  {

  m_pParlPro->SetRst(0); //RST置低电平

  m_pParlPro->SetMosi(0); //MOSI置低电平

  m_pParlPro->SetSck(0); //SCK置低电平

  Sleep(10);

  m_pParlPro->SetRst(1); //编程前RST要置高点平

  Sleep(10);

  m_pParlPro->OutBuf[0]=0xac; //注意这里,按照ATMEL DataSheet的规定,任何编程操作前

  m_pParlPro->OutBuf[1]=0x53; //必须先发送Programming Enable的命令,安排在这里最合适

  m_pParlPro->SckBytes(4);

  }

  还是贴那个出表来看一下吧!

  还有一个函数千万别忘了:

  CAt89s51Isp::CAt89s51Isp()

  {

  m_pParlPro=NULL;

  FID=0x02; //该类所支持的FID

  }

  最后再看看CParlPro是如何使用CIsPro的:

  CParlPro有个这样的东西:

  CArray m_arIsp; //Isp编程方法队列

  在CParlPro的构造函数中:

  CParallelPro::CParallelPro()

  {

  m_arIsp.Add(new CAt89s51Isp); //把所有的Isp编程方法对象加入到队列

  }

  当用户对选择的某器件编程时须要先得到该器件的编程方法

  CIsPro* CParallelPro::GetIsPro(BYTE FID) //查找支持该FID的"Isp编程方法对象"

  {

  for(int n=0;n

  if(m_arIsp.GetAt(n)->FID==FID) //从队列中找出支持该器件FID的编程方法

  return m_pIsPro=m_arIsp.GetAt(n); //设置当前"Isp编程方法对象"指针

  return NULL;

  }

  例如用户发出擦除AT89S51的命令后:

  void CParallelPro::Erase(BYTE FID)

  {

  if(m_bThread) //如果上一次操作线程还没结束

  {

  m_pPro->Notify(PRO_INVALID);

  return;

  }

  if(GetIsPro(FID)==NULL) //查询是否支持该FID,并获得编程方法

  {

  m_pPro->Notify(PRO_WORK_INVALID);

  return;

  }

  m_nCurWork=2; //当前操作标识

  AfxBeginThread(ProWorkThread,this);

  }

  获得编程方法后当然是要使用该编程方法了,使用编程方法是在ProWorkThread线程中进行的,创建另外一个线程就是为了避免在读,写这些编程过程中,窗口界面停止响应。ProWorkThread是如何使用这些编程方法的,你一看源代码就知道了。

  最后再总结一下扩充Easy ISP的步骤:

  步骤1,2,3,和《Easy 51Pro的原理与扩充》中介绍的一样。

  4.从CIsPro中派生出一个类,实现这个类中的所有函数。最好以CAt89s51Isp为模板,修改一下就可以了。还有记得这里:

  CParallelPro::CParallelPro()

  {

  m_arIsp.Add(new CAt89s51Isp); //把所有的Isp编程方法对象加入到队列

  m_arIsp.Add(new 你的Isp方法类); //<<<<<<<<<<<<<<<<<<<<<<<

  }

  5.测试你的程序,成功后把它贴出来与大家分享,可以先发个Email给我。

系统原理

  Easy 51Pro v2.0宇宙版

  |

  |------软件

  | |------Easy 51Pro.exe(主程序)

  | |------IspTest.exe(下载线调试程序)

  | |------ChipManager.exe(器件列表管理器)

  |

  |------文档

  | |------Easy 51Pro的制作及使用说明.htm

  | |------自制Easy 51Pro串行编程器.htm

  | |------Easy 51Pro 的原理与扩充.htm

  | |------Easy 51Pro编程器的原理与扩充之Easy ISP篇.htm

  | |------并口下载线常见问题.txt

  |

  |------Easy 51Pro串行编程器

  | |

  | |------Easy 51Pro电路.Sch

  | |------E51Pro.hex(把它烧到单片机)

  | |------线路调试程序

  | |

  | |------SubProc Assi.exe

  | |------SUBPROC.BIN(调试时把它烧到单片机)

  | |------SubProc.asm

  |

  |------EasyIsp下载线

  | |

  | |------Easy Isp_2.Sch(下载线电路)

  | |------老版本电路

  | |------EasyIsp-1 .jpg

  | |------v1.2版的电路.jpg

  | |------v1.4版的电路.jpg

  |

  |

  |------Easy 51Pro v2源程序(VC)

  |

  |------串行编程器源程序(Keil C)

常见问题:

  检测器件时,时有时无,严重时根本检测不到,更谈不上对器件编程了。这就是下载线不稳定的表现。主要是SCK那里的问题,以前我使用了74373的锁存解决了问题,信号改变就锁存一次,这个方法比较稳定,但速度比较慢。

  参照了Atmel的下载线后,在并口STROBE那里接了个500欧姆左右的电阻,再去掉原来的锁存发现也可以运行。免去了锁存过程后,速度提升很多,但速度变快后发现有点不稳定,我在程序中设置了一定的延时后又稳定了。

  上述两种方式必须把并口设置为ECP模式。通过几个月的摸索,这次新设计的下载线很稳定,并口不必再设置为ECP模式,也不要求用HC的器件了。其实就是从Atmel和Altera下载线那里抄来了一点。

  你也可以去抄一点,注意SCK那里一定要把握好。最好是全部照抄。你也可以用你的办法解决这个问题,成功后记得给大家分享。这套系统在我的机器

  上运行很稳定,在几天疯狂的测试中,基本上没几次编程失败,我机器的配置是Duron 1G,ddr 128m,Abit主板,AMD761芯片组。

  写器件时总是写到某个地址就停顿,然后报告失败;

  或者可以顺利写完,但效验时数据不正确。最可能的原因是电源不稳定,电缆太长,线路没焊好,器件质量问题等。也可能与你电脑性能有关,特别当你开启了很多程序。

  不能检测到器件,但可以正常读写,并且效验无误。这个就是你单片机问题了,可能某些模块坏了。

  以下是我总结做下载线的步骤和经验:

  1.先保证目标板上的单片机可以正常运行,很多人忘记EA/VPP要接高电平。

  2.做下载线时,电缆不要太长。

  3.注意单片机外围电路的影响,影响最大的可能是单片机的复位电路,可以先不接

  电容。

  4.一定要保证用IspTest时,信号都可以控制,并且电平都能控制到位。很多人

  忘了74373还要接电源的,结果测试时只有0-3V的变化。

  5.调试时可以先把LE接高电平,OE接低电平,不用软件控制。

下载地址

人气软件