您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

如何仿真单片机的外围设备

时间:2007-1-20栏目:电子通信论文

摘要:单片机开发需要良好的软件开发环境支持,现国内外已经有若干软件仿真器支持51系列单片机,但外围设备的仿真仍是软件仿真的一个薄弱环节。本文针对目前较为流行的Keil公司的51单片机软件仿真器,介绍如何利用VC++编写动态链接库,仿真单片机外围设备,从而为软件仿真器提出一新思路。

    关键词:单片机 仿真 动态链接库

1 问题提出

目前,单片机因其诸多特点,在各行各业中得到了广泛的应用。单片机本身只有一个电子器件,只有和其它器件、设备有机地组合在一起,并配置适当的工作程序(软件)后,才能构成一个单片机的应用系统。因此,单片机的开发包括硬件和软件两个部分。单片机本身没有自开发功能,必须借助于开发工具。近年来,(范文先生网www.fwsir.com收集整理)随着个人计算机系统的不断普及,国内外推出了不少以PC机为基础的单片机开发系统;而软件模拟仿真器是一种新型的开发方法。这种方法是在PC机上,用软件来实现仿真,并配置一系列相关的服务程序,使用时,只要在PC机上运行该软件包,就可以对目标码程序进行调试。对于那些只是用到单片机内部资源的设计来说,可以在软件仿真器内完成仿真工作。但是,由于目前大多数厂商提供的产品还不能模拟单片机的外围设备(如液晶显示板),所以对于那些用到外部设备的设计来说,软件仿真器则显得力从心了。在这种情况下,笔者利用硬件软化的思想及面向对象、窗口等技术,将外围设备的功能在软件中实现。下面就针对Keil公司的51单片机软件仿真器,介绍如何利用VC++编写动态链接库,仿真单片机外围设备,从而弥补纯软件仿真的不足,最大限度地发挥软件仿真的威力。

2 方案构思

目前,Keil公司出品的51系列单片机软件仿真器已经成为国内流行的软件仿真器之一。Keil uVision2是一个标准的Windows应用程序,集成了C51编译器、A51汇编器、L51连接器、实时操作系统、项目管理器及调试器等,可以完成编辑、编译、链接、调试及仿真等整个开发流程,可以用IDE编译C或汇编源文件。

而单片机软件的设计总要和外部事件打交道,比如响应外部中断,检测某一引脚上输入信号电平的高低,完成A/D转换等;同时某些情况下,还要根据外部信号输出不同的控制信号。如果使用硬件仿真系统或在线调试器时,已有一个实实在在硬件环境,在调试时,可以利用目标系统提供给单片机各种信号的输入,以便测试单片机的实际运行情况。如果使用软件仿真器,没有任何硬件环境可以给出这些外部信号,所以外部信号的输入是面临的一个难题;此外单处常常需要和其它常用器件有机地组合在一起使用,如A/D芯片、液晶显示板等,如何仿真这些常用器件的功能,也是面临的一个难题。

一种解决的方法是,利用Keil提供的调试函数实现。调试函数可以模拟外部设备产生的给CPU的模拟和脉冲输入信号,还可以产生外部中断,周期性更新模拟输入,将串行数据送入片内串行口,解决了外部信号的输入问题。但dScope只支持特殊命令语句及一些特定的表达式,需要花费时间掌握调试命令;而且利用调试函数不能仿真外围设备的界面,不直观。

另一种解决的方法是,利用Keil提供的接口AGSI(Advanced Generic Simulator Interface),用VC++编写动态链接库,仿真单片机外围设备,从而解决外部信号的输入问题及界面问题。Keil提供的SDK是相当于Keil UV2仿真环境的一个插件,以DLL的形式提供在纯软件仿真模式下,仿真A/D芯片、仿真液晶显示板及键盘输入等功能,在PC上就可以开发,调试大部分与界面、功能相关的程序,而不须烧片子来调试、开发,效率将大在提高,成本将大大降低。

另一方面,与单片机配合使用的接口芯片比较固定,接法相对也比较固定,由用户自主开发DLL,模块可以共享,使仿真外围芯片和器件的DLL不断丰富。利用VC++的强大功能以及面向对象,窗口等技术,可以扩展外围设备的仿真功能,实现灵活、通用的面板功能,解决界面不直观的问题。

图3 仿真实现

3 实例分析

下面以传送带控制系统为例,介绍如何编写DLL实时仿真单片机的外围设备,其方法具有普遍意义。

3.1 传送带控制系统的组成原理

图1表示了传送带控制系统的示意图。(漏头中是小球。)

①料箱随传送带按运动方向向前移动。

②当料箱移动到漏斗下方进,传感器B反应,传送带停止运行,漏头落料门打开,单

[1] [2] 下一页

下页更精彩:1 2 3 4 下一页

★相关文章: