导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→Easy 51Pro 2.0版终于设计出来了,看看精彩处

* 43603: Easy 51Pro 2.0版终于设计出来了,看看精彩处

   digiboy 
digiboy发表的帖子 

 Easy 51Pro 2.0版终于设计出来了,看看精彩处

此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片


两个月前我在网上上传了Easy 51Pro的第一个版本,由于制作很简单,使用方便,很受初学者的欢迎. 
由于第一个版本设计上没考虑到器件扩充问题,所以要让用户扩充器件是相当的麻烦,就诞生了
从新设计的念头。


1.增加器件管理器,要让编程器支持新器件只需在器件管理器中填入器件名称,FID(就是该器件编程方法ID)
,特征字。然后修改单片机程序,单片机程序注释很详细,关键部分做了标明,只要以AT89C51编程器程序为模板
修改一下即可。比较一下串行编程器的at89c51与at89c2051编程器部分程序。
at89s51这些可以ISP编程的器件更是简单

//at89c51编程器
void Erase01()//擦除器件
{
 InitPro01(1);
//-----------------------------------------------------------------------------
 //根据器件的DataSheet,设置相应的编程控制信号
 C2051_P3_3=1;
 C2051_P3_4=0;
 C2051_P3_5=0;
 C2051_P3_7=0;
 Delay_ms(1);
 SetVpp12V();
 Delay_ms(1);
 C2051_P3_2=0;
 Delay_ms(10);
 C2051_P3_2=1;
 Delay_ms(1);
//-----------------------------------------------------------------------------
 InitPro01(0);
 SendData();//回应上位机操作完成
}

//at89c2051编程器
void Erase00()//擦除器件
{
 InitPro00(1);
//-----------------------------------------------------------------------------
 //根据器件的DataSheet,设置相应的编程控制信号
 P2_6=1;
 P2_7=0;
 P3_6=0;
 P3_7=0;
 Delay_ms(1);
 SetVpp12V();
 Delay_ms(1);
 P3_2=0;
 Delay_ms(10);
 P3_2=1;
 Delay_ms(1);
//-----------------------------------------------------------------------------
 InitPro00(0);
 SendData();//回应上位机操作完成
}

//at89s51编程器
void Erase02()//擦除器件
{
 InitPro02(1);
//-----------------------------------------------------------------------------
 //根据器件的DataSheet,设置相应的编程控制信号
 OutBytes[0]=0xac;
 OutBytes[1]=0x80;
 SendInstrc(4);
 Delay_ms(500); 
//-----------------------------------------------------------------------------
 InitPro02(0);//
 SendData();//回应上位机操作完成
}

2.支持了HEX文件,第一个版本开始没有支持HEX文件,给KEIL C用户带了了不便

3.热键控制编程,当写完程序后不必切换到软件界面进行操作,按热键就可以了,操作成功会有声音提示.

4.善于移花接木,并口ISP下载线将可以支持Atmel ByteBlaster 下载线,Altera ByteBlaster可以改成
单片机的isP下载线.这都得意于程序这样设计
BOOL CParallelPro::InitPort(CPro* pPro,int nPort,int nProType)
{
 TRACE("CParallelPro::InitPort\n");
 TRACE("Current Isp:%d\n",m_arIsp.GetSize());
 m_pPro=pPro;
 if(m_bPort=CParallelPort::InitPort())
  pPro->  Notify(PRO_INIT_PARALLEL_SEC);
 else
  pPro->  Notify(PRO_INIT_PARALLEL_ER);
 m_bThread=FALSE;
 if(nProType==1)//Easy Isp下载线
 {
  m_nPinRst=16;//设置控制编程的并口引脚号
  m_nPinMosi=14;
  m_nPinMiso=15;
  m_nPinSck=1;
  m_nPinLe=17;
 }
 else if(nProType==2)//Atmel ByteBlaster
 {

 }
 else if(nProType==3)//Altera ByteBlaster
 {

 }
 for(int n=0;n  <m_arIsp.GetSize();n++)
  m_arIsp.GetAt(n)->  InitIsPro(this);
 return m_bPort;
}
理论上编程器程序也可以应用到其他编程器硬件,修改底层程序就可以了,例如这些东西
extern void SetVpp5V();//设置VPP=5V
extern void SetVpp0V();//Vpp=0V
extern void SetVpp12V();//Vpp=12V

5.重载的文件对话框,让你不必到硬盘中到处找文件.

6.将公开上位机程序,希望大家指出程序中的问题,同时也希望大家帮忙制作其他器件ISP下载线程序。
其中原程序中我修改的CSerialPort很好用,增加了这些函数
//SendBlock(BYTE *pBuf, unsigned long nLength):发送数据块
//virtual OnReceived(BYTE *pBuf, UINT nLength):当接受到指定长度的数据块时
//默认函数将发送消息给窗口
//SetExpRcv(nLength):设定期望接收数据块的长度

CParallelPort类也很好用,同时支持WIN98和WIN2000,XP
class CParallelPort  
{
public:
 BOOL GetPinLogic(int nPin);//得到指定引脚的电平
 BOOL SetPinL(int nPin);//设置指定引脚为低电平
 BOOL SetPinH(int nPin);//设置指定引脚为高电平
 WriteData(BYTE Data);//写数据口
 BYTE ReadData();//读数据口
 WriteCtrl(BYTE Ctrl);//写控制字
 BYTE ReadCtrl();//读控制字
 BYTE ReadState();//读状态字
 CString m_strDrivePath;//驱动程序
 BYTE m_CtrlByte,m_DataByte,m_StatByte;
 unsigned short m_nCtrlPort,m_nDataPort,m_nStatPort;
 BOOL m_bWin98;
 BOOL InitPort(int nPort=0x378);
 CParallelPort();
 virtual ~CParallelPort();
};
还将会有程序原理说明,图文并茂.

7.串行编程器和并口下载线都有线路调试程序,让你自制编程器时更容易.

8.新的版本支持AT89C2051了,已经通过了测试,只要将原来的12V/5v切换电路改为
12v/5v/0v切换电路即可.

现在设计已接近尾声,将会有一段时间的调试.希望感兴趣的网友帮忙测试,最好帮忙扩充器件,
可以先获得软件,电路,源程序.这是一件很有意义的事.

请在我的主页()留下邮箱,QQ号.
或者联系本人
nie_zq@163.net
qq:3813420
留言板:


发表时间:2003年10月19日19:38:57

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:关于PID自整定程序大家好:      &
[下一篇帖子]:看看这个数据采集怎么实现??放大器——〉A/D转换器——〉串口——〉计算机,请问A/D转换器后边用不