(基于江协科技)51单片机入门:1.LED
目录
新建工程
LED模块原理
程序下载入单片机
LED的闪烁
LED流水灯
新建工程
在写代码前需要新建工程文件,下方为整个操作流程:
点开后出现后出现窗口为,文件准备创建出。可以养成良好习惯在桌面创建个,51单片机入门全流程的大文件,在这个大文件类进行,每个模块,实现的功能分类
此软件没有 STC 的单片机,不过可以选择 AT98C52 和 STC89C52完全一样
确认后会弹出这个界面,不用理会,是和否都可以。我们点否
现在就成功创建了文件 界面如下:
创建完后还有几个准备工作
这个操作关于,程序如果从电脑下载入单片机中,不是一劳永逸的,每次新文件都要勾选
类似最开始的
#include <stdio.h>
LED模块原理
LED模块原理图:
可以观察到,左上角的VCC(正极),一个电子元件要工作就需要电势差,所以最右端,就可以控制和VCC一样的5V电压使LED不工作,可以控制为0V电压使LED工作。
在单片机中,CPU处理好程序信息后可命令寄存器去控制硬件,决定银角的电压
所以要控制LED的亮灭,可以先操控p2寄存器去执行
寄存器读取的是每一位上的值,1为5V,0为0负,
所以点亮一个 LED 为P2 = 1111 1110
需要转化为16进制 为 P2 = FE(大小写都可以)
1.1.点亮LED:
#include <REGX52.H>int main()
{while(1) // 为了让单片机不重复从头开始执行{P2 = 0xFE}return 0;
}
程序下载入单片机
打开STC—ISP软件
一定注意,这里不是单纯的 STC89C52 是 STC89C52RC
如果,版子插在电脑上,这里会自动扫描出,最长的
点击下载后会出现以下界面
这时就要回到现实,去按你版子上的电源键两次
成功后:
LED的闪烁
去STC—ISP软件找到一下模块复制代码上去
2.根据单片机的金振选择频率,金振上有打印
3.改为毫秒 1秒等于1000毫秒
4.更改为 Y1 这和单片机系列相关,能到图中的箭头指向出说明适用的单片机系列
对这个函数进行修改:
void Delay1ms(int num) // 传参的值为循环次数
{while(num--) // 下面代码每循环一次就是消耗 1 毫秒{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}
在这个函数中有个 _nop_(); 有个函数头文件为<intrins.h>
LED闪烁代码:
#include <REGX52.H>
#include <intrins.h>void Delay1ms(int num) //@11.0592MHz
{while(num--){unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}int main()
{while(1){P2 = 0xFE;Delay1ms(1000); P2 = 0xFF;Delay1ms(1000); }return 0;
}
LED流水灯
#include <REGX52.H>
#include <intrins.h>void Delay1ms(int num) //@11.0592MHz
{while(num--){unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);}
}int main()
{while(1){P2 = 0xFE;Delay1ms(1000);P2 = 0xFD;Delay1ms(1000);P2 =0xFB;Delay1ms(100);P2 =0xF7;Delay1ms(100);P2 =0xEF;Delay1ms(100);P2 =0xDF;Delay1ms(100);P2 =0xBF;Delay1ms(100);P2 =0x7F;Delay1ms(100);}return 0;
}