现在的笔记本包括台式机都渐渐地舍弃了并口、串口;很多网友也跟我说,台式没有并口了,下载线没法用了,让我帮他想想办法。看来做个USB-ISP下载线是势在必行了。

  在网上搜了下,主要有两种方案,一种是用FT245串口芯片加ATMEGA8的方案,另一种是只用ATMEGA8进行USB串口协议的软件模拟和ISP下载全部完成。据说第一种稳定,但成本高,电路复杂,不便自制。我们还是本着低成本,简单易做的原则进行。就用单个M8来做。

  好!废话少说,干活。在网上搜了一下找了个BUG少,易于自制的图。

  在制做前首先要搞清楚几点,第一,这个USB下载线本身就是一AVR单片机,在制做完成后首先也得通过其它并或串口ISP下载线给它下载程序,这样它才能工作。第二先得大概了解一下这个AVR单机机M8的基本资料。这样才能对电路有个了解,从而便于调试。因此,你原先用的并口ISP下载线在这里还得起着关键的作用,可别扔掉啊!我图示一下这个过程先:

接下来按上述图的要求准备元件。

  元件准备好后,先得检测下质量,电阻的阻值、发光管的极性、电容是否有短路。要测试下两个稳压管的稳压值是否正确。最最重要的是先把USB接口用延长线接到PC上,然后用万用表测一下正极在哪,做个标记,这样就能搞清楚了D+、D-的位置,也不会接反电源了。免得焊好后发现错了极性反复焊,焊盘很容易脱落,也避免接反烧了元件。(我开始用的是USB公头接口,后来发现在板子上吃不上劲,稍一用力很可能会松脱。所以换成母口了)

  电路图我整理了一下,因为有的元件不需要,有的为了方便检查,避免漏连了线。

现在补上焊板图:1、底板焊盘图

2、跳线图:粉红色为正面跳线,绿色为背面连接导线。

下面是全图。供焊接时参考。

(上面三张图为2009.03.06补上)

焊接过程就没什么好说的了,不是PCB板,是洞洞板的,在事先大概做个布局(布局原则就是减短引长度,跳线尽量少。好像我做的跳线并不少哦!)然后就按照上面的电路图焊接,完成后如下图,感觉是不是还不错?:

再来张反面吧,有点惨不忍睹吧!

在调试前也还得先弄清几个问题:
  第一、电源题:原先的并口下载线是靠S51板上来供电的,也就是说当你焊好你的USB-ISP板后给它装固件时,USB-ISP板得向原并口下载线供电,而固件装好后USB-ISP板就是靠PC的USB口向我们的USB-IS板供电了,而你以后的51实验板就不能向这个USB-ISP板供电了,否则PC和51实验板都向USB-ISP供电,那么电压不同就有可能烧坏PC口或元件的。因此J2跳线就是为了区别装固件和正常下载而使用的。装固件时另附电源加在USB-ISP上,J2短接,可以过J2口向原来的并口下载线供电。当正常使用时,USB-ISP板上的附加电源撤掉,由PC的USB口供电,将J2断开,隔离开USB-ISP板和51板电源。

  J1是降速跳线,短接时慢速,在装固件时要求在慢速下。J3是M8复位跳线,装固件时要求M8在复位状态。正常使用时就断开这三个跳线了。
  第二、ISP接口问题:得弄清下载接口的对应接线,MOSI、MISO、RST、SCK要一一对应不能弄错。也就是说你原先并口下载线的并口各功能线接到十针的ISP接口和USB-ISP下载线的接口要对得上。例如我的51板是自己做的,上面的十针下载接口是我自己随意接的没有按照什么标准。因此我做并口下载线时,就将并口下载线上的各功能线与51板上的一一对应,这样就能调试通。现在做USB-ISP下载线还是一样,得按照我自己的十针接口方式,只要各功能线准确无误地对上就好。
  J1是降速跳线,短接时慢速,在装固件时要求在慢速下。J3是M8复位跳线,装固件时要求M8在复位状态。正常使用时就断开这三个跳线了。
  不同的PC端下载软件对并口脚的定义是不同的,这一点一定要弄清楚,否则是不可能正常下载的。有的软件有配置文件,可以跟据你的要求设置并口的某个脚为什么功能。如ISPLAY 1.5。它的配置文件如图:

你可以通过修改这些MOSI、MISO、SCK、RST、OE、LE等功能输出的并口脚号以适应你的下载线。

  我的原先并口下载线用的是官方的一张图:

它的配套PC端下载软件ISP-30A是不能自己设定并口引脚号的。界面如下图。

好!下面开始调试,检查USB-ISP下载板没有连错线或短路现象。将USB-ISP下载板的三个跳线短接,接上外加电源,测量电流为6mA,应该没问题。将原先的并口下载线的并口端接至PC,将十脚ISP接口端与USB下载板对接,测量并口板上的电压已正常。如下图:(我这是示意图,因为在房子里插上PC光线不好,照得不清)

此时USB下载板上的发光管是不会亮的,因为它里面没有程序还无法运行。开始进行下载。在PC上运行ISPLAY1.5如图:

  事先我将配置文件Pin_config.ini内的各功能线已修改为和我的并口下载线相同的脚号。在左下角的“程序设置”里选好那个配置文件。点击“检测器件”钮,但始终检测不到器件,如上图。我想我的并口下载线肯定是好的,一直在用啊!难道配置文件不起作用?或那个LE控制时序和我那个板上的要求不同?干脆用那个我一直使用的ISP-30A试试吧!于是将它运行。因为是要给ATMEGA8下载程序,所以在器件选项里选MEGA8。

果然,我点了下Read,居然能正常读取了,于是我点Open file然后选择网上下的那个11K大小的main.hex,点击Write接下来就是写程序和校验一切OK。然后点击Fuse Bytes(熔丝字节),在下图的SUT0和CKSEL0前点上勾,

  然后回到主界面点Write LBs。当写完之后我把三个跳线一拔,绿色发光管已经亮起,说明M8的程序运行了。这样我的USB下载板的固件就算装好了。
  将USB下载板从并口下载器上拔下,我去掉附加电源后将它插到PC的USB口上,立即就发现了新USB设备,一切没有悬念,安装驱动程序一路正常(这部分软件的使用网上已写的很详细,我就不重复了),PC告诉我设备可以使用了。我将我的51板和USB下载线连上

运行PROGISP1.6.6

  一阵狂喜过后我在“编程器及接口”下的选择框中选USBASP,在“选择芯片”里选AT89S51。点击“芯片识别字”右边的RD钮,哦!可就是检测不到器件如下图:

  弹出这个窗,说明USB下载线是正常的了,就是检测不到51目标板。莫非是ISP连线太长?我又做了根只有10CM的ISP连线,但状况依旧。唉!沮丧啊。休息休息,喝口水……
  突然想起网上说起过用修改过的固件可以针对51板出现的Chip Enable Program Error。立即上网找来那个18K大小的USBISP.hex,重做刚才的下载工作,一切顺利,再运行PROGISP1.6.6
  哈哈!检测到51器件了,

  特征字不匹配,不管它了,先点击“是”。于是便试着点击“读出Flash”钮。成功!
我接着点“调入Flash”选择一个我以前的HEX文件,点击下面的自动,红色的发光管在不停地闪烁着,我开心啊!
     然而在写完后校验时却总通不过,汗!

  是下载线太长不稳定?就剩10CM长了,难道真的天都不可怜我吗?在一阵无助的胡乱操作中,突发奇想选AT89S52试试。
  这一试不要紧呀!居然成功啦! 反复下载不同的程序,一切都OK。
  再换上我那长40CM的ISP连线,反复下载程序试验,你猜怎么着?不要太稳定哦!

  至此大功告成!

总结:
  下载固件时,如果你原先的并口下载软件支持ATMEGA8。最好就用你一直使用的并口下载软件。这样可以先排除并口下载线上的问题。
  遇到问题多试试几种操作,不要轻易放弃。
  还有就是这个PROGISP1.66是不是有BUG?明明是S51,偏偏要选S52才能正常读写。还有那个ISPLAY1.5,估计不是配置文件不起作用就是那个LE的时序和我并口下载线上的要求不一样。后面抽空再找找原因。

谢谢大家捧场!哪位手痒也想做的给我留言,我会将全部资料发给你们。我在对驱动的安装和后面的下载写的较略是因为网上已把软件部分写的很细了,上网一搜“USB-ISP”就能搜到。好了!写的不够详尽之处请拍砖,我再加料啊!

我把M8各脚的电压值列出来,状态是烧写完HEX文件,拔掉短路帽,接上5V电源,但没接上PC。供大家参考一下。
D-………………3.2V、
D+………………0.1V、
M8①脚…………4.8V、
②③………………0V、
④………………0.1V、
⑤⑥………………0V、
⑦……………………5V、
⑧……………………0V、
⑨……………………0.8V、
⑩……………………0.8V、
11,12,13脚…………0V、
14脚………………0.1V、
15脚………………0.1V、
16,17,18,19脚……0V、
20,21脚………………5V、
22脚……………………0V、
23脚………………0.1V、
24脚……………………5V、
25,26,27,28脚……4.4V。

自制单片机之八……USB-ISP下载线的更多相关文章

  1. 自制单片机之二-----AT89S51ISP下载线的制做

    最小系统板做好了,接下来就是做根ISP下载线了.否则程序怎么写到AT89S51芯片里呢? 先来认识一下AT89S51上ISP(在线编程)功能脚的定义 看上图的左边AT89S51引脚图的P1.5.P1. ...

  2. 自制单片机之九……写给对制做并口ISP下载线有疑惑的朋友

    一.器件的选用 制做并口ISP下载在网上有很多的电路和对应的PC端下载软件.很多人疑惑,不知该用哪张图,用哪个下载软件.我看了一下,采用的器件主要是74HC373.74HC541和74HC244.其实 ...

  3. 自制单片机之一------AT89S51最小系统制做

    C51最小系统电路在网上一搜一大把,大同小异.我略做改动后如图: 加一个11.0592MHZ的晶振是为了以后做串口通信时和PC有相同的波特率.可用短路帽切换.说说板子的布局:网上卖的最小系统都是把板子 ...

  4. LATTICE USB下载线接口说明

    这节知识摘抄于网络,仅用几张图片来显示,提醒Usb下载线的连接方式. 最后贴出个人使用的8线的USB下载器的连接方式: 再补充一点,应为彩色杜邦线与USB下载器是活口连接,两个可以分开,再连接的时候, ...

  5. USB转TTL 下载线 线序定义

    产品名称:USB转TTL 下载线 长度       :1米 芯片       :PL2303HX.PL2303TA. 线序定义红+5V, 黑GND, 绿TXD,白RXD

  6. 新唐M0 ISP下载要点

    http://blog.csdn.net/rejoice818/article/details/7736029 一.注意:官方光盘内“Software Utilities”目录下,可找到ICP或ISP ...

  7. 非标准USBasp下载线烧录Arduino BootLoader的参数设置

    本文仅适用于BootLoader损坏且买到国产“免驱USBasp下载线”导致Arduino IDE无法识别从而不能烧写的情况.是一种略显非主流的操作方式. 因为Arduino的IDE并不支持这种免驱的 ...

  8. LPC1758串口ISP下载程序

    最近手上拿到一块人家公司做的3D打印机的板子,用的核心芯片是LPC1758,板上引出了ISP下载接口.那接口共4个引出脚,如下图所示:   其中ME_EN引脚又连接到了芯片的P2[10]引脚,那个引脚 ...

  9. STM32的ISP下载程序方式:

    STM32的板子的串口ISP下载方法:Boot0接到3.3V上,Boot1接到GND,对板子重新上电,STM32单片机重启的时候,会进入到ISP模式.

随机推荐

  1. cf500B New Year Permutation

    B. New Year Permutation time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  2. POJ2761---Feed the dogs (Treap求区间第k大)

    题意 就是求区间第k大,区间 不互相包含. 尝试用treap解决一下 第k大的问题. #include <set> #include <map> #include <cm ...

  3. HDU4605---Magic Ball Game(主席树 好题)

    题意:一颗二叉树,任意节点要么有两个孩子要么没孩子. 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果此球重量等于该结点重量,球就停下了 如果此球重量小于该结点重量,则分别往 ...

  4. CF- Day at the Beach

    C. Day at the Beach time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  5. 面试al tx

    阿里:   一面:  1:写代码,给三个数组abc,每个数组若干数字,判断一个数字在不在三个数组中.用的map解决. 2:例举知道的排序,写出归并排序代码. 3:剩下的都是小题目了:包括三次握手,tc ...

  6. 模型-视图-控制器 (MVC)

    在MVC中 ,模型代表数据和业务规则, 视图包含了用户界面元素,例如文本,表单等 控制器则管理模型和视图中的通信

  7. lesson6:java线程中断

    正常的情况下,业务系统都不会去中断它的线程,但是由于一些特殊情况的发生,线程已经不能正常结束了,并且此类线程已经影响到业务系统提供服务的能力,如果系统设计的健壮,便会通过监控线程去主动的中断此类线程. ...

  8. 利用ajax从txt读取数据

    html代码: <div id="news"></div> txt: [ {"id":"1", "news ...

  9. WPF之Binding的使用

    引出: 在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件 ...

  10. 生成getter()、setter()方法去掉变量前缀

    当定义的变量名有前缀但是不想在生成它的getter()和setter方法的时候让前缀出现,比如今天项目的部分代码: public class Crime { private UUID mId; //标 ...