一、实验软硬件
1.Keil uVision5
2.stc-isp 程序下载软件
3.STC89C52开发板(普中A2)
二、实验原理
此LED模块二极管为共阳极连接,另一端阴极都与单片机的管脚相连,对单片机IO口进行编程则可以控制二极管的亮灭。IO口输出低电平0则导通,二极管亮。
如果需要进行闪烁,则可以先让IO口输出低电平,此时二极管亮,然后延时一段时间再让IO口输出高电平,此时二极管灭;如此反复,则可以实现二极管的亮灭操作。
流水灯部分:可以先让IO口输出0xFE(1111 1110),使用延时函数延迟一段时间,此时对应最左边第一颗LED灯亮起,其余的灭;接着再让IO输出0xFD(1111 1101),再延迟一段时间,此时对应第二个LED灯亮起,其余的灭;如此对IO口进行数据的写入就可以实现LED流水灯的功能。
三、实验代码
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@11.0592MHz (此部分代码由stc内的软件延时计算器配置)
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay500ms();
P2=0xFD;//1111 1101
Delay500ms();
P2=0xFB;//1111 1011
Delay500ms();
P2=0xF7;//1111 0111
Delay500ms();
P2=0xEF;//1110 1111
Delay500ms();
P2=0xDF;//1101 1111
Delay500ms();
P2=0xBF;//1011 1111
Delay500ms();
P2=0x7F;//0111 1111
Delay500ms();
}
}
进制之间转化表如下