您的位置:首页 > 大数据 > 物联网

嵌入式 51单片机 流水灯原理详解

2017-01-25 00:06 253 查看

流水灯基本原理:

实验所需:

语言:C 芯片:STC90C51 板子:51单片机

电路图(局部就是电阻和灯)



流水灯运作原理:STC90C51芯片通过操作导致指定引脚释放出高电平,所对应的灯接收到闭合电路产生电流导致LED等闪亮。



以上是8个灯的简单视图,要启动对应灯,必须在以上接口提供高电平且形成闭合电路

芯片操作:操作利用的是引脚4组随机一组,我使用的是P0口,通过烧写把代码烧进flash内存,代码如下:

#include <reg51.h>	    //导入库文件,芯片公司写好的库文件方便调用

void Delay10ms(unsigned int c);   //延迟10MS

void main()
{
while(1)
{

P0  = 0x00;  //00000000   所有灯电平为低电平

Delay10ms(100);

P0  = 0xff;   //11111111   所有灯电平为高电平

Delay10ms(100);

}

}

//通过循环的执行时间来延迟
void Delay10ms(unsigned int c)
{
unsigned char a, b;

for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}


扩展例子:(运作->全灭->1~8灯暗顺序单个亮->最后全亮)

#include <reg51.h>

void Delay10ms(unsigned int c);

void main()
{
while(1)
{

P0  = 0x00;  //00000000
Delay10ms(100);

P0  = 0x01;  //00000001
Delay10ms(100);

P0  = 0x02;  //00000010
Delay10ms(100);

P0  = 0x04;  //00000100
Delay10ms(100);

P0  = 0x08;  //00001000
Delay10ms(100);

P0  = 0x08;  //00001000
Delay10ms(100);

P0  = 0x10;  //00010000
Delay10ms(100);

P0  = 0x20;  //00100000
Delay10ms(100);

P0  = 0x40;  //01000000
Delay10ms(100);

P0  = 0x80;  //10000000
Delay10ms(100);

P0  = 0xff;  //11111111
Delay10ms(100);

}

}

void Delay10ms(unsigned int c)
{
unsigned char a, b;

for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}


解析:以上例子已经很清楚显示出来,1为高电平,0为低电平,通过高低搭配把电压输出到引脚而使LED流水灯发亮.

例如:用二进制表示八个灯情况,若只需要第3个灯亮 0000 0100 -> P0 = 0x04 二进制转换16进制输出

总结不好多多担待,文章只单纯个人总结,如不好勿喷,技术有限,有错漏麻烦指正提出。本人QQ:373965070
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息