用单片机点亮一个灯泡并让灯泡不停闪烁,常亮也是可以的, 这几乎是单片机的入门课程了。 网上有很多图文并茂的资料把这个步骤写得很详细,我自己也变写了一点小程序,实现8个灯的循环亮起灯,流水灯。
其实LED的顺序亮起一定要注意好它的移位方向和起始位置,然后要找好相应的输出口,P0,P1,还是P2,P3。P0口需要接上拉电阻,不然无法使用。由于上传视频比较麻烦,就把程序附上,自行查阅,亦可下载操作~~
#include <reg51.h>
//sbit P1_0 = P1^0;
//sbit P1_1 = P1^1;
//sbit P1_2 = P1^2;
//sbit P1_3 = P1^3;
//sbit P1_4 = P1^4;
//sbit P1_5 = P1^5;
//sbit P1_6 = P1^6;
//sbit P1_7 = P1^7;
//
int n =0;
int i = 0;
void delayus(i)
{
while(--i);
}
void delayms(n)
{
while(n--)
{
delayus(245);
delayus(245);
}
}
//
//void main()
//{
// while(1)
// {
// P1_0 = 0;
// delayms(500);
//
// P1_1 = 0;
// delayms(500);
//
// P1_2 = 0;
// delayms(500);
//
// P1_3 = 0;
// delayms(500);
//
// P1_4 = 0;
// delayms(500);
//
// P1_5 = 0;
// delayms(500);
//
// P1_6 = 0;
// delayms(500);
//
// P1_7 = 0;
// delayms(500);
//
// P1_0 = 1;
// delayms(500);
// P1_1 = 1;
// delayms(500);
// P1_2 = 1;
// delayms(500);
// P1_3 = 1;
// delayms(500);
// P1_4 = 1;
// delayms(500);
// P1_5 = 1;
// delayms(500);
// P1_6 = 1;
// delayms(500);
// P1_7 = 1;
// delayms(500);
// }
//}
void main()
{
unsigned char i,w,v;
while(1)
{
//由内而外两个灯亮
w = 0x08,v = 0x10;
for(i = 0;i<4 ;i++)
{
P1 = ~(w+v) ;
w >>= 1;
v <<= 1;
delayms(150);
}
//由外而内两个灯亮
w = 0x02,v = 0x40;
for(i = 0;i<3 ;i++)
{
P1 = ~(w+v) ;
w <<= 1;
v >>= 1;
delayms(150);
}
P1 = 0;
delayms(100);//全亮
//流水循环
for(n = 10;n>0;n--)
{
w = 0x01;
for(i = 0;i<8 ;i++)
{
P1 = ~w ;
w <<= 1;
delayms(6);
}
v = 0x80;
for(i = 0;i<8 ;i++)
{
P1 = ~v ;
v >>= 1;
delayms(6);
}
}
P1 = 0;
delayms(100);//全亮
}
}