一、前言
我们之前就知道了LED的点亮代码,实现我们的LED闪烁应该是很简单的
二、闪烁代码思路
思路:我们写一个点亮代码,然后立马接上一个关闭代码
#include <REGX52.H>
void main()
{
while(1)
{
P2=0x7F;//11101111 11111110
P2=0xFF;
}
}
实际上这个代码已经实现了闪烁,我们眼神好的的能看到LED是一明一暗的,但是我们闪烁的效果,所以我们很容易想到写一个延时代码。
补充:因为我目前还没有学模电数电基础内容,这个延时代码我选择用软件写。软件写延时代码的方法我将放在博客最底下
有了上面的效果不明显的闪烁代码我们,加上延时代码就行
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0x7F;//11101111 11111110
Delay500ms();
P2=0xFF;
Delay500ms();
}
}
这下这个代码就能很好的实现闪烁
三、对上面的内容说明
3.1为什么我们第一个代码无法看到效果明显的闪烁?
原因分析:我们的闪烁代码,其实本质是有闪烁效果的,但是由于我们的单片机的频率是Mhz的,很快就进行这个代码了,有的人眼神好的能看到一明一暗的效果,这其实就是闪烁了。
3.2我们如何借助软件写延时代码
我以stc工具软件为例
I.我们打开stc点击红色的地方,直到出现软件延时计算器
II.根据自己单片机的类型,输入参数,实现闪烁我们各500ms就已经够了
III.解决在使用中的警告,这个时候我们引一个头文件就行了
这个警告是因为:我们的nop函数未定义
我们引头文件INTRINS.H就可以了
四、结语
学习单片机无法正确出现实验结果,不会是设备问题,我们可以休息一下,然后来解决问题,注意学习效率