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灭的效果。

  • 3
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值