基于KEIL-AGSI接口的单片机虚拟实验室构建之软件开发论文

所属栏目:软件开发论文 发布日期:2012-03-24 15:13 热度:

  摘要:文章软件开发论文提出了一种基于uVisionKEIL的AGSI接口,利用VC++编写动态链接库,模拟单片机外围设备,以实现单片机虚拟实验室的建设方案,从而实验、实训课题在虚拟平台中实现,有效解决了资金和设备维护问题,并增强了学生自主学习单片机的便利性和时效性。
  关键词:AGSI;仿真实验室;单片机;动态链接库
  1.论文引言
  目前,单片机因其功能强且可自定义,价格低,可靠性高,抗干扰能力强,使用方便灵活,通用性强,在工控、智能仪表、通信系统、信号处理、智能家电等领域都得到了广泛的应用,学习者逐年增加。作者利用计算机软件的仿真技术,在KEIL的AGSI接口基础上,开发DLL库,构建单片机虚拟实验室,针对高职院校单片机教学,成功的解决了资金的限制,单片机设备更新快,学生自主学习时硬件缺乏等许多实际的问题和困难。
  2.解决方案
  为了解决传统单片机实验室存在的问题,并为学生自主学习提供更大的便利。基于AGSI接口利用VC++自行开发动态链接库,采用纯软件的方法仿真按钮、LED、数码管、LCD、信号发生器以及其他自定义外设,无缝链接至uVision,实现方便的外设软件仿真和直观的界面问题。
  2.1仿真库的开发。下面将以学生学习时常用的跑马灯实训题目为例,开发直观的虚拟外设,介绍如何利用AGSI接口开发动态链接库。
  (1)启动MSVisualC++,利用MFCAppWizard(dll)新建Experiment工程。注意使用MFC的静态链接,否则无法正常工作。
  (2)在Experiment工程中添加头文件AGSI.h,增加AGSI的接口函数原型,在Experiment.h中添加SFR(特殊功能寄存器)、VTR(虚拟寄存器)的定义和接口函数原型。
  (3)在Experiment.cpp文件中添加外设初始化代码,包括AGSI的建立(GetFunctionPointers),外设菜单入口及其对应对话框的声明(DefineAllMenuEntries),和SFR(DefineAllSFR),VTR(DefineAllVTREG),监视器(DefineAllWatches)和中断(DefineAllInterrupts)的声明。编写外设复位代码(ResetPripheral),上述的所有函数都通过AgsiEntry()函数调用,该函数需要在DLL中导出,定义如下:extern"C"DWORDAGSIEXPORTAgsiEntry(DWORD,void*)。
  (4)在工程中添加一个非模态对话框,在对话框定义时产生的源文件中添加PeriDisp、PeriUpdate、PeriKill三个函数,分别用来显示对话框,更新显示内容和关闭对话框。同时添加两个宏用于菜单定义AGSIMENU和对话框属性定义AGSIDLGD。
  (5)在对话框类中添加Update()函数,用于更新显示,该函数在外设状态改变时被自动调用便于及时反映外设状态。
  (6)在Update()函数,编写人机界面,利用Agsi.ReadSFR()函数读取P1口的状态,绘制8个LED灯,用于仿真P1口状态。
  (7)添加4个按钮,用于仿真P3.4~P3.7四个管脚的按键动作。编写按钮的处理函数如下:利用Agsi.WriteSFR(P3,0x00,0x10)对P3.4口进行清“0”操作,然后调用AGSI的CreateTimer函数将回调函数BtnP34与时间进行关联 Timer4=Agsi.CreateTimer(BtnP34),最后利用SetTimer函数定时100ms,Agsi.SetTimer(Timer4,1000),这样回调函数BtnP34将在1S以后被调用,在BtnP34函数中调用WriterSFR对P3.4口进行置“1”操作,模拟按键P3.4的动作。其他P3.5等三个管脚的动作仿照P3.4管脚实现,P3.4按键动作时序与VC++程序间关系如图1所示。
  (8)编译链接生成动态链接库Experiment.dll。1.png
  图1P3.4仿真按键时序的实现方法
  2.2仿真库的使用
  (1)将编译生成的Experiment.dll文件拷贝到KEIL程序所在的目录C51BIN文件夹中。
  (2)在uVision3的OptionsforTarget的Debug选项页中,选择UseSimulator,在DialogDLL一栏的Parameter项中写入-dExperimen,为后续进行仿真单片机程序做准备。
  (3)编写一个跑马灯的单片机测试程序,P1.0~P1.7所接8个LED灯,循环点亮,间隔周期为1S,按键P3.4控制跑马灯的启停。编译通过后,启动DebugSession后,IDE将自动装载8051的仿真动态链接库S8051.DLL和我们所设计的仿真动态链接库Experiment.DLL。在Peripherals的下拉菜单中可以看到“单片机虚拟实验平台1.0”,点击后可进入实验平台的选择界面,点击“实验1”按钮可进入图2所示跑马灯仿真界面。
  (4)开始仿真时,点击P3.4按键后,8个LED灯以1S为周期循环左移点亮,再次点击P3.4按键后,LED灯停止循环,停留在当前状态。图3为LED的仿真界面。
  上述通过动态链接库的编写,实现了简单跑马灯电路的仿真工作,为高职学生学习单片机提供了直观形象的仿真界面,并为自主学习单片机,调试程序工作时提供了很大的便利。
  3.论文结论
  本文介绍的利用AGSI接口编写动态链接库,仿真单片机外围设备的方法,其设计思想具有一定的普遍性,不光可以仿真51系列单片机的内部资源,也可以仿真其外设设备,而且也可以仿真其他KEIL软件支持的单片机。
  论文参考文献
  [1]鲍小南.单片微型计算机原理及应用.浙江大学出版社,2007
  

文章标题:基于KEIL-AGSI接口的单片机虚拟实验室构建之软件开发论文

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/ruanjiankaifa/11542.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3