大神手把手教你STC单片机片上仿真法
扫描二维码
随时随地手机看文章
什么是仿真?
我们举一个汽车设计的例子来说明一下吧。大家一定在影视剧或电视广告中看过这样的镜头:在一个大大的厂房里,一辆崭新的小汽车正在以很高的速度撞向一面厚厚的水泥墙。坐在车上的两个人面不改色心不跳,一动不动地等待着死亡。他们为何如此冷静,因为“他们”是实验用的假人。说时迟那时快,汽车已经撞到了墙上,巨大的声响夹杂着飞溅的碎片充满了空间,汽车在撞击中破了相。旁边的几台高速摄像机记录下了这一切。这是一次真实的撞击实验,目的是为了得出这款车型在出现意外时,是否能保住人的小命。安装在假人身上的传感器所得出的数据,能帮助工程师们发现安全隐患,改进汽车的设计。可以说,以上就是一次仿真,一辆真车和两个假人有计划地撞墙,模拟了真实车祸情况。仿真让实验变得可能,因为没有一个真人愿意坐在车里参与这场实验。当真实情况很难在开发时再现时,仿真就可以帮助开发者完成必要的实验。这就如同单片机开发中,我们在自己的实验板上去开发一款产品一样。当我们设计好了一个产品的功能,我们要在实验板上模拟用户的操作,看看操作是否正常,产品的反应速度和稳定性如何。这些都是在仿真——模仿用户使用的真实情况。
而本文要介绍的是仅使用单片机的“片上仿真”。片上仿真是基于单片机本身的仿真,也就是说只要一片单片机,不需要额外购买别的东西,就可以实现仿真。对于单片机爱好者来说,片上仿真是最高性价比的选择,你甚至不需要修改电路,用给单片机下载HEX文件的电路就能实现仿真。各大单片机公司都已开发出不同性能的支持片上仿真的单片机。其中STC公司有一款性能很不错的片上仿真单片机——IAP15F2K61S2。下面我就给大家介绍一下片上仿真环境的建立,还有进入仿真界面的操作流程,最后以一个实例告诉大家如何进行仿真调试。这是一些非常简单的操作,只要按照本文的步骤操作,就一定能顺利学会。
仿真电路连接
建立单片机仿真环境,最主要的工作是设置软件的参数,而硬件电路的连接是很简单的事。如果你已经制作出了ISP下载线,并成功地给单片机写入了HEX文件。那么从某种意义上讲,你已经完成了单片机仿真的硬件电路连接。也就是说,单片机仿真电路与ISP下载电路是完全相同的。如果是这样,我为什么还要花时间来讲仿真电路的连接呢?因为虽然电路连接相同,但单片机不同了。所以我们不能使用STC12C5A60S2和STC12C4052AD来仿真,因为这两款芯片不带仿真功能。而唯一带仿真功能的单片机IAP15F2K61S2是最新发布的15系列单片机,它有着不相同的引脚定义。我们只要熟悉了它的新引脚定义,再来制作电路就不难了。
首先最明显的是引脚定义的不同,虽然IAP15F2K61S2也是40脚的单片机,但如果把它直接插在我们做好的ISP下载线里,你会发现单片机是不工作的。不仅IO接口不兼容,连VCC电源输入的位置也不同。接下来是外部晶体的使用, IAP15F2K61S2单片机不需要接外部晶体,因为它的内部集成了一个高精度的时钟源,可以用软件设置成5~30MHz的时钟频率。这一改进对我们使用者的意义是:不论我们做何应用,都不需要外接晶体的电路了。只要连接VCC和GND,单片机就可以工作。再连接TXD和RXD,单片机就能ISP下载和仿真了。
可仿真单片机IAP15F2K61S2
下载/仿真电路原理图
新建仿真环境
硬件电路连接完毕后,下面开始步骤较多的软件设置,请大家一定按我介绍的步骤仔细进行。
第1步:下载到STC-ISP V6.36软件,目前只有V6.36及以上版本支持仿真功能。
第2步:点击软件右侧的“KEIL关联设置”选项卡。仿真相关的操作都在这个选项卡里完成。
第3步:接着点击“添加MCU型号到Keil中”。这个操作效果是把STC芯片的仿真程序与KEIL软件绑定在一起,这样KEIL软件中的仿真功能才能操作STC单片机硬件。
第4步:在弹出的“浏览文件夹”窗口中找到KEIL软件的安装目录,并点击“确定”(默认是在C:Keil中)。
第5步:点击“将IAP15F2K61S2设置为2.0版仿真芯片”,在此处可以仿真的芯片有两款:IAP15F2K61S2和IAP15L2K61S2,前一款是F表示5V电源电压的芯片,后一款是L表示3.3V电源电压的芯片。我们以5V芯片为例。
第6步:按下第5步的按钮后,按键变灰,下方状态窗口出现“正在检测目标单片机……”。这个提示的意思是你需要给单片机重新上电了,和之前给单片机写入HEX文件的方法相同。此时在硬件上让单片机冷启动,即会出现下载程序的提示,最后显示下载完成。大家可能不明白了,不是要仿真吗,为什么还要下载程序呢?其实这次下载的是仿真所需要的仿真处理程序,而不是我们要运行的HEX程序文件。仿真处理程序的功能是接收KEIL软件通过串口发出的仿真指令,再用这个指令去操控单片机寄存器和IO接口什么的。由此可见仿真处理程序是必不可少的。
第7步:打开KEIL,打开你想要仿真的项目,我打开一个P1接口流水灯的程序,一会我们也以此为例详细讲解。
第8步:点击Target Options按键,或在菜单栏中点击Projectà Options for Target。
第9步:进入Options窗口后,点击Device选项卡。
第10步:在Database下拉列表中选择“STC MCU Database”项,选中后就会出现STC系列单片机的型号。
第11步:在左侧型号中选择“STC15F2K60S2”项,这里选的是系列型号,包括同系列的很多款单片机。
第12步:选择“Debug”选项卡,这里面都是与仿真相关的设置。
第13步:选中窗口右上方的项目。
第14步:在下拉列表中选择“STC Monitor-51 Driver”项。
第15步:选择好后,点击右侧的“Settings”按钮。
第16步:在弹出的窗口中可以设置仿真用串口通信的串口号和波特率。串口号就选择单片机正在使用的串口。
第17步:在波特率下拉列表中选择115200或57600,这个部分涉及到仿真的稳定性。所以要根据你的经验来设置。如果你是第一次使用,可以多设置几个值看看,哪一个最稳定就用哪个。如果仿真时出现错误提示也可能与此有关。
第18步:设置完成后回到主界面。点击DebugàStart/Stop Debug Session或按键盘上的Ctrl+F5开始仿真。这个操作是开始或停止仿真的切换按钮。如果我们之前的设置都是正确的,单片机硬件也接通了电源,这时KEIL软件会切换到仿真界面。
第19步:点击仿真界面下的“Run”按钮或按键盘上的F5键就能全速运行程序了。如果一切正常,你将会在单片机硬件电路上看到8个LED顺序点亮,呈现流水灯效果。想复位单片机,可以按左边的“RST”按钮。
第20步:在全速仿真运行的状态下,点击“Stop”键停止仿真。
注意:如果在进入仿真界面或点击“Run”按钮后,出现上面的提示窗口,则表示你之前的设置存在问题,或者是硬件电路的部分有异常。解决的办法是:首先把KEIL软件退回到正常编程状态,然后重新给单片机上电,再尝试进入仿真界面。如果还不行,则重新给单片机下载一次仿真处理程序。还不行的话,就选择KEIL仿真设置里的其他波特率,再重复前面的尝试。最后实在没有办法的话就只能重启电脑试试了。