分享

proteus仿真AT89C51单片机测试试验[无须keil](1)

 幽州浅水 2021-04-12

前面,我们测试了在proteus下仿真arduino的试验。有伙伴问到proteus下的单片机仿真应该如何搭建环境(咱们这里不讲解51单片机的知识,侧重讲仿真环境的搭建),这里我们就来将详细步骤陈述一下。
一、proteus的器件选择与电路
器件选择,主要是AT89C51,电容,晶振,电阻,单刀开关,led灯,BOM清单如下:

在这里插入图片描述
元器件连接图如下,连接完成后记得在Design下面设置一下电源
在这里插入图片描述
在这里插入图片描述
将使用默认的电源连接勾上,如下图,否则就有可能会报错
在这里插入图片描述
接下来我们来编写C代码,代码其实很简单,但我们必须首先配置好环境,否则不能编写代码,首先右键单击51芯片,选择右键菜单中的“edit source code”,进入新固件工程对话框,如下图:
在这里插入图片描述
点击编译器按钮进入编译器配置对话框,将我们使用的单片机编译器进行配置:
在这里插入图片描述
请伙伴们注意,这里我们采用Keil for 8051编译,那么我们就必须在上述图中写入我们安装的keil的安装目录,然后一定记得点击下面的check按钮,这样才能配置成功。
配置成功后,点击ok则可以直接进入代码编辑界面,并且系统自动为我们配置好了头文件,这个比keil更加方便(如果在keil中必须手动配置头文件以及添加主程序的c文件),如下图:
在这里插入图片描述
我们为这个程序添加一个延时程序,代码很简单:

void delay(int x) { unsigned char i=x; unsigned char j=x; while(--i); while(--j); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

接下来,我们就可以在主程序中调用了,完整的程序如下:

#include <reg51.h>
#define LED_pinP1
void delay(char x);

void main()
{
  while(1)
{
LED_pin=0x00;
delay(1000);
LED_pin=0xC;
delay(2000);
}
}


void delay(int x)
{
unsigned char i=x;
unsigned char j=x;

while(--i);
   while(--j);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

这里的LED_pin的设置我们可以根据电路图来设置,很显然,我们将LED接在了P3的3、4号管脚上了,那么我们要使LED灯亮,则按照二进制的配置应该是00001100,置为高电平1为灯亮,所以我们将这个数字表述为16进制就是0xc了。
至此,我们可以编译运行了,你看到下图的编译成功的提示,说明我们可以运行了
在这里插入图片描述
编译成功后,我们双击我们的51芯片,则会发现,编译后系统自动为我们配置好了运行编码文件(这里的文件不是hex而是omf)
在这里插入图片描述
点击下方的运行,那么我们的两个LED灯就可以闪烁起来了。就那么简单!就那么容易!真是感叹啊,很早以前我们使用proteus6的时候要是有这么简单这么便利的功能该多好啊!现在电路仿真、编码都可以在一个软件中完成。
可能有小伙伴们会问,你那两个单刀开关有什么用?是的,这里还没有用起来,下一篇博文,我们将利用他们来对LED进行简单的控制。请关注下面的博文更新。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多