Proteus仿真软件在单片机实践教学中的应用

时间:2022-10-26 01:13:23

Proteus仿真软件在单片机实践教学中的应用

摘 要: 针对单片机实践教学中的不足,以单片机演奏“草原上升起不落的太阳”乐曲为例,将Proteus仿真软件作为一种辅助手段引入到教学中。采用软硬件协同调试和仿真图表,能有效解决单片机理论知识抽象难懂、理解困难等问题,借助虚拟仪器等测试手段可以提高单片机实践教学效果,激发学生的学习兴趣。

关键词: Proteus; 实践教学; 辅助教学手段; Keil C

中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2014)14?0084?04

Application of Proteus simulation software in MCU practical teaching

WANG Chao, YANG Lian?hong

(Department of Physics, Changji University, Changji 831100, China)

Abstract: By taking an example that “Unsetting Sun Rises on the Grassland” was performed by MCU, the Proteus simulation software as an auxiliary teaching means was introduced into teaching to solve the deficiency in the practical teaching of MCU. The application of hardware and software synergy debugging and emulation chart can effectively solve some problems, such as MCU knowledge abstract and difficult understanding. The learning efficiency of the students can be improved and ttheir learning interest can be stimulated in MCU practical teaching by the aid of virtual instruments and other testing means.

Keywords: Proteus; practical teaching; supplementary teaching means; Keil C

0 引 言

目前,多数高校单片机原理课程基本采用的是先讲理论后实验的教学方式,其实验主要采用的是实验箱来完成,实验箱提供的是配置好的实验电路和实验程序,实验过程中学生只需按照实验指导书要求连线和输入程序,这种实验完成的多数是演示性和验证性的实验,由于单个实验项目的学时有限,加上受到客观条件的限制,设备、场地、时间等诸多因素制约了实验的数量和质量,难以有过多的设计和创新,实验教学多流于形式,学生积极性不高。

利用仿真软件Proteus和第三方编程调试软件:比如Keil C51等,在没有硬件的环境下建立虚拟仿真平台,为单片机实践教学提供一个方便灵活的环境,可以随时更换仿真元器件,修改电路和程序极为方便,即丰富了实验内容,又能节约实验费用,而且仿真成功的电路可以直接在产品开发中使用。

1 Proteus仿真软件

英国Labcenter公司开发的Proteus仿真软件,实现了混合式的SPICE电路仿真,它将虚拟仪器、高级图表应用、单片机仿真、第三方程序开发与调试环境有机结合,在搭建硬件模型之前即可在PC上完成原理图设计、电路分析与仿真及单片机程序实时仿真、测试及验证[1?3]。

Proteus仿真软件的调试方式对比[4?7],如表1所示。

表1 仿真软件调试方式对比

2 仿真举例

以单片机控制歌曲“草原上升起不落的太阳”播放为例,详细介绍歌曲演奏原理和仿真调试过程

2.1 单片机实现歌曲演奏的原理

单片机演奏音乐基本都是单音频率,不包含相应幅度的谐波频率,也就是说不能像电子琴那样能演奏出各种音色的声音,音调和节拍是单片机奏乐的两个重要概念,音调表示了一个音符唱多高的频率,节拍表示一个音符唱多长的时间[8]。

若用程序控制单片机的某个I/O口,使其输出一定频率的矩形波,经放大电路驱动无源蜂鸣器即可发出一定频率的声音。要产生音频脉冲,只要计算出某一音频的周期,将此周期除以2即为半周期的时间,利用定时器实现定时,定时到后将脉冲倒相后从I/O口输出,重复操作。

2.1.1 T值计算方法

51单片机内部有两个定时/计数器,T0和T1,定时/计数器工作于模式1,最大计数次数为65 536,改变计数初值T,就可在I/O引脚得到不同频率的脉冲。

利用T=65 536-Fi÷2÷Fr 就可以计算出给定频率下的定时器计数初值,其中,Fi为单片机晶振频率,一般取12 MHz,Fr为要产生的频率。

2.1.2 不同音符T值的求取

钢琴键盘的大字组音调从低到高依次是C,#C,D,#D,E,F,#F,G,#G,A,#A,B共12个半音,每个等半音的音程是[212=1.059 363 1],即相邻两个音调的相同音符的频率关系是:音高的是音低的[212]倍[9]。这个规律适合所有的音调,比如[#C]调比C调高1位,各音符频率比C调对应音符频率后推1位,E调音符频率比C调对应的音符向后顺推4位,根据表2就可以顺利推出其他音调对应的频率,可以根据所选的曲目构成自己的T值表。

2.1.3 确定节拍

节拍表示一个音符唱多长时间,在一张乐谱中,经常会有这样的表达,1=C([44]),1=E([34])……,这里C,E表示乐谱的曲调,4/4表示以四分音符为节拍,每小节有四拍,一般情况下,一拍的时间约为[10]400~500 ms。假设[14]拍为1DELAY,则1拍为4个DELAY,只要求得[14]拍的DELAY,其余的节拍就是它的倍数,在编程中,倍数就是延时循环的次数,如表3所示。

2.2 演奏歌曲的T值及节拍确定

2.2.1 T值求取

草原上升起不落的太阳,为1=A(2/4),即A调,以四分音符为节拍,每小节有二拍。该歌曲为A调,要在C调对应音符中向后顺推9位确定歌曲的曲调,比如,本歌曲中低音6的T值可在C调表中低音6向后顺推9位,即为64 633(FC79H),其余音符以此类推,按照低音、中音和高音的顺序可以列出T值表,如表4所示。

表2 C调各音符频率与T值对照表

表3 节拍与延时时间

表4 T值表

2.2.2 确定节拍

根据歌谱确定音符的节拍。本例是2/4拍,由表3知道,该调1/4拍的时间是125 ms,因此每个音符发音时间的长短是125 ms的整数倍,但是采用125 ms听起来歌曲与传统唱法相比显得快,所以选为187 ms,延长符“”和“?”一般要与前面的发音一致,根据简谱码和音符的节拍确定发音的计数值放在程序的TABLE中。简谱码(音符)为高4位,节拍数为低4位。本例中第一个音符“低音6”占一拍,用34H表示,3表示低音“6”在T值表中的顺序,4代表1拍,00表示歌曲结束。节拍与节拍码对照表如表5所示。

表5 节拍与节拍码对照表

建立的简谱码表如下所示:

TABLE: DB 34H,32H

DB 32H,56H,62H,64H,53H,41H,38H,52H

DB 52H,43H,51H,64H,72H

DB 62H,88H,88H,64H,42H,52H,66H,82H,64H,53H

DB 41H,16H,22H,34H,26H,32H,54H ,66H

DB 42H,38H,38H

DB 00

2.3 单片机仿真

2.3.1 绘制原理图

打开Proteus软件,在文件/新建设计/选择模板下绘制如图1所示的电路原理图。

图1 电路原理图

2.3.2 Keil C与Proteus联合调试

Keil C和Proteus联调需要安装vdmagdi.exe链接文件,之后需要对两者分别设置:

Proteus设置如下:单击“调试”菜单,选择“使用远程调试监控”,调出编辑AT89C51属性对话框,将程序文件设置为空。

Keil C设置如下:打开工程文件,选中“Target 1”,单击右键选择“Options for Target ‘Target 1’”,在Debug选项卡下选择“Proteus VSM Simulator”即可。

打开Keil C软件,将工程全部重新编译,在程序没有错误的情况下,编译完成后会出现如图2所示的调试界面。

图2 Keil C与Proteus联调界面

进入调试状态后的界面与编辑状态相比有明显的变化,“Debug”菜单项中原来不能使用的命令现在可以使用了,编译通过后,不一定程序的功能就正确,需要进一步调试程序,常用的调试程序有单步执行、过程单步执行、单步执行到函数外、运行到光标所在的行和全速执行。执行这些调试命令可以有三种方式:工具条、“Debug”和快捷键,根据自己需要选择合适的调试方式。

另外,在Keil C与Proteus联调中,Keil软件和Proteus软件均提供了一些窗口,用于提供给用户输入和观察信息用,Keil软件中主要包括观察窗口、寄存器窗口、存储器窗口、反汇编窗口和串行窗口等。Proteus软件中主要包括寄存窗口、特殊寄存器窗口和内部存储器窗口等,用户根据需要使用这些窗口,如图3所示。

图3 Keil C与Proteus联调窗口

2.3.3 Proteus仿真图表的使用

这种联调虽然能直观地显示电路当前的仿真情况,但是这些仿真状态会随着仿真结束也就消失了,不能满足动态过程分析的要求,此时可以使用基于图表的仿真,这种仿真随着电路参数的修改,电路中的各点波形将重新生成,并以图表的形式保留在电路图中,提供以后的分析或者打印。第一个音符低音6所对应的T值为64 860,对应音符的频率为740 Hz,周期为1.35 ms,在P3.7管脚处放一电压探针,添加图表模式/添加图线/最大化窗口,就可观察到演奏音乐的动态波形,放大0 ms处波形,观察到第一个音符对应的矩形波的其中一个周期的起始周期为8.280 ms,结束周期的周期为9.627 ms,与理论计算的周期1.35 ms一致。动态波形变化曲线如图4所示。

图4 动态波形变化曲线

3 结 语

以“草原上升起不落的太阳”为例介绍了在虚拟环境下联合Keil C51与Proteus进行单片机仿真学习的一种方法。采用该方法可以把传统的硬件设计、调试、仿真集成在一个软件环境下,能够做到边设计、边实验由于采用的是虚拟元件和测量器件,实验成本低,速度快,修改调试也非常方便,突破了实验箱教学中的实验内容固定不变的局限。另外,借助Proteus的仿真图表可观察电路动态波形的变化情况,可以分析一些隐含性的错误,提高学生分析问题的能力。

参考文献

[1] 杜树春.基于Proteus和KeilC51的单片机设计与仿真[M].北京:电子工业出版社,2012.

[2] 张新,陈跃琴.51单片机应用开发25例[M].北京:电子工业出版社,2013.

[3] 彭伟.单片机C语言程序设计实训100例[M].2版.北京:电子工业出版社,2012.

[4] 刘喜双,姚健.单片机课程实践教学改革探索[J].教育探索,2013(8):31?32.

[5] 王娟.Proteus软件在单片机专题实训中的应用[J].实验室研究与探索,2012,31(8):72?75.

[6] 董增文,徐健宁,刘国平.面向研究性学习的单片机虚拟实验室研究与开发[J].实验技术与管理,2013,30(3):86?88.

[7] 周冠玲,冯占英,李战.“单片机原理及应用”课程教学改革的探讨[J].中国电化教育,2012(6):105?107.

[8] 胡继胜.单片机音乐编程设计与仿真[J].微计算机信息,2010,26(35):95?97.

[9] 于永泉.单片机唱歌任我行[J].电子元器件应用,2011(9):36?39.

[10] 楼俊君.电子音乐播放器的设计[J].福建电脑,2013(5):126?128.

上一篇:绵延二十一日的宴 下一篇:人身险产品性价比是王道