Proteus和Keil软件在单片机实验教学中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Proteus和Keil软件在单片机实验教学中的应用王海燕,杨艳华(上海电力学院电力与自动化工程学院,上海200090)摘要:针对单片机实验教学中存在的问题,提出了利用Proteus、Keil软件作为实验教学的辅助手段,并以“电子密码锁”设计为例,具体阐明了Proteus软件和Keil软件在单片机实验教学中的联合运用方法。实践证明,该方法能激发学生的学习兴趣,加深学生对单片机原理及应用的理解,锻炼学生进行软硬件综合开发的能力,提高单片机实验教学的效果。关键词:单片机;实验教学;Proteus软件;Keil软件中图分类号:TP368.1;G642.0文献标志码:A文章编号:1006-7167(2012)05-0088-04ApplicationofProteusandKeilinMCUExperimentTeachingWANGHai-yan,YANGYan-hua(SchoolofPowerandAutomationEngineering,ShanghaiUniversityofElectricPower,Shanghai200090,China)Abstract:ProteusandKeilwereproposedastheauxiliarymeanstosolvetheproblemsinMCUexperimentteaching,andthejointuseofProteusandKeilinMCUexperimentteachingwasclarifiedwithanexampleofthedesignofelectroniclocks.Itwasproventhatthemethodnotnolyarousedthelearninginterestsofthestudents,deepenedthestudents’understandingoftheprincipleandapplicationofMCU,cultivatedthestudents’comprehensiveabilityofhardwareandsoftwaredevelopment,butalsoimprovedtheMCUexperimentteachingeffect.Keywords:MCU;experimentalteaching;Proteus;Keil0引言单片机课程是电力和自动化等专业的主干课程,通过该课程能培养具有单片机应用产品设计、分析、制作和调试能力的实践型人才。传统的单片机课程教学采用“先理论讲解,再动手实验”的教学模式,以大量的原理来引导学生入门,不仅使学生理解困难,而且感觉枯燥乏味;教学过程中以单片机原理为核心,其应用只是点缀,造成学生应用能力培养不足;将软硬件分离介绍,对单片机软硬件结合的系统设计方法强调不够,使得学生在构建实际的应用系统时缺少系统化的思路。而且由于实验条件的限制,学生的动手经验完全来自于加工成箱的实验设备,做实验时只是机械地接孔连线,创造性和学习的兴趣被严重挫伤,实验箱经长期使用后,有些功能出现了故障,导致学生无法正确地进行实验[1-4]。本文将Proteus和Keil软件联合使用,实现单片机软硬件的仿真。这种方法用虚拟单片机代替实验箱的硬件电路,形象具体,增强了学生的感性认识,有助于对实验原理的理解。大量的教学实例通过软件仿真,不仅节约了硬件资源,而且提高了教学效率。1Proteus和Keil软件的联合仿真Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。Proteus与其他电子仿真软件不同的是,它不仅能仿真单片机的工作情况,还能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。从某种意义上讲,这种仿真弥补了实验和工程应用间脱节的矛盾[5-8]。Keil是德国开发的51单片机开发软件平台,支持汇编和C语言。能够不接硬件电路直接进行用户程序仿真,或者利用硬件仿真器,通过连接单片机硬件电路,在仿真器中载入项目程序后进行实时仿真调试。Keil软件提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解。利用Proteus和Keil联合仿真,具体的设置步骤如下[9-11]:①下载VDM51.DLL文件,将该文件复制到Proteus安装目录下(C:\ProgramFiles\LabcenterElectronics\Proteus6Professional\MODELS)以及KeilC安装目录的\C51\BIN目录中。②编辑Keil安装目录下的TOOLS.INI文件,加入TDRV5=BIN\VDM51.DLL(”PROTEUSVSMMONITOR51DRIVER”),并保存(注意:不一定要用TDRV5,根据原来字段选用一个不重复的数值即可,引号内的名字随意)。③打开Proteus,画出相应电路,在Proteus的debug菜单中选中useremotedebugmonitor。2实验教学实例本文通过“电子密码锁”这一实验教学实例,介绍Proteus和Keil在单片机实验教学中的应用。2.1实验要求设计电子密码锁,用4×4键盘组成0~9数字键、确认键和删除键等,用6位数码管组成显示电路提示信息。当输入密码时,只显示“-”,当密码输入完毕按下确认键时,将输入的密码与设定的密码进行比较,若密码正确,显示“888888”,门打开,用LED发光二极管绿灯亮做为提示;若密码不正确,发出报警声,并显示“FFFFFF”。2.2硬件设计打开Proteus的ISIS软件,进行原理图绘制,添加51单片机及外围电路元件并连接,电路如图1所示。图1“电子密码锁”电路图中的主要元件有AT89C51、74HC373、RESPACK-8、7SEG-MPX4-CC、BUTTON、SPEAKER、LED-GREEN、CRYSTAL和CAP-ELEC等,构成了AT89C51单片机芯片、6位LED动态数码显示屏、4×4行列式键盘、发光二极管、音频放大模块、蜂鸣器和时钟电路等模块。电路的核心是单片机AT89C51,单片机以动态扫描方式同时驱动六个数码管来显示密码;如果输入密码正确,则单片机驱动数码管显示正确信息,同时LED发光二极管点亮;如果密码错误,单片机驱动数码管显示错误信息,并且驱动蜂鸣器来报警。AT89C51单片机共有4个8位并行口P0~P3,其中P0口8个引脚P0.0~P0.7接8位LED动态数码显示屏A~G和DP端,作用是送段选码到6位数码管,七段LED数码管采用共阴极接法,码位为1时有效;P1口的P1.6接蜂鸣器,P1.7接LED发光二极管。P2口的8个引脚P2.0~P2.7接LED动态数码显示屏S1~S8端子,作用是送位选码,码位为0时选中当前位;P3口接矩阵式键盘,对按键进行键盘扫描,传输数据到AT89C51单片机中,其中P3口的8个引脚P3.0~P3.7接键盘行端子R1~R4和列端子C1~C4,分别用于行扫描和列扫描,行扫描选中行送低电平,其余送高电平,列扫描读取低电平有效,代表当前列有键按下。2.3软件设计电子密码锁主要实现密码的输入、清除、更改和开锁等功能。在Keil软件下建立项目,用C语言编写“电子密码锁”程序[12-13]。采用主程序调用子程序的模块化结构,主要由主程序、键盘扫描程序和显示子程序等部分构成,主程序通过判断跳转到相应的子程序来实现系统各模块的功能。2.3.1主程序主程序主要完成初始化、调用键盘扫描程序和显示子程序等功能。主程序流程如图2所示。图2主程序流程图2.3.2键盘扫描子程序本实验采用行列式键盘。行列式键盘对键的识别方法有两种:①常用的逐行扫描查询法;②是速度较快的线反转法。本实验采用逐行扫描法。键盘扫描需要完成以下几项功能:(1)判断是否有键按下,其中包括去抖处理。由单片机P3口向键盘送全扫描字,然后读入行线状态来判断,每个键都分成水平和垂直的两端接入,分别接P3口低4位和高4位。扫描的动作是先送入扫描码,再从键盘读取。例如扫描码送入11111110,低4位1110说明当前扫描第一行,而高4位1111是将4条列线均设为高电平,若此时第一行第一列按键被按下,当前按键所在列线接地,则从键盘读取的结果为11101110,由此来判断按键位置。为准确读取按键信息,本实验采用软件延时,调用延时子程序来达到去抖的目的。(2)判键类型,做出不同处理。按键有5种类型:数字键、确认键、删除一位键、全删除键、空键。①数字键:存储键值,将显示缓冲区workbuf[]对应位查表赋值,显示“-”。②确认键:跳转到主程序,进行密码比较。③删除一位键:当前显示“-”变为无显示,将显示缓冲区workbuf[]对应位赋值0X00,显示为空。④全删除键:清屏,将显示缓冲区workbuf[]所有位查表赋值,显示均为空。⑤空键:无显示。由于扫描的全局性,空键被作为一个键值存储,视为错误密码位。(3)编码转换。读取扫描码,将对应按键数字存入变量num中,并将其存放在待比较数组变量的某位中pwx[count]=num,存放的具体位置由按键计数变量count确定。而数码管段选码则由存放段选码值的数组通过查表获得,workbuf[count]=tabledu[x]。键盘扫描子程序流程如图3所示。图3键盘扫描子程序流程图2.3.3显示子程序该子程序为中断服务子程序,由定时器T0控制。将段选码送P0口(P0=workbuf[i]),位选码送P1口(P1=tablewe[i])。显示子程序代码:voidtimer0()interrupt1{TMOD=0x01;TH0=(65536-500)/200;TL0=(65536-500)%200;ET0=1;EA=1;TR0=1;uchari;for(i=0;i<6;i++)//将6位逐位发送{P0=workbuf[i];P1=tablewe[i];delay(5);P0=0;}}2.4软硬件结合仿真调试打开KeilC51软件,新建工程,选择Atmel的AT89C51,进入Keil的project菜单OptionforTarget‘Target1’,添加源文件到工程中。在Output选项下的createHEXfile选项前打钩,在Debug选项栏右上角Use选项右边的下拉框中,选中ProteusVSMMonitor-51Driver。再进入setting,如果是单机联调,IP为127.0.0.1,如不是单机则填另一台机的IP地址,端口号均为8000。在KeilC51中编写MCU的程序,编写完软件程序并编译通过后,在Keil中直接点击调试按钮,开始进行仿真调试,同时在Proteus中查看结果,此时Proteus的仿真调试工具条的运行按钮由黑色变为绿色。按F5或点击工具栏的按钮,Proteus开始运行[14-16]。本实验设置原始密码为“666333”,密码可任意改动。通过键盘输入“666333”,数码管显示“———”,然后按“确认”键,数码管显示“888888”,同时LED绿灯持续点亮,如图4和图5所示。图4密码输入正确数码管显示全“8”图5密码输入正确LED绿灯亮当输入的6个键值不是“666333”,数码管显示相应按键个数的“-”,此时按“确认”键,数码管显示“FFFFFF”,并伴随蜂鸣器鸣响,3s后数码管熄灭,响声停止,如图6所示。图6密码输入错误数码管显示全“F”发现密码输错时,按下“删除”键后,每按一次,当前显示“-”熄灭一位。当按下“全删除”键后,显示均熄灭。3结语实例通过将Proteus与Keil软件联合仿真,形象具体地向学生展示了从系统软硬件设计、软件设计到软硬件联调的整个实验过程。相对于传统单片机课程教学方式,这种方式不仅可以弥补实验仪器和元器件缺乏带来的不足,排除了原材料消耗和仪器损坏等因素,还有利于培养学生的创新能力和综合运用知识的能力,使学生受到更

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功