那位大侠能告诉我,proteus和keil联机的原理是啥?要单独外加个单片机吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了那位大侠能告诉我,proteus和keil联机的原理是啥?要单独外加个单片机吗?相关的知识,希望对你有一定的参考价值。

Keil是编译调试软件,Proteus是电路仿真软件,它最大特色就是能仿真单片机。
用Keil和Proteus联合仿真不需要填加任何硬件(当然也不用加单片机),用纯软件即可实现硬件仿真。其原理就是利用Proteus可以仿真单片机的特性,将Keil与其相互联合。这样就可以进行单步仿真。可以实时查看硬件的工作状态。
不过,由于Proteus的元件库有限,有很多元器件没有或没有仿真模型。这时需要寻找可以替代的元器件。当然,也可以自己做元件,不过由于需要指定仿真模型,致使难度比较大。
还有需要注意的是:由于毕竟是软件仿真,其与实际硬件还有差异。不可过度依赖。
我的百度空间里有具体的设置过程,希望对你有所帮助。
参考技术A 这个proteus尽量别用,主要的就是创建文件的时候两个软件的工程和文件都放在一个文件夹里面,如果仿真软件里面有一个错的,这个程序就不能运行。不要外加单片机的。如果你想用单片机开发板的的话。要有下载器,最近我就在玩这个单片机。C51的

仿真软件proteus点亮led实验

    在这个实验之前,确保系统已经正确安装了proteus和keil工具。proteus是用来设计电路图的,keil是用来编写c语言代码并编译成芯片可用的hex程序的。

    前面安装keil的时候,最后提到,如果安装了keil,proteus,在进行仿真的时候,可以直接使用proteus。而不需要开启keil,然后使用什么联调,需要proteus开启远程调试,keil开启调试,这里面还需要额外下载一个VDM51.dll动态库文件,然后做配置,过于繁锁,而且还浪费了keil资源。

    这里的点亮led实验全部使用proteus软件完成。

    在proteus中新建项目:输入项目名称,选择保存路径。

    

    选择模板,选择第二个单选框,从模板创建,这个模板直接使用默认DEFAULT,这里是用来画设计图的。 

    这一步是选择PCB布局的,也是从模板创建,依旧选择默认DEFAULT类型。 

    这一步选择 “创建硬件项目”,英文版是:Create Firmware Project。Family选择8051,Controller选择80C51,编译器选择Keil for 8051,如果显示not configured,需要自己配置。

    这一步,如果没有Keil for 8051编译器,可以点击后面的Compilers按钮 ,配置系统安装的Keil编译器:

    有了这个选项,我们创建的工程,才能有源代码,而且是c语言的。

    接着可以切换视图到Schematic Capture,新手千万不要切换到了PCB Layout视图,否则会很奔溃。这里直接就有一个80C51的芯片,不用我们去设备库里面选择了。

     这个实验是要点亮led,我们还是需要选择其他元器件,发光二极管LED-RED, 220R电阻。在Schematic Capture视图下,我们在元器件Component模式下,选择设备,点击"P":    

    出现如下所示的弹出框:在关键字输入框,分别输入LED-RED,220R分别选择右侧的二极管和220欧姆电阻。最后点击页面下方“ok”结束选择元器件。

    接着就是画图,先选中设备框中的二极管或者电阻,然后在画图区域左键单击即可拖出元器件。

     我们还需要在Terminal Mode下选择“接地”(GROUND):

    接着就是电路连线,其实很简单,直接用鼠标连接你想要的连接的地方即可。 

    绘制的电路图如下所示:

    这个电路,二极管正极接单片机,负极连着一个电阻,最后接地,按照发光原理,需要单片机引脚P2.0给出高电平即可。

     源代码非常简单,几乎会让你感到失望:

#include <reg51.h>
#include <stdio.h>
sbit led = P2^0;
void main(void)
  
   while (1)
    led = 1;
   
 

仿真效果图:

    这个实验,还可以继续做下去,这里只是简单的点亮发光二极管,其实可以利用一个延时来让二极管闪烁。原理就是:开启高电平,延时1秒,开启低电平,延时1秒,不断循环往复,就可以看见二极管闪烁了。

    代码:

#include <reg51.h>
#include <stdio.h>
sbit led = P2^0;
void delay()

  unsigned int i,j;
  for(i=0;i<1000;i++)
  
    for(j=0;j<110;j++);
  

void main(void)
  
   while (1)
    led = 1;
    delay();
    led = 0;
    delay();
   
 

    仿真效果:

    也可以观察到,与前面直接点亮led不同的是,P2.0管脚一会是红色,表示高电平,一会是蓝色,表示低电平,这样就实现了led闪烁的效果。 

    这里电路图还有一种画法,就是电阻一端接电源,这样,二极管的方向需要旋转180度,二极管负极需要接上开发板,点亮程序自然需要修改,如果是闪烁,其实也可以不用修改。

     在所有的开发软件中,个人感觉这种仿真软件最好玩了,搭建电路,编写程序,最后仿真,可以直接看效果,真的很激动。

    值得注意的是,我开始在选择引脚接线的时候,直接接到P0管脚,后来发现死活点不亮二极管,仿真也不报错,后来发现接到P2管脚,立马就点亮了,而且在观察实验现象的时候,发现P0管脚根本没有任何变化,其他的P1,P2,P3都会显示红色,P2接二极管的管脚P2.0时不时还显示蓝色,从这里可以看出,P0管脚没有参与电平输出。所以接线的时候还是要注意一点。

以上是关于那位大侠能告诉我,proteus和keil联机的原理是啥?要单独外加个单片机吗?的主要内容,如果未能解决你的问题,请参考以下文章

怎么在51单片机中读取文件 如何在Keil C51使用fopen函数 也就是如何在C51中编写 能打开文件程序

QT4.5.3 编译hello world 程序有时候能通过,有时候又不行。那位大侠知道阿? 下面是具体代码和操作信息

那位大侠知道SketchUp建立的模型怎么导入ArcGIS啊,小弟急用啊

我想问一个用LINUX,还有ARM板,做一个点对点的视屏聊天系统,那位大侠可以给个提纲,我需要学习那些知识

Keil C51与Proteus联合仿真和调试示例全过程解析

仿真软件proteus点亮led实验