proteus学习笔记一:点亮LED

Posted 无痕幽雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proteus学习笔记一:点亮LED相关的知识,希望对你有一定的参考价值。

最近想学习下C51单片机,懒得折腾硬件了,就用proteus软件学习下,把过程记录下,希望能够帮助到想学习C51的人吧。

一、软件安装

1)proteus 8.13安装,请看这里:https://www.aliyundrive.com/s/9DRfHAQfo5G 提取码: 1d9b ,英文环境好,不用担心中文兼容性。

2)安装keil,请看这里:迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项_无痕幽雨的博客-CSDN博客,说明如果仅仅是开发C51,ARM和迪文屏幕开发环境不需要搭建。

二、目录构建

我一般喜欢把和这个项目有关的资料放一个文件夹里面,创建LED文件夹(路径不要有中文),然后再里面创建4个文件夹:hardware、simulation、software、手册资料。

hardware:放置PCB工程文件,制版使用,如AD9工程。

simulation:放置仿真工程文件,如proteus工程。

software:放置软件工程文件,如:keil工程文件。

手册资料:放置本工程用到的硬件资料手册等。

三、创建proteus工程

1)file->new project,路径不要有中文。

 

2)选择器件,单击左方的P按钮,出现器件选择界面:

 3)选择C51单片机,在搜索栏数据89C51,这你选择AT89C51RD2

 双击,左侧的器件栏就会出现选中器件名称:

 4)搜索LED,选择蓝色

6)选择电阻,1K:

 

7)选择电源和地

8)连接电路图

双击灯,修改电流为2mA,不然IO口驱动不了。

整体电路:

直接点击运行,灯就会亮:

 四、创建keil工程

创建工程过程忽略,不知道的小伙伴请自行百度,要实现的功能就是灯亮1S,然后灭1S,实现闪烁。

1)写一个1ms的延时函数,这用示波器查看下,是不是1ms

代码:

//LED
sbit tLed1 = P2^7;


static void delay_ms(uint16_t hwTimer)

    uint16_t    i = 0,j=0;

    for(i=0;i<hwTimer;i++)
#if (11059200 == HSE_VALUE)
        j = 110;
#elif (12000000 == HSE_VALUE)
        j = 109;
#endif
        while(j--);
    


int main(void)

    //初始化
    DIS_INT();
    
        //锁存输出
    
    EN_INT();


    while(1)
        tLed1 = 0;
        delay_ms(1);
        tLed1 = 1;
        delay_ms(1);
    

 把生产的HEX文件拷贝到仿真文件夹,然后双击单片机,选择HEX文件,这里晶振选择的12M:

 运行:

从示波器看,是1MS。 

修改代码:

int main(void)

    //初始化
    DIS_INT();
    
        //锁存输出
    
    EN_INT();


    while(1)
        tLed1 = 0;
        delay_ms(1000);
        tLed1 = 1;
        delay_ms(1000);
    

生成HEX,然后选择HEX文件,运行,即可实现1S亮,1S灭的效果。

以上是关于proteus学习笔记一:点亮LED的主要内容,如果未能解决你的问题,请参考以下文章

LED灯的点亮电流一般是多少~~

仿真软件proteus点亮led实验

51单片机学习笔记4 新建工程及点亮LED实战

51单片机学习笔记4 新建工程及点亮LED实战

如何点亮一个LED灯

ARM 学习笔记之二 LED点亮程序设计