基于89C51的单片机虚拟仿真平台设计

时间:2022-05-30 10:11:05

基于89C51的单片机虚拟仿真平台设计

摘要:虚拟仿真平台以89C51芯片为核心,运用仿真软件和虚拟化技术,通过对单片机的运行过程和运行状态进行模拟,在计算机上用软件实现对硬件设备的仿真。本文以各功能模块的实现方法为支撑,以仿真平台必须的技术为手段,完成了对仿真平台软件和硬件的设计。

Abstract: Virtual simulation platform takes 89C51 chip as the core, uses simulation software and virtualization technology, and realizes simulation to hardware equipment with software on the computer through simulating the operation process and operation state of SCM. In this paper, supported by implementation methods of functional modules, and taken by the means that simulation platform must be owned, and the design of virtual simulation platform was implemented.

关键词:89C51;仿真平台;存储器;中断;示波器

Key words: 89C51 chip;simulation platform;memorizer;interrupt;oscilloscope

中图分类号:TP3文献标识码:A 文章编号:1006-4311(2011)24-0168-02

0引言

随着电子技术的迅猛发展,单片机技术的应用渗透到各个领域,在实际中从方案设计到技术应用,所涉及的实验实践环节多,硬件设备投入大,且实际方案时有受限,所以各类仿真竞相问世。仿真技术是以与实际应用相似原理、系统技术、信息技术以及仿真应用领域的有关专业技术为基础,以计算机系统及仿真器为工具,利用模型对系统进行研究的综合性的技术。

89C51是目前比较新的一款单片机,其功能更强,除保留了51系列的功能外,内部有ROM,也有中断源,还增加了可随时擦写程序,为用户提供了更为方便的使用环境。在计算机上以89C51作为核心器件创建虚拟操作平台,此平台是可视化的,各种实验仪器和设备都由此平台中的各个可视化仿真物体代表,开展各种复杂的实验或是测试时可以对这些虚拟的仪器或设备进行操作,达到与真实实验环境相一致的要求和目的。

1虚拟仿真平台各模块的实现

1.1 总体设计构架传统的单片机实验系统是由硬件实验台支撑的,而单片机虚拟仿真平台则是将硬件实验台虚拟化设计,即重新设计以前的调试工具像汇编程序等,用软件形式代替硬件平台。设计过程采取封闭式方式,使应用环境拥有更高的可靠性和稳定性。这样一来,在虚拟平台中获得的数据更加接近硬件条件下的实验结果。

从图1仿真平台总体框架图可知,89C51和存储器构成了虚拟的CPU,负责执行汇编语句,其他所有模块都直接或间接地接受其控制。在实际操作中作为虚拟存储空间的通信桥模块,由三部分构成,分别为输入桥、输出桥和芯片桥,它是接口芯片数据和外设间数据进行交换的场所。输入桥由开关与芯片连接构成;LED或者显示器连接到芯片,形成输出桥;芯片桥则是芯片与芯片连接形成的。

1.2 仿真平台编译原理在编译汇编语言时,仿真平台是对真实的CPU的模拟。CPU执行汇编程序的实质是对执行函数的运行,其工作过程:首先启动一个新的mainthread,运用qrun函数对取出的线程源程序逐行的执行。Qrun函数从源程序的第一行开始执行,对这一行取得的数据进行预处理,去掉注释和标号,然后再按照汇编语言的固定格式取得指令名称和操作数,每一个指令名称都有一个与之相对应的执行函数,这些函数负责完成对应指令的功能,例如:MOV函数和MOV指令是对应的,此函数负责把第二个参数的值放到第一个参数里面,程序就这样逐行执行。

与真实试验的指针不同,虚拟的编译系统的内存地址由行号代替。一般,程序按照执行一行指针加一行的方式运行,即指针跳到下一行继续执行。当然也有例外,出现跳转指令或类跳转指令时,就要到在编译时间里的数据库中找出跳转的目的标号,指针的IP值即寻找获得的行号,然后程序就要跳到对应的航继续执行运行程序。

1.3 各硬件模块设计

1.3.1 虚拟实验操作台虚拟操作台包含了89C51的四个并行I/O端口(P0口~P3口),8259A的八条中断请求输入线(IR0~IR7),8255的三个8位I/O数据口(PA口、PB口、PC口);以及显示、外设(LED、开关)部分。

模拟八段显示器形成显示部分。同时在程序中分配一个中10H的断号,功能0(AH=0)表示对显示屏的操作(例如,AL=1表示清屏)。功能1(AH=1)表示将AL中的数据写入显示器。

外设部分,LED通过Label实现,它的熄灭利用backcolor的变换实现;用TrackBar实现开关,开关可以经过变形来获得,滑块处于最上端表示开,反之表示关。

1.3.2 可编程I/O模块(8255)在虚拟操作台上有A口、B口、C口的接线孔分别对应8255的三个I/O数据口,即PA口、PB口、PC口,模拟的8255由相应的执行函数和寄存器组成。其执行函数只有在OUT、IN两种指令中执行。例如:当执行OUT指令时,执行函数将AL中的值取出放到相应的端口寄存器中,当执行IN指令时,执行函数将对应端口寄存器的值放入到AL中。故8255的执行函数只负责对其对应的寄存器进行操作。

1.3.3 中断控制模块(8259A)中断控制模块8259A在编程的时候,须将中断服务子程序入口地址放入中断向量表。

虚拟环境中的行号代替地址,汇编指令获得的每一个子程序的地址都是取得的该子程序的行号,即使进行中断时,也是对该行号的程序的执行。定义8259A的管理工作有状态机负责,使得硬件得到更真实的模拟。状态机的功能是:识别写入端口的是否为初始化数据,并可确定下一步应该写入的内容;同时还记录8259A的一些工作状态,比如:优先级方式、中断结束方式等等。

用堆栈来处理中断嵌套。首先定义一个堆栈stack(实际上是由一个数组构成的存储区)负责在执行中断前将IP入栈,即行号入栈。每当程序执行到RETI指令的时候就从stack中取出一个行号放入IP,可称为出栈。这样就保证了中断程序结束后顺利回到断点处继续执行。

1.3.4 示波器由于示波器所接收的数据必须是模拟量,而单片机处理的数据则为数字量,所以数据在送入示波器之前要将进行D/A转换。仿真系统内部模拟了0832(数模转换芯片)。在具体的实现过程中,为示波器建立了一个线程(thread)runshiboqi,用threadstatus 值(True和Flase)控制线程的运行。shiboqiClass.status=True时,线程运行,启动draw函数绘制图形;反之则不运行。

1.3.5 存储器虚拟系统中,存储器也是用来存储数据和程序代码的。实现方法是:虚拟内存由一个一维数组模拟。内存的地址用数组的下标表示,对显示和修改内存则设计一个专门的窗口负责。比如,在运行一个程序的时候,可以根据需要将数据预先通过此窗口输入内存,或者运行程序的时候将结果放入某个内存单元中,程序运行完毕后可以通过此窗口查看结果,必要时还可在此修改数据。

2仿真平台必要的技术

2.1 汇编程序编译对于一个模拟硬件的软件来说,将汇编语言编译成二进制代码去控制完成相应的功能,的确有些复杂。如果用函数来模拟汇编指令,即每一个汇编指令对应一个函数,如:MOV函数完成MOV指令的功能,实现如下:

Public Sub MOV(ByValREF1 As String, ByValREF2AsString)

Dim temp As Integer

temp=ReadData(REF2)

Call WriteData(REF1, temp)

End Sub

其中ReadData和WriteData均为自定义的通用函数,分别负责取出参数表示的值和将立即数temp写入存储区。

2.2 DirectX技术在仿真平台启动的时候可以利用Microsoft公司提供的DirectX,以直接操作显示器、鼠标、键盘、声卡、显卡等硬件设备。实现如下:

Public DirectX As New DirectX7

Public DDraw As DirectDraw7

DDraw=DirectX.DirectDataCreate("")

Call DDraw.SetDisplayMode(800,600,32,0,CONST_DDSDMFLAGS.DDSDM_DEFAULT)

2.3 通信桥通信桥决定了芯片和外设间的通信,输入桥负责接收外设(主要是开关)送过来的数据,并将数据传递给对应的芯片;输出桥负责接收芯片送过来的数据,并将数据传递给对应的外设(主要是LED);芯片桥负责在芯片间传递数据。其基本数据结构为:

Public Structure BridgeData

Public chipvalue As Integer ′芯片接线孔的序号

Public devicevalue As Integer′外设接线孔的序号

Public pchip As Integer′芯片接线孔的位置,便于连线

Public pdevice As Integer′外设接线孔的位置

当在接线板上接线的时候,点击某个接线孔后,根据孔的编号确定它的类型(芯片、输出外设、输入外设),然后根据两个接线孔的类型加入不同的通信桥。

2.4 多线程以及线程同步技术当出现多个线程同时对一个数据处理的情况时,比如:8255模块通过通信桥模块提供的接口数据的同时,通信桥模块把从外设接收到的数据写入该接口。这时可以通过提供的SyncLock语句来实现同步锁,也可以通过设置一个互斥变量来保证线程对临界资源的互斥访问。

3总结

本虚拟仿真平台借助89C51芯片,用仿真软件替代专用硬件实验设备,无需任何单片机硬件投资,便可以在计算机上完成单片机的实验,实现对CPU、内存、可编程中断控制器8259A、可编程接口芯片8255A、D/A转换器0832、示波器、LED、开关、显示器等硬件设备的仿真,并且通过必要的技术手段,获得与实际相同的实验效果,与实际设备相比,具有功能更全、成本更低廉、操作更方便的优势。

参考文献:

[1]麦中凡等编程入门[M].北京:北京航空航天大学出版社,2003.

[2]封小钰,余雄.构建单片机虚拟实验仿真平台[J].计算机与信息技术, 2008,(04).

[3]许高建,古继成,高宁.基于技术的微机接口实验平台的实现[J].苏州大学学报(工科版),2006,(03).

[4]孙燕莲,韩巍,文福安.构建仿真系统关键技术的研究[J].实验技术与管理,2005,22,(7):68-71.

上一篇:陕西省普通高校健美操运动队课余训练现状与 下一篇:高职院校师资队伍建设的探索与实践