51单片机做流水灯,灯不亮。
时间:10-02
整理:3721RD
点击:
最近学了流水灯。然后搭建了电路,但是没有流水的效果。LED灯都不亮。伙伴们帮忙看看,问题出在哪了?下面是程序和电路图。
#include<reg51.h>
#include<intrins.h>
#define led P2
typedef unsigned char uch;
typedef unsigned int uint;
void delay(uch i) //延时函数
{
while(i--);
}
void main()
{
uch i;
led=0x01;
delay(50000);
while(1)
{
for(i=0;i<7;i++) //左循环
{
led=_crol_(led,1);
delay(50000);
}
for(i=0;i<7;i++) //右循环
{
led=_cror_(led,1);
delay(50000);
}
}
}
代码如下:
#include <htc.h>
void delay(unsigned int i)
{
while(i--);
}
void main()
{
P2=0x01;
while(1)
{
while(P2!=0x80)
{
P2=P2<<1;
delay(10);
}
while(P2!=0x01)
{
P2=P2>>1;
delay(10);
}
}
}
#include<reg51.h>
#include<intrins.h>
#define led P2
typedef unsigned char uch;
typedef unsigned int uint;
void delay(uch i) //延时函数
{
while(i--);
}
void main()
{
uch i;
led=0x01;
delay(50000);
while(1)
{
for(i=0;i<7;i++) //左循环
{
led=_crol_(led,1);
delay(50000);
}
for(i=0;i<7;i++) //右循环
{
led=_cror_(led,1);
delay(50000);
}
}
}
改进了一下电路,试着在Multisim上跑了一下(采用8052单片机),还算可以,见图:
代码如下:
#include <htc.h>
void delay(unsigned int i)
{
while(i--);
}
void main()
{
P2=0x01;
while(1)
{
while(P2!=0x80)
{
P2=P2<<1;
delay(10);
}
while(P2!=0x01)
{
P2=P2>>1;
delay(10);
}
}
}
led是否为甚亮,电流超出单片驱动能力
最简单的 把亮灯值做一个数组用for循环一条搞定
先查看一下程序是否正确,把单片机31脚接电源试试
先查看一下程序是否正确,把单片机31脚接电源试试
是不是U2选成共阳型LED了?
没有。换成led闪烁的程序,显示结果还是对的。就是流水灯没反应……
没有。换成led闪烁的程序,显示结果还是对的。就是流水灯没反应……
排阻串联接在单片机和led之间,也是没反应。不过我倒是没像你这么接过。明天试试看。谢谢
排阻串联接在单片机和led之间,也是没反应。不过我倒是没像你这么接过。明天试试看。谢谢
程序没问题呀。接到单片机开发板上没问题的。
程序没问题呀。接到单片机开发板上没问题的。31引脚和这个没关系吧?
太复杂了。而且主要是想练习左移右移函数的。
U2另一端接地和接5V电源,我都试过。都没反应。另外,怎么看共阴共阳啊?
U2另一端接地和接5V电源,我都试过。都没反应。另外,怎么看共阴共阳啊?
??(ˊωˋ*)??好吧
支持一下 小编加油
支持一下 小编加油
二极管的负极接到一起的就是共阴,二极管正极接到一起的就是共阳。