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