老旧单片机实验箱的改造与升级
2014-02-10李学海孙群中吴蓬勃
李学海, 孙群中, 吴蓬勃, 李 莉
(石家庄邮电职业技术学院 电信系,河北 石家庄 050021)
0 引 言
目前,许多高校拥有早期购置的多种不同类型的单片机实验平台(或实验箱),其陈旧过时现象非常严重。例如,本校2005年批量购买的一种单片机实验箱(型号为TMC-1),如果不作改进,就已经不能使用了。原因是研制时所基于的单片机型号,几年前就已经停产、断供。
如果研究一项技术,用于升级改造各高校大量现存的、频临淘汰的单片机实验箱,不仅节约大笔开支,集约教学资源,激活存量资源,还可减少大量资源浪费和环境污染,也符合国家倡导的循环经济和绿色环保。
对于过时的单片机实验箱的改造和进一步进行升级,使其能够适应不同架构的单片机,是根据经验[1-9],那是可能的。
1 背景技术分析
1.1 TMC-1单片机实验箱
单片机实验箱主要用于单片机学习、实验或开发,因此单片机是整个系统的核心。本校所批量购置的单片机实验箱,是由清华大学科教仪器厂早年生产的“TMC-1开放式单片机实验系统”(实物图见图1),其售价为每台数千元。该型实验箱用于学习、实验传统的80C51单片机,原厂共设计了20个实验项目,并且为客户提供了每个实验项目的电路接线图、汇编语言和C语言源程序,供学生解读、模仿和验证。
图1 TMC-1开放式单片机实验箱
学生完成实验的主要方式是验证实验项目的预定功能,就是对于每个实验学生所需完成的主要操作:①硬件。插接连线而把外围电路连接到单片机的通用并行端口上;②软件。利用运行于PC机的一款在系统内编程工具软件(Flash Magic),把现成源程序编译后获得的目标程序(HEX代码)下载烧写到单片机内部。然后令单片机独立运行,来查看运行效果。这种方式就是“烧试法”或叫“盲调法”。[1]
至于用户程序的录入、编辑、汇编(或编译)、调试这些环节,只能借助于一款带有软件模拟(或叫虚拟仿真功能)的IDE(集成开发环境)来实现和练习,例如KEIL公司的μVision,或者国内的Wave或Medwin。由此可见,TMC-1实验箱只能实现ISP编程,不能实现仿真,因此它只具备单片机硬件工具链(仿真器、烧写器、目标板,三件套)[1]中的两种功能。
实验箱在单片机的安装位置,焊装了一个带有锁紧扳手的活动插座,即为ZIF插座,用于直接插接双列直插封装型(DIP)的40脚单片机。该实验箱的研制背景为,原厂针对的是飞利浦“P89C51RD2”单片机,该型号单片机已经买不到了。因此,需要在搞清该单片机特点,找一款与其兼容的、廉价易购的新型单片机,作为替代品。例如,STC89C51RC单片机。
1.2 P89C51RD2单片机
P89C51RD2单片机是由荷兰恩智浦(NXP)公司的前身,即为飞利浦(Philips)公司的半导体部门,获准英特尔(Intel)公司许可证生产的80C51兼容品之一。其实P89C51RD2共有4个同型产品,即为P89C51RA2、P89C51RB2、P89C51RC2和P89C51RD2(可泛称为P89C51Rx2),其性能完全一致,主要差别是存储器的容量不同,程序存储器依次为8KB、16KB、32KB和64KB的Flash。
该单片机的内部额外固化了1KB的自举程序(叫Boot Loader),地址编码为FC00H~FFFFH,与Flash空间的一个区块(Block 15)重叠,用于实现ISP(在系统内编程)和IAP(在应用中编程)下载用户程序,并且是经过UART串口下载的。ISP和IAP都属于免用专用编程器的“自编程”功能和技术,在TMC-1实验箱中仅仅利用了它的ISP能力。
每次单片机P89C51Rx2加电时或者复位后,都会面临一个选择问题,是开始执行自举程序而进入自编程状态,还是开始执行用户程序而去实现用户规定的目标任务。这就需要在/PSEN引脚上外接一只拨动开关(或者跨接插针),用来设定单片机是进入编程状态(该脚接地),还是进入用户程序(该脚悬空)。与编程有关的局部电路如图2所示[2]。
图2 P89C51Rx2的ISP控制电路
为了实现自编程,单片机制造商为P89C51Rx2设计了两种工作模式:编程模式和用户模式。两种模式的进入方式或进入流程,如图3所示。每次上电或复位后P89C51Rx2的硬件都会自动检查“引导状态字节”内容和/PSEN引脚状态,只有前者为00H、后者为接地,将从FC00H开始执行ISP自举程序,进入编程模式[1,10]。
图3 P89C51Rx2的模式进入方式
1.3 STC89C51RC单片机
STC89C51RC单片机是由我国深圳宏晶科技研制生产的一种80C51兼容品,性价比高、货源充足。
与P89C51Rx2单片机相同的是,STC89C51RC单片机也是在内部固化了一段实现ISP自编程的自举程序,并且ISP的实现也是经过UART串口下载用户程序的。因此,仍然可以利用实验箱原有的下载通道。
更重要的是,需要关注两者的不同点:STC89C51RC进入ISP的方式是在每次上电复位之后,检测UART串口接收端子RXD上是否有PC机送来的约定码流(比如连续的10个小写字母“d”的ASCII编码),并且持续检测几十到几百ms。如果有,则进入ISP模式;否则,进入用户程序。此外,即使进入了ISP模式,在完成用户程序的下载任务之后,最终还是会自动再进入到用户程序,其操作流程如图4所示[11]。
图4 STC89C51RC的模式进入方式
2 改造与升级及其曲折过程
经过分析得知,在把单片机替换为STC89C51RC之后,实验箱原有的编程电路仍然不变,只是编程开关无用了,使其固定在用户模式(USER)即可(见图2)。按理讲,每次要下载程序时,可以利用实验箱的电源开关,只要断开一下单片机的电源,然后再接通,即可令STC89C51RC进入编程模式。实践证明,不可行!
2.1 改造过程
经过分析,由于整个实验箱的电源回路,不仅负载多,而且还有滤波电容,导致电源电压的爬升缓慢,其上升沿不符合STC89C51RC的严格要求,不能可靠地触发其上电复位而进入编程模式。因此制作了一块小适配板,如图5所示,其电路原理图如图6所示。电路中仅仅在单片机的正电源回路中加入了一只非自锁式单刀双掷按钮开关S1,静态为接通,按动为断开。把单片机插装到适配板上,再把适配板插装到实验箱中原来单片机的位置。实践证明,依然行不通!
再次经过分析得出结论,这回是单片机内部的钳位电路惹的祸。由于当今的单片机等数字芯片基本都是采用了高速CMOS工艺制作的,此工艺为了防止静电击穿,需要在除电源引脚之外的绝大多数引脚的芯片内部加装钳位二极管[1]。如图7所示,只画出了其中一条引脚上的二极管。这样即使在断开S1时,处于电路中的单片机,其内部的VCC端子仍然可获取来自一些端口引脚GPIO的电流。结果导致单片机断电不彻底,于是进入不了ISP模式。
图5 STC89C51RC适配板实物图
图6 适配板原理图
图7 单片机内部的钳位电路
症结找到了,解决的措施是,把双联开关S1中剩余的一联正好利用起来,串联到单片机的电源地回路中,如图8所示。实践证明可行。
图8 单片机内部的钳位电路
2.2 升级过程
经过上述改造,使得实验箱能够适配廉价易购的国产单片机STC89C51RC,以及STC10、STC11、STC12等系列中的数10个型号。如果沿着这种加装适配硬件或软件的思路继续深入改造下去,还可让实验箱能适配非80C51兼容品的其他单片机(例如PIC系列等),甚至还可以为该实验箱额外添加一项高级功能“在线调试器(ISD或ICD)”。这时的实验箱可以用作一款简易仿真器,来学习仿真器的工作原理和操作方法。类似这样的改造活动实际就变成了升级行为。
(1) 升级实例一。选择一片功能可以囊括或者超出标准80C51的高性能兼容型号的单片机(例如,SST89C58、SST89E564RD或P89V51RD2等),以SST89C58为例[12],利用一款专业烧写器把一段1KB的在线调试专用代码(SoftIce58.hex,是原厂免费提供的,但不供源程序)固化到单片机中;然后直接插装于实验箱的单片机插座中,就可以把该实验箱升级为“简易型80C51单片机仿真器”;这时的实验箱就具备了80C51单片机硬件工具链“三件套”的全部功能。
不过,实践证明,原厂提供的代码SoftIce58.hex,其功能不够理想。就是用户程序不能脱机运行,也就不能制成原型机。原因是,每次加电或复位单片机都会进入监控模式,并且自动擦除用户程序。经过对SST89C58硬件和SoftIce58.hex软件的大量研究与分析,最后对于外接硬件和固化软件SoftIce58.hex进行了大胆地改进,使问题得到圆满解决。
(2) 升级实例二。如果能在80C51单片机实验箱上学习AVR单片机,会进一步提升实验箱的功能和利用率(ATMEL公司的AVR系列8位单片机的产销量位居全球第二)。以下就以目前国内教科书中讲解较多的ATmega16(或ATmega32)单片机为例[4],来升级8051实验箱。这需要我们设计和制作一块专用的适配板,电路原理如图9所示。电路中设计了高、低电平复位开关,分别适应于8051和AVR单片机。因此,该适配板不仅可以用于AVR到8051的转换,而且还可以用于8051到AVR的转换。
(3) 升级实例三。试想一下,如果能在80C51单片机实验箱上学习PIC单片机该是多么有趣的事儿(多年来PIC系列8位单片机的产销量保持全球第一;Microchip公司于2013年5月16日宣布,交付了第120亿枚单片机给一家日本公司Nidec)。以下就以目前国内认知度最高的PIC16F877单片机为例[5-6],来进行升级。这需要设计和制作一块专用的适配板,电路原理如图10所示。
适配板上规划了用于插装PIC16F877的DIP40插座、用于插往实验箱的DIP40插针、时钟发生器外接晶体、手动复位开关及其上来电阻、用于在线编程和调试的6芯插口(两个类型可选其一,分别适合对接原厂供应的两款简易型在线调试器“ICD3”和“PICkit3”)。
图9 ATmega16单片机适配板原理图
焊装好的PIC16F877单片机适配板直接插装于实验箱的单片机插座中,就可以把该实验箱升级为“简易型PIC16F877单片机仿真器”;这时的实验箱就具备了PIC16F877单片机硬件工具链“三件套”的全部功能。
(4) 升级实例四。上面3个例子都是在8位单片机之间的转换,本例将介绍一种从8位8051升级到32位的STM32单片机,并且可以在线烧写编程和仿真调试(需要借助于一款现成的在线调试器,例如U-LINK、J-LINK或ST-LINK等)。这里以48脚扁平封装的STM32F103C8单片机为例,该型单片机的I/O共引出了2个16位的并行口,恰好可以对接8051的4个8位并行口。需要注意一点:该型单片机的电源电压为3.3 V。STM32F103C8单片机适配板的原理图,如图11所示。
除了以上几个升级实例之外,如果有需要或者有兴趣,还可以为目前国内市场上见到的其他单片机品种(例如EM78系列、SPMC65系列、MSP430系列、MC68HC08和MC9S08系列、ST62系列、COP8系列、Z8系列、HT48系列、RC8系列、TMP86系列等等)[1-15]分别设计制作适配板,那就可以进一步提升实验箱的用途、价值和灵活性。
图10 PIC16F877单片机适配板原理图
图11 STM32F103C8单片机适配板原理图
3 实践教学中的应用
这种经过了改造、升级的实验箱,曾在课内实验、课程设计、毕业设计、创新实践、电子制作、电子设计大赛、开发性试验等实践教学活动中,都得到了很好的应用,并且受到了师生们的广泛肯定与好评。以下仅就三个方面的应用作一简介。
3.1 课内实验
除了在基于80C51的“单片机原理及应用”必修课程的实验中,本实验箱继续得到应用,并且学生借助于它还可以学习到仿真器才能实现的在线调试技术,延伸和完善了硬件工具链的训练能力和效果。在此实验箱的基础上,还为学生开设了“PIC单片机原理”选修课。学校欢迎,原因是换块PIC单片机适配板就行
了,无需添置专用的PIC单片机实验箱;实验教师欢迎,原因是节省了实验室和操作台空间,还免除了更换实验箱的麻烦;学生欢迎,原因是对于在80C51实验中已经熟悉了实验箱布局的学生,在实验PIC时上手快捷、高效。
3.2 课程设计和毕业设计
在课程设计和毕业设计活动中,该实验箱也受到了学生们的青睐。理由是,可以根据设计目标的大小和复杂程度,选择不同的单片机类型,增加了灵活性和便利性,提高了设计项目的完成率和成功率。还可以方便地进行不同单片机的比较,以及在比较实践中学习到新知识。
3.3 创新实践
为了提高学生的动手能力和设计能力,我们有计划地定期举行一些科技周活动。过去电信工程系的学生所制作的一些参赛作品,都是采用简单的电子电路设计的,电路功能稍微复杂一点,学生就设计不出来。而有效利用本实验箱的同学,则能设计出功能丰富、贴近实用的作品,甚至有的作品因设计思想新颖而获得比赛奖。在科技活动中,学生能利用单片机技术来完成自己的设计,这也印证了本实验箱的实用价值和教学效果。
4 结 语
通过本项目的研究,不仅锻炼了研发团队中的教师和同学们的动手能力和创新能力,而且还激活了存量资源,甚至还拓宽了原有实验箱的用途和功能。另外,还可以很方便地进行不同型号之间的单片机性能的横向比较研究。如果把该课题的设计思想加以推广,甚至变通、延伸和移植的话,还可以改造和升级众多高校实验室中,数量巨大的趋于报废的各种单片机实验箱或实验台,以及广大单片机爱好者手中大量的各种单片机学习板和实验板。这不仅能节约开支、避免浪费,还可以盘活大量的压库资源、节省空间、减少维护,其经济效益和社会效益是显而易见的。
[1] 李学海.经典80C51单片机轻松入门与上手[M]. 北京:清华大学出版社,2009.
[2] 李学海.经典80C51单片机快速进阶与实作[M].北京:清华大学出版社,2012.
[3] 李学海.新型80C51单片机轻松入门与应用开发——AT89S8253[M]. 北京:金盾出版社,2011.
[4] 李学海.ATtinyAVR单片机精品项目开发[M].北京:科学出版社,2012.
[5] 李学海.PIC单片机实用教程——基础篇(第2版)[M].北京:北京航空航天大学出版社,2007.
[6] 李学海.PIC单片机BASIC编程项目开发[M].北京:科学出版社,2012.
[7] 李学海.EM78单片机实用教程——基础篇[M]. 北京:电子工业出版社,2003.
[8] 李学海.凌阳8位单片机——基础篇[M]. 北京:北京航空航天大学出版社,2005.
[9] 李学海.16位语音型单片机SPCE061A实用教程——基础篇[M]. 北京:人民邮电出版社,2007.
[10] Philips.80C51 8-bit Flash microcontroller family P89C51RA2xx /RB2xx /RC2xx /RD2xx [EB/OL],2002.7
[11] 陈桂友.增强型8051单片机实用开发技术[M].北京:北京航空航天大学出版社,2010.1
[12] SST.FlashFlex51 MCU SST89C54 / SST89C58[EB/OL],2004.6
[13] 李学海.基于MC68HC908的智能遥控电话报警系统设计[C]//电子产品世界*特刊.第3届Motorola杯单片机应用大奖赛论文集,2000.
[14] Atmel.8-bit AVR Microcontroller with 16K Bytes In-System Programmable Flash ATmega169V/ATmega169 [EB/OL],2005.5
[15] Freescale.MC9S08AW60/MC9S08AW48/MC9S08AW32/MC9S08-AW16 Data Sheet(Rev 2)[EB/OL],2006.12