单片机仿真器
目
录
1 原理
单片机在体系结构上与PC机是完全相同的,也包括处理器,输入输出接口,存储器等基本单元,因而与PC机等设备的软件结构也是类似的。因而单片机在软件开发的过程中也需要对软件进行调试,观察其中间结果,排除软件中存在的问题。但是由于单片机的应用场合问题,其不具备标准的输入输出装置,受存储空间限制,也难以容纳用于调试程序的专用软件,因此要对单片机软件进行调试,就必须使用单片机仿真器。单片机仿真器具有基本的输入输出装置,具备支持程序调试的软件,使得单片机开发人员可以通过单片机仿真器输入和修改程序,观察程序运行结果与中间值,同时对与单片机配套的硬件进行检测与观察,可以大大提高单片机的编程效率和效果。
2 发展
早的单片机仿真器是一套独立装置,具有专用的键盘和显示器,用于输入程序并显示运行结果;随着PC机的普及,新一代的仿真器大多数都是利用PC机作为标准的输入输出装置,而仿真器本身成为微机和目标系统之间的接口而已,仿真方式也从初的机器码发展到汇编语言、C语言仿真,仿真环境也与PC机上的语言编程与调试环境非常类似了。
目前,随着单片机的小型化,贴片化和具有ISP,IAP等功能的单片机的广泛应用,传统单片机仿真器的应用范围也有所缩小。而软件单片机仿真器(即单片机仿真程序)的应用逐渐广泛,单片机仿真程序即在个人计算机上运行的特殊程序,可在一定程度上模拟单片机运行的硬件环境,并在该环境下运行单片机目标程序,并可对目标程序进行调试、断点、观察变量等操作,可大大提升单片机系统的调试效率。纯软件单片机仿真器往往与硬件设计程序集成在一起发布,使得开发者可以对单片机硬件与软件进行同步开发。
MON-51是一个支持keil C51设计软件的软件断点仿真器。
???? 一、主要功能和特性:
1.可以仿真63K程序空间,接近64K的16位地址空间.
2.可以仿真64Kxdata空间,全部64K的16位地址空间.
3.可以真实仿真全部32条IO脚.
4.完全兼容keilC51 UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作.
5.可以使用C51语言或者ASM汇编语言进行调试
6.可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值.
7.可选择使用用户晶振,支持0-40MHZ晶振频率。
8.片上带有768字节的xdata,您可以在仿真时选择使用他们,进行xdata的仿真.
9.可以仿真双DPTR指针.
10.可以仿真去除ALE信号输出.
11.自适应300-38400bps的所有波特率通讯.
12.体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地 减少运行中的干扰,避免仿真时出现莫名其妙的故障.
13.仿真插针采用镀金插针,可以有效地防止日久生锈,附赠园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座.
14.仿真时监控和用户代码分离,不可能产生不能仿真的软故障.
15 RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。
????? 二、功能限制:
仿真器占用单片机串口及定时器2,与Keil C(PC)通讯,故不支持串口及定时器2的仿真功能。 全速运行时单片机串口及定时器2可供用户使用。
4 仿真器使用方法
1. 将仿真器插入需仿真的用户板的CPU插座中,仿真器由用户板供电;
2. 将仿真器的串行电缆和PC机接好,打开用户板电源;
3. 通过Keil C 的IDE开发仿真环境UV2 下载用户程序进行仿真、调试。
4. 仿真器硬件说明:
a.使用用户板的晶振
仿真器晶振旁有两组跳线用来切换内部晶振和用户板晶振,当两个短路块位于仿真器晶振一侧时,默认使用仿真板上的晶振(11.0592MHz), 当两个短路块位于电容一侧时,使用用户板的晶振。
b.为便于调试带看门狗的用户板,仿真器的复位端未与用户板复位端相连;故仿真器的复位按 钮只复位仿真器,不复位用户板;若要复位用户板,请使用用户板复位按钮
?
?
1. 先打开一个工程文件。如果你没有工程文件就要先建立一个。这里拿 keil c51提供的 hello.prj为例子说明:
用鼠标菜单的project,选择open project。如图:
2. 选择keil\c51\examples\hello\hello,打开,如图:
3.选择菜单的Project->Option for Target 'Simulator',如图:
3.1选择C51栏的设置如图: 删掉define:里的MONITOR51这几个字母,如果define栏是空的,可以跳过这一步:
删掉MONTOR51之后的设置如下图,不要确定,因为还要进行其他设置:
附注:3.1的步骤是调试keil提供的这个Hello工程才需要做的,对你自己建立的工程不需要这个设 置,你自己的工程可以跳过这步,直接进行下一个设置.在这里用红色来写这个说明,是需要引起用 户注意。
4.选择debug栏的设置项目: Use: Keil Monitor-51 Driver :选择这一项 Load Application at Start:选择这项之后,keil才会自动装载你的程序代码。Go till main:调试C语言程序时可以选择这一项,PC会自动运行到main程序处
上图的Settings,打开新的窗口: Port:设置你的串口号,为仿真器的串口电缆线所连接的串口。 Baudrate:设置为38400,仿真器固定使用38400bps跟keil C通讯。 Serial Interrupt: Cache Options: 这两项可以选也可以不选;
后ok和确定关闭你的设置。
5. 编译你的程序,选择Project -> Rebuild all target files
6. 编译完毕之后,选择Debug->Start/Stop Debug Session,就进入仿真了
7. 装载代码之后,在左下角显示如图:
Connected to Monitor-51 V3.4 表示连接到仿真器,仿真器的版本号为3.4, Load 'C:\\Keil\\C51\EXAMPLES\\HELLO\\HELLO' 表示代码装载成功。
8.其他的调试方法跟软件仿真一样,有单步,断点,全速运行等各种调试方法。
6 单片机的应用领域
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途
7 相关资料
??? 仿真器的作用
虚拟软件仿真,不能看到驱动硬件的实际效果。
.?? 仿真器接电脑,仿真器再通过仿真头接目标板,然后程序就能在线仿真,连接好了以后,打开51开发软件平台KEIL,通过在KEIL中修改你的程序中不满意的部分,仿真器会在软件平台KEIL的控制下时时联动。然后通过单步运行程序或者让程序运行到的程序行停止,等等调试方法调试你的程序,直到你满意为止,全部过程硬件都会和程序同步运行,所见即所得。可以极大地提高效率,不用再反复的用编程器向51芯片中烧录程序。
?? 仿真器的本质器就是通过仿真头用软件来代替了在目标板上的51芯片,关键是不用反复的烧写,不满意随时可以改,可以单步运行,端点停止等等,调试方面极为方便。
操作仿真器的软件KEIL支持同时支持汇编语言和C语言。
?
???? KEIL是德国开发的一个51单片机开发软件平台,开始只是一个支持C语言和汇编语言的编译器软件。后来随着开发人员的不断努力以及版本的不断升级,使它已经成为了一个重要的单片机开发平台,不过KEIL的界面并不是非常复杂,操作也不是非常困难,很多工程师的开发的程序都是在KEIL的平台上编写出来的。可以说它是一个比较重要的软件,熟悉他的人很多很多,用户群极为庞大,要远过伟福等厂家软件用户群,操作有不懂的地方只要找相关的书看看,到相关的单片机技术论坛问问,很快就可以掌握它的基本使用了。
?
??? 仿真器适合初学者使用,使用它学习单片机自然事半功倍,但是首先必须有一定理论基础。个人认为它不适合没有任何51单片机基础的初学者,比较适合有一定理论基础和实践经验的用户,也适合渴望开发复杂程序的有经验用户。可以说如果没有单步运行调试等手段来仿真,很难开发出复杂的程序,在早些年因为51芯片的存储器是EPROM的,反复烧写的寿命非常有限,开发程序只能靠专业的昂贵的专业仿真器来完成,排除了所有错误之后才能写入单片机芯片中。有了内部含有闪存的单片机之后,才使反复烧写试验成为可能,但是也还是无法实现象仿真器那样的时时调试。在公司进行单片机程序开发的工程师都是使用仿真器,对于想真真掌握单片机开发的人,终也一定会熟练的使用仿真器。
??? 仿真器的原理是 仿真器内部的P口等硬件资源和51系列单片机基本是完全兼容的。仿真主控程序被存储在仿真器芯片特殊的空间内,有一段特殊的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作系统一样控制仿真器的正确运转。
???? 仿真器和电脑的上位机软件(即KEIL)是通过串口相连的,通过仿真器芯片的RxD和TxD端口和电脑的串行口做联机通讯,RxD负责接收电脑主机发来的控制数据,TxD负责给电脑主机发送反馈信息。控制指令由KEIL发出,由仿真器内部的仿真主控程序负责执行接收到的数据,并且进行正确的处理。进而驱动相应的硬件工作,这其中也包括把接收到的BIN或者其他格式的程序存放到仿真器芯片内部用来存储可执行程序的存储单元(这个过程和把程序烧写到51芯片里面是类似的,只是仿真器的擦写是以覆盖形式来做的),这样就实现了类似编程器反复烧写来试验的功能!不同的是,通过仿真主控程序可以做到让这些目标程序,做特定的运行,比如单步、端点、地址的等,并且通过KEIL可是时时观察到单片机内部各个存储单元的状态。仿真器和电脑主机联机后就象是两个精密的齿轮互相咬合的关系,一旦强行中断这种联系(比如强行给仿真器手动复位或者拔去联机线等),电脑就会提示联机出现问题,这也体现了硬件仿真的鲜明特性,即“所见即所得”。这些都是编程器无法做到的。这些给调试、修改、以及生成终程序创造了比较有力的保证,从而实现较高的效率。
商品化的仿真器非常昂贵,因为商品化的仿真器硬件方面用的从厂家定制的极为特殊的芯片,操作软件是特殊开发的,这些都是开发成本,不过一个这样的产品(即使包括机壳)成本一般也不会200元,市场售价一般在1200~3000左右。因为专业厂家的理念是:“对于比较单一垂直的领域,由于销量不大,利润即使1000%也是很正常的[1]