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的主要内容,如果未能解决你的问题,请参考以下文章