龙8手机游戏官网:如何仿真单片机的外围设备
来源:龙8手机版网页登录官网 作者:龙8官方网手机2024-09-08 08:15:31目前,单片机因其诸多特点,在各行各业中得到了广泛的应用。单片机本身只有一个电子器件,只有和器件、设备有机地组合在一起,并配置适当的工作程序(软件)后,才能构成一个单片机的应用系统。因此,单片机的开发包括硬件和软件两个部分。单片机本身没有自开发功能,必须借助于开发工具。近年来,随着个人计算机系统的不断普及,国内外推出了不少以PC机为基础的单片机开发系统;而软件模拟仿真器是一种新型的开发方法。这种方法是在PC机上,用软件来实现仿真,并配置一系列相关的服务程序,使用时,只要在PC机上运行该软件包,就可以对目标码程序进行调试。对于那些只是用到单片机内部资源的设计来说,可以在软件仿真器内完成仿真工作。但是,由于目前大多数厂商提供的产品还不能模拟单片机的外围设备(如液晶显示板),所以对于那些用到外部设备的设计来说,软件仿真器则显得力从心了。在这种情况下,笔者利用硬件软化的思想及面向对象、窗口等技术,将外围设备的功能在软件中实现。下面就针对Keil公司的51单片机软件仿真器,介绍如何利用VC++编写
目前,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上就可以开发,调试大部分与界面、功能相关的程序,而不须烧片子来调试、开发,效率将大在提高,成本将大大降低。
3.2 仿线是单片机的硬件电路图。此例中需要仿真的外围设备有:键盘(外供用户输入装箱的小球数目)、传感器(判断料箱是否移动到漏斗下方以及计数)和(如传送带)。
首先是在调试函数中设置断点,以便查看存储器内容以及控制目标文件与DLL库的执行顺序。其次是DLL的编写:
本文介绍了利用DLL仿真单片机外围设备的方法,其设计思想具一定的普遍性。软件仿真在硬件诊断、实时仿真等方面存在不足;但在教学研究中或没有硬件情况下,应用前景广泛,对于单片机教学以及程序开发具有一定的指导意义。