基于Proteus的单片机虚拟仿真实验案例设计
2018-06-05谭筠梅李玉龙王履程
谭筠梅, 李玉龙, 王履程
(1. 兰州交通大学 国家级计算机实验教学示范中心, 甘肃 兰州 730070;2. 兰州交通大学 电子与信息工程学院, 甘肃 兰州 730070)
单片机嵌入式系统类课程是各电类专业普遍开设的计算机硬件类课程。在传统的教学理念下,实验课程的设置过分依赖理论教学,实验内容多以验证性和演示性实验为主,无法满足培养学生实践能力和创新创业能力的要求,亟待对单片机课程的实验教学内容、教学方法进行深入的研究和改革。采用实际的工程案例来驱动实验教学,可以很好的解决这一问题[1-3]。
近年来,兰州交通大学整合了单片机课程的教学内容,从实验教学入手,汇聚了关于单片机的全部知识点,设计了不同的教学案例,采用多样化的实验教学方法,提高了课堂教学质量。教学中侧重实践能力的培养,极大地发挥了学生的学习主观能动性,提高了学生的综合素质和创新创业能力[4-6]。
本文设计并实现了一个基于Proteus的单片机实验案例。案例紧跟技术发展和社会需求,以提高学生实践能力、培养学生创新能力为出发点。案例覆盖教学大纲所有知识点,具备一定的深度和广度,并能充分激发学生学习兴趣,鼓励学生积极思考。
1 实验案例设计背景及相关要求
Proteus是著名的EDA工具,也是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,支持多种处理器类型。在编译方面,Proteus支持IAR、Keil和MPLAB等多种编译器[7-8]。使用Proteus软件与Keil软件结合进行单片机应用系统的仿真模拟和程序设计,可以灵活地设计多种类型的实验项目,方便地扩展普通实验箱无法完成的大型综合实验项目,降低实验室的建设和维护成本,并能充分调动学生学习的积极性,对提高学生实践动手能力、树立工程意识、培养创新创业能力起到非常重要的作用。
货车运输超重是我国道路管理中经常遇到的问题。本案例为设计一款基于单片机技术的货车超重监控系统。该系统不需要人员值守和专门的地磅设备就可以对路段上货车超重情况进行监测记录,大大减少了人力、物力的投入,减少了因车辆超载检测引起的道路交通事故,为道路安全运行提供了保障[9-10]。
该货车超重监控系统是一个可以综合运用单片机技术、电子技术、传感器技术、智能仪器及C51编程技术解决实际生活和工程问题的典型案例,通过实验培养学生掌握单片机的基本工作原理,熟练应用C51语言编程,初步掌握常用电子元器件的工作特性以及硬件电路设计的知识,了解Proteus仿真软件和Keil C软件的使用方法,了解基本的基于单片机的实际应用系统开发流程。
2 实验案例设计
2.1 案例需求功能分析
本实验案例要求学生设计并仿真实现一个基于单片机的货车超重监测系统,要求学生能够系统地运用已学过的理论知识,综合设计并实现该系统,从而提高独立分析问题的能力和解决实际问题的能力。学生通过对设计任务进行详细分析,设计出合理的实现方案,完成硬件电路设计和软件程序设计,并能在Proteus中仿真运行。
本案例采用51单片机作为系统处理的核心,利用集成压力传感器将机动车载重量转换成电压信号[11-13],然后将该电压信号传送到A/D转换芯片并转换成数字信号后计算出载重量。计算得到的载重量将送到单片机,单片机与设定的载重量作比较并判断是否超载。若货车超载,LCD应显示超载的重量,蜂鸣器开始报警,同时将超重数据写入存储器中。
2.2 器件选型与硬件电路设计
该案例的系统的功能模块如图1所示,其核心控制模块是51单片机,其他模块包括显示模块、报警模块、压力检测模块、A/D转换模块和存储模块[14]。
图1 货车超重监测系统实验的功能模块
通过对硬件功能模块的划分和系统的功能的分析,该实验系统关键器件的选择可参考表1,学生也可以根据设计需求自行选择。系统的硬件电路及Proteus仿真图如图2所示。
表1 实验案例关键器件型号选型
图2 实验案例硬件电路及Proteus仿真图
2.3 系统软件设计
基于51单片机的应用系统软件一般采用汇编语言或者C语言编写,受教学课时和学生基础的限制,本系统采用较容易掌握的C语言编写软件源程序。由于Proteus软件本身不自带编译调试环境,所以本系统源程序需要在Keil C下编写,将代码生成HEX文件,然后加载到单片机[15-16]。编写软件时,要求学生首先设计软件系统整体工作流程图,按功能划分模块,设计出每个模块的工作流程图并编写软件程序,最后进行软件模块集成。
按照系统工作的流程,软件设计分A/D转换模块、存储器读写模块、数据显示模块、报警模块和综合模块几部分组成。
A/D转换模块是单片机对ADC0832的控制和数据处理模块,使用单片机I/O引脚模拟ADC0832的相应时序进行数据交换;E2PROM存储器读写模块包含了对AT24C04AA的读写函数,使用单片机I/O引脚模拟I2C总线的时序操作;数据显示模块包含了LCD1602的动态刷新和压力数据显示的处理;报警模块包含了蜂鸣器声音音调和大小以及时长的处理;软件综合模块在程序中完成A/D芯片值的采集,通过计算公式得到当前的压力值,并将压力值送显示模块显示,同时进行相应判断及数据存储。
3 实验案例教学实施
3.1 实验项目的教学组织和任务分解
在案例实验教学实现的过程中,指导教师不但要讲解单片机应用系统的基本原理及技术难点,还要把案例分解成不同模块,每个模块就是一个小实验。学生通过每一个模块的实现最终汇集完成整个实验。在实验教学中,该工程案例覆盖了单片机课程教学目标的多个知识点,既可以应用到普通的课内实验课教学、实训教学,也可以用到课外的开放实验课。针对不同专业单片机课程的实验课时和不同基础的学生,本案例的课时可以设置为8学时或者16学时。案例的任务模块及课时分配如表2所示。
表2 实验案例的任务分解和课时分配 学时
在实验教学过程中,学生容易在显示模块和存储模块的实验中出现错误。显示模块使用的是LCD1602,存储模块使用的是AT24C04AA。这两个元器件引脚数目较多、控制指令复杂,电路设计和编写软件驱动模块的难度较大。为了让学生在这两个模块设计和实现的过程中尽可能少出现错误,开课前教师会要求学生提前查阅资料,并且把所用元器件的使用手册和基本使用示例发放给学生,让学生提前学习每个元器件的工作原理、电气参数及芯片封装结构,完成系统功能需求分析,综合思考并提出合理的实验方案。
在硬件电路设计过程中,要求学生从整体的角度出发,从系统集成的高度设计出每个模块的工作电路;在软件程序编写的过程中,要求学生改变一个主函数编写的方法,而是采用模块式的方法编写程序,这样不仅会降低程序的复杂度,也更容易查找和修改错误。
3.2 实验成绩评价与考核
传统的单片机实验课成绩评定是对每一次实验结果进行评价;而基于案例式的实验教学采用了新的更加客观的评价方法,既对学习过程中每一个环节进行考核,也对整个系统的实验完成情况和系统功能进行考核。总评成绩由实验环节成绩、系统设计与运行效果成绩、设计报告成绩和答辩成绩4部分组成,实验考核结果分为优秀、良好、中等、及格和不及格5个级别。通过从不同角度的考核,教师可以掌握学生的学习进度和对知识的掌握情况,以便随时调整教学进度和教学方法,更好地提高教学效果。
3.3 实验教学效果
基于Proteus的单片机工程案例的虚拟仿真实验设计完成后,首先应用于我校科技创新开放实验课。这种新颖的实验方式吸引了众多学生积极报名学习。该实验课程已面向全校所有专业开放,共有6个班、180名学生完成了该课程的学习,并且取得了非常好的学习效果。
在总结本项开放实验教学经验的基础上,案例式教学方法已被引入课内课程,并在多个专业推广。学生通过该课程的学习,为单片机嵌入式方向的学习、创新奠定了良好的基础,选拔出来的学生在“博创杯”“TI杯”等全国大学生嵌入式物联网大赛和各类创新创业大赛中取得了非常好的成绩。
4 结语
基于Proteus的仿真软件实验案例已经应用到我校多个专业的单片机课程教学中,取得了较好的教学效果,与传统实验相比具有明显的优势,实验内容更全面、在较少的硬件投入下就可以开展大型的工程实践类实验项目,丰富了实践性教学的手段。该方法不仅可以应用到单片机实验教学,还可以推广到嵌入式系统等其他课程。
参考文献(References)
[1] 叶宗海.应用型本科院校单片机实验教学改革研究[J].高教学刊,2016(13):128-129.
[2] 李蓉,叶俊民,杨艳.基于案例任务驱动的软件项目管理课程实践[J].计算机教育,2014(14):99-102.
[3] 孔英,褚晓广.基于案例项目任务驱动的计算机硬件课程实践教学[J].计算机教育,2013(6):30-32.
[4] 张同庄,胡明,郭健鹏,等.以能力为导向的单片机卓越工程师培养[J].高教学刊,2016(21):92-93.
[5] 冯洋.基于实践创新能力培养的单片机原理及应用课程改革与实践研究[J].高教学刊,2015(15):87-88.
[6] 马小红,张东波.面向创新能力培养单片机实践教学改革[J].教育教学论坛,2016(35):93-94.
[7] 王娟.Proteus软件在单片机专题实训中的应用[J].实验室研究与探索,2012,31(8):72-74.
[8] 赵月静,张永弟,翟卫贺.Proteus和Keil C在开发单片机控制系统中的应用[J].实验科学与技术,2013,11(2):31-34.
[9] 阚鹏飞.载运货车超载限制系统设计[D].哈尔滨:哈尔滨工业大学,2013.
[10] 赵加信.高速公路货车不停车计重收费研究[J].商品与质量,2016(39):109-111.
[11] 付承彪,田安红,朱怡婷.基于压力传感器的数字胎压计系统设计[J].实验室研究与探索,2017,36(6):51-54.
[12] 邓玉良.基于单片机实验系统设计的称重系统硬件设计[J].信息通信,2013(2):76-77.
[13] 刘淑波,张园,隋先辉,等.基于Proteus的气压报警系统设计[J].电子设计工程,2015(8):100-102.
[14] 张新,陈跃琴.51单片机开发25例:基于Proteus仿真[M].北京:电子工业出版社,2013.
[15] 邵春声.Proteus和Keil仿真联调在单片机课程教学中的应用[J].常州工学院学报,2015(3):75-77.
[16] 王海燕,杨艳华.Proteus和Keil软件在单片机实验教学中的应用[J].实验室研究与探索,2012,31(5):88-91.