© 2012-2023 Conmajia.
前言
我曾经在大学时代沉迷过一段时间的单片机,直到我发现这样子不泡妞不放浪的大学生活约等于纯纯的尼特。当我醒悟之后便立刻扔下了,避之不及。可事实上,时隔多年之后,尽管我早已五毒俱全磨灭了对科学的兴趣,却总是会在酒后酣醉之时,香闺缠绵之际,胡思乱想的梦里见到年轻的我像个屌丝似的在玩儿电子制作。
于是某日我宿醉方醒便弄了百十来只 avr 和 arm 的片子到手。也许玩也是会玩累的吧。
毕业多年,我老早便扔掉了下载线,想到利用手上器件 diy 它一副,记录于此文。
硬件篇:下载线
电路图
电路图使用经典的 SI-Prog下载线简化版本,如下图:

器材
电路图已经简单到批爆,我反正是不好意思打板啥的,直接洞洞板走起。
器材 | 型号 | 数量 |
电阻 | 4.7 kΩ | 3 |
电阻 | 10 kΩ | 2 |
二极管 | 1N4733 | 2 |
三极管 | C8050 | 1 |
插头 | DS-9 | 1 |
插座 | DH-10S | 1 |
像这样:
焊接完成的成品:
事实上硬件部分非常之简单,只要你不是唇笔,那真是有手就行。
告诉我,你是不是唇笔?啊?
软件篇:PonyProg
简介
做好了下载线,硬件部分就全部 OK 了,接下来就是安装编程软件。能够完美契合这种老掉牙电路的软件,那非老掉牙的 PonyProg 莫属。Pony,意为小马,也是某个著名化腾儿的名字。
官方点说,PonyProg 是Claudio Lanconelli 出品的老牌开源编程软件,最新版本是 PonyProg 2000 v2.07c。2000,光是看这破比名字就已经能知道它的年份了。这个玩意儿支持 Atmel 和 PIC 的全系列单片机,以及 I2C、Microwire、SPI 接口的 EEPROM,比如英特尔和飞利浦的一堆老古董电子垃圾。关于 PonyProg 的详细介绍和规格,你可以阅读这个页面,如果你实在是闲的蛋疼的话:http://www.lancos.com/prog.html。
一般玩家喜欢叫它“小马”,因为它的 logo 就是一匹小马脑袋,同时也是为了纪念某个叫小马的化腾。据说它是作者 Claudio 经常骑的一匹马,名字就叫 Pony,为了纪念他的马,给这个软件起名叫 PonyProg(Pony Programmer)。当然,现在他已经没马了。
你可以在 Claudio 的个人主页 http://www.lancos.com 下载到最新版本的 PonyProg。
虽然最近的 stable 版本是 v2.06,但不建议下载,因为不支持较新的 AVR 单片机(如 tiny13)……真鸡儿新呢哈哈。
使用方法
总线时序校准
第一次运行 PonyProg,首先要执行总线时序校准操作。这是因为 PonyProg 通过软件模拟单片机编程所需的时序信号,由于每台电脑CPU主频、总线频率、系统性能等因素各不相同,所以需要首先对当前电脑进行校准。
校准之前,先关闭电脑上运行的其他程序,以免影响校准结果。
校准方法如下,点击菜单“Setup-Calibration”进行校准,如图:
软件会弹出确认提示框:
英文大意为:“总线时序校准。你需要确认只有 PonyProg 2000 在运行(CPU 和硬盘这时应为闲置状态)。校准需要耗时数秒。你要校准吗?”。
选择“Yes”,然后软件会开始校准。校准操作大约需要 10 秒钟时间,这期间最好不要进行其他操作。当然,其实无所谓的,只有垃圾电脑才需要注意这些。
校准完成后,软件会提示:
接口设置
接下来需要设置 SI-Prog。打开菜单“Setup-Interface Setup”:
调出接口设置窗口:
按照图中内容设置接口方式“Serial”,“SI Prog API”,选择电脑上对应的串口,一般物理串口是“COM1”,USB 转 232 串口是“COMn”,具体 n 是多少你可以在 Windows “设备管理器”里查到。
控制线极性选项“Select Polarity of the Control lines”全部留空。
设置完成后,点击“Probe”按钮测试一下,如果弹出这个窗口:
就表示硬件工作正常,可以开始编程了。
编程
选择器件
首先选择对应的单片机/器件型号。在 PonyProg 主界面可以看到器件选择栏:
选择对应型号即可。
读取数据
连好单片机和下载线后,点“Read All”全部读取按钮读取器件内容。如果硬件正常,会出现读取进度条,读取完成后,窗口内会用二进制显示读取出来的程序内容。
写入数据
连好单片机和下载线后,点“Open Device File”,打开需要烧录的程序文件(比如 Intel HEX 格式的 *.hex 文件),主窗口会显示文件内容供你预览。然后点“Write All”全部写入按钮写入器件。成功后会有相应提示。
错误处理
如果编程时出现“Unknown device”之类的“Error -24”,说明你连线错位。可能是连单片机线序错误,这个可以参照单片机datasheet进行连接。也有可能是焊接错误,这就需要改板子了。
如果出现“Bad device”的“Error -23”,说明器件没有选对,需要重选。如果找不到对应器件,试试安装最新版的 PonyProg。
结语
通过半小时的努力,以后就可以开始无穷无尽的单片机游戏了。
开始 happy 吧!
(完)