我使用的单片机开发板是清翔51单片机开发板,这是一个新手入门51单片机的好帮手
LED:发光二极管(Light Emitting Diode)
可以应用在LED显示屏、交通灯、液晶屏幕
原理图
下面给出清翔51单片机的LED流水灯模块原理图
在(1)中的P10~P17共八个I/O口,通过控制高低电平来控制LED是否点亮,(1)中的P10~P17对应(2)中的P10~P17
(1)
(2)
点亮原理
通过直接控制CPU配置寄存器的值来控制硬件电路达到我们预期效果
点亮代码
//例:点亮第一个LED灯(P10)
//使用I/O口来点亮LED灯,低电平点亮
#include <reg52.h>
sbit LED1 = P1^0; //1111 1110
void main()
{
LED1 = 0;
}
//例:点亮第一个LED灯(P10)
//使用十六进制点亮第一个LED
#include <reg52.h>
void main()
{
P1 = 0xfe; //1111 1110
}
流水灯代码(基础)
在初学阶段,要想使LED灯保留当前效果,实现延时,我们会用延时函数。
在串口助手中有一个延时函数助手,使用这个函数我们可以很快地得出延时函数,如下图
代码
#include <reg52.h>
#include <intrins.h> //要使用_nop_()函数
//LED闪烁
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/*
void main()
{
while(1)
{
P1 = 0xbf;
Delay500ms();
}
}
*/
void main()
{
while(1)
{
P1 = 0xfe;
Delay500ms();
P1 = 0xfd;
Delay500ms();
P1 = 0xfb;
Delay500ms();
P1 = 0xf7;
Delay500ms();
P1 = 0x7f;
Delay500ms();
P1 = 0xbf;
Delay500ms();
P1 = 0xdf;
Delay500ms();
P1 = 0xef;
Delay500ms();
}
}
流水灯代码(高级)
VID_20230317_220101