Proteus 软件在PIC 单片机教学及开发中的应用

2013-11-04 06:40袁正道王家斌
河南广播电视大学学报 2013年2期
关键词:编译器源代码断点

袁正道,赵 恒,王家斌

(1.河南广播电视大学;2.中船重工713 研究所,郑州 450000)

单片机是电子、机电一体化、自动控制等专业的主干课程之一,在生产实践中有广泛应用,而单片机的教学创新也成为各个学校的教研热点。单片机是一门理论联系实践的课程,注重培养学生动手能力和解决实际问题的能力,但是由于学校扩招和实训条件的限制,在教学中很难达到预期效果。由于其外设丰富、处理速度高以及可靠性强等优势,PIC 单片机在微控制器领域一直占有相当的份额。但是鉴于PIC 其开发工具相对于51、AVR 等单片机较为昂贵,很多学校由于经费的原因并没有建立起相应的实训室。本文就提出了一种利用Proteus 仿真技术解决上述问题的方案。

一、Proteus 软件及PIC 单片机介绍

Proteus 软件是英国Lab-center electronics 公司开发的EDA 软件,从上世纪80年代出现以来已经有20 多年的历史,在全球单片机及嵌入式仿真领域有着广泛的应用。此软件中元件库种类有3 万种之多,仅微控制器就包含各类51 系列、AVR、PIC 及ARM7 等多种类型,并且有丰富的虚拟测试工具如双通道示波器、信号发生器、万用表和各类专用调试工具,可以满足绝大多数仿真需求。更为重要的是此软件支持单步调试功能,不但可以在调试过程中设置断点并查看变量值,还可以精确显示运行时间(精确到0.1mS),对于定时器等外设的计算和开发有不可比拟的优势。

PIC 是美国Microchip 公司的系列单片机产品的前缀,PIC 由于其硬件系统设计简洁,指令系统精炼,在所有单片机中它是最容易上手学习的品种之一。此系列单片机有采用哈佛总线结构、精简指令(RISC)技术、低功耗、外设丰富等优势在实际应用中也受到广大开发者的欢迎。

二、PIC 单片机在Proteus 仿真中的优势

PIC 单片机的开发环境和编译软件分属与不同的公司,开发环境选用Microchip 公司的MPLAB 集成开发环境,可以进行C 语言和汇编语言的编辑操作,而对C 语言的编译业界普遍选用HI-TECH 公司的PICC 编译器或者是IAR 公司的IAR-PIC 编译器,而且编译软件可以嵌入MPLAB 集成开发环境中。编译生成的HEX 文件可以直接烧写进单片机中运行,生成的COF 文件内部包含有源代码、注释、编译后地址分配以及一些反编译数据,可以方便地进行逐步调试。在Proteus 软件中有针对PIC 单片机的特有窗口。如:

源代码窗口,可以显示用户编辑的源代码,并可以逐行调试。

变量窗口,能实时显示出全局变量和断点所在处的局部变量值。

内部文件寄存器数值,特别是在汇编语言编程时可以看到寄存器值。

EEPROM 数值窗口,在用户使用内部EEPROM 区域是直观看到写入内部的数据。

仿真时间以及断点间隔时间显示。当代码中设置调试断点时软件在断点处停止并提示从开始仿真到断点处运行时间以及上次断点到本次断点的时间间隔,可以很方便地进行定时器时长验证和修订。

三、项目化教学实例分析

定时器和中断是单片机开发过程中必须要用到的外设,PIC 单片机由于其片内资源丰富,其中断系统有多达14 个中断源,对于中断系统的开发和多个中断源的协调工作也成为了学生和初学者遇到的最大难题。PIC 内部也包含3 个不同类型的定时器,每个定时器也有其各自的特点。如果能找到一个实际项目能让三个定时器协同工作,并使用中断系统作为支持,就能充分调动学生积极性并培养学生的自主学习能力。

笔者在教学过程中设计的项目为“自行车码表的开发”,项目要求实现数码管显示自行车骑行过程中的时速及总里程数显示。

内部资源使用分配方面充分利用单片机内部设备,三个定时器中定时器0 作为计数功能,从外部引脚上采集自行车车轮转动引发的脉冲(软件中用周期性脉冲模拟),从而计量在单位时间内轮子转动次数。定时器1 由于其定时周期长并带有独立低频振荡器,可以作为精确秒定时,作为单位时间发生器。定时器2 从内部结构上就非常方便作为短周期发生器,则分配作为数码管刷新显示触发。精简代码列出如下:

程序中定时器1 中断周期为1S,在中断处理程序内将轮子转动圈数换算成速度,单位Km/h。开发环境应用Microchip公司的专用开发环境MPLAB,编译器采用第三方编译器HITECH 公司的PICC 编译器,如图1 所示。

图1 PIC 单片机开发及编译环境

图2 Proteus 软件仿真调试效果

图3 虚拟串口软件及Proteus 软件内串口控件

编译产生出HEX 和COF 两种文件类型,其中HEX 文件为十六进制文件可以直接进行芯片烧写,但在Proteus 无法进行调试,只能仿真出运行效果。COF 文件内部带有源代码及一些反编译数据,可以在Proteus 环境中进行代码调试、设置断点和观察内部变量值,非常方便进行前期开发时漏洞查找。

仿真效果如图2 所示,图中列举了仿真运行的显示内容,大致有代码窗口、变量查看窗口、仿真效果窗口和仿真总时间以及断点时间显示。

从图中可以看到硬件上选用了PIC16F877 作为主控芯片,定时器1 输入引脚外接有独立晶振,采用了四位数码管作为显示,显示内容为实时速度7.92Km/h。Proteus 软件使用方面,运用调试代码窗口在中断函数部分设置断点,全速运行可以停留在断点位置供学生观察调试效果,变量显示窗口上显示出局部和全局变量在运行至断点时的瞬时值,可以作为程序效果判断标准。在窗口下方显示有程序运行总时间和从上次断点到本次断点之间的时间间隔。

当Proteus 软件内单片机需要与PC 端上位机进行通信时需要用到串口控件COMPIM 如图3 所示。

在电路中将串口控件与单片机串口引脚对应连接,内部设置好波特率、串口号、校验等参数。PC 端用串口虚拟工具虚拟出新的串口编号,虚拟工具虚拟出了串口2 和串口3 而且两个串口自动连接。完成虚拟工作后PC 端可使用COM2,而Proteus 内部可以使用串口3,从而实现下位机与上位机的通信。

四、软件仿真的不足和改进方案

虽然Proteus 软件在教学中发挥了重要的作用,给每个学生提供了学习单片机的直观平台,但由于软件仿真的条件限制,不可避免地存在一些缺陷。

首先,Proteus 软件可以提供市面上常见的元件,但有很多元件库中并未包含。如工控常用的AD7705、一些霍尔芯片等并没有加入元件库,需要找到其他芯片作为替代。

其次,软件仿真时也会出现一些实际运行中存在的错误。这些错误在扫描显示和关于IIC 总线时序仿真过程中容易出现,需要仔细调整延时数值加以避免。

最后,软件仿真并不能仿真出真实电路板所出现的外界干扰、电源波动以及功耗等问题。这类问题属于经验问题需要工程师在实践中总结和改进。

五、总结

本文总结了在PIC 单片机教学中出现的问题,并提出了利用Proteus 软件仿真进行教学的方案。文中详细阐述了一项项目实例,通过项目化教学科研使学生体会到将单片机的硬件和软件仿真设计,体现了“教学做”一体化理念,激发了学习兴趣取得了较好的教学效果。

[1]陆晓琳.基于PIC16F648的智能寻迹小车设计与实现[J].电测与仪表,2011,(7).

[2]吴清荣,丁跃军.PIC 单片机低功耗设计[J].制造业自动化,2011,(5).

[3]王通生,贾存良,张逢雪,丁非.基于PIC16F877A的远程煤矿瓦斯监测系统[J].煤矿机械,2011,(5).

[4]肖海英,孙玉红.Proteus 仿真在高职《高频电子技术》教学中的应用[J].华东科技:学术版,2013,(1).

[5]徐涢基.基于μC/OS-Ⅱ和LPC2124 在keil4 与Proteus 中的应用仿真[J].中国科技博览,2013,(1).

猜你喜欢
编译器源代码断点
基于TXL的源代码插桩技术研究
基于相异编译器的安全计算机平台交叉编译环境设计
砂泥互层断点组合类型及其合理性分析
——以大庆长垣萨尔图油田为例
用Eclipse调试Python
一类无限可能问题的解法
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
揭秘龙湖产品“源代码”
通用NC代码编译器的设计与实现
TKScope仿真调试Cortex-M3内核的高级手段