当前位置:首页 > 单片机 > 单片机
[导读]单片机开发需要良好的软件开发环境支持,现国内外已经有若干软件仿真器支持51系列单片机,但外围设备的仿真仍是软件仿真的一个薄弱环节。

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

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

1 问题提出

目前,单片机因其诸多特点,在各行各业中得到了广泛的应用。单片机本身只有一个电子器件,只有和其它器件、设备有机地组合在一起,并配置适当的工作程序(软件)后,才能构成一个单片机的应用系统。因此,单片机的开发包括硬件和软件两个部分。单片机本身没有自开发功能,必须借助于开发工具。近年来,随着个人计算机系统的不断普及,国内外推出了不少以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反应,传送带停止运行,漏头落料门打开,单片机对落下的小球计数(通过传感器A计数)。

③当落下的小球数等于装箱数目时,关闭漏斗门,传送带移动。

图4 Debug页

    3.2 仿真的具体实现

图2是单片机的硬件电路图。此例中需要仿真的外围设备有:键盘(外供用户输入装箱的小球数目)、传感器(判断料箱是否移动到漏斗下方以及计数)和其它(如传送带)。

具体实现如下:

首先是在调试函数中设置断点,以便查看存储器内容以及控制目标文件与DLL库的执行顺序。其次是DLL的编写:

①加入AGSI.h(其中定义了外部仿真的接口及函数的原型)。

②写初始代码。包括创建AGSI,定义菜单及对话框,定义SFR、VTR,定义中断复位。

③建立用户界面。加入按钮(代表键盘)、指示灯图片(代表传感器)等。

④编写仿真代码,如图3所示。

⑤接口。

*VC中打开菜单Project->Setting,选取Custom Builder页,将编制好的DLL文件拷贝到Keil公司指定的安装路径..下,然后配置环境。

*keil中打开菜单project->Options for Target,选取Debug页,按图4输入。

    ⑥仿真结果。启动dScope,将自动载入8051仿真动态链接库S8051.DLL及自行设计的外部设备的仿真动态链接库KEY.DLL。用户输入程序,编译成功后进入调试状态,打开菜单Peripheral,会多出一个Interface。通过这个界面可以完成该软件的设计,而不需要外围设备。最终界面如图5所示。

4 小结

本文介绍了利用DLL仿真单片机外围设备的方法,其设计思想具一定的普遍性。软件仿真在硬件诊断、实时仿真等方面存在不足;但在教学研究中或没有硬件情况下,应用前景广泛,对于单片机教学以及程序开发具有一定的指导意义。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

这款全新的中端MCU系列为设计人员提供了更高水平的安全性和灵活性

关键字: 嵌入式 单片机

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器
关闭
关闭