用单片机点亮一个灯泡并让灯泡不停闪烁,常亮也是可以的,这几乎是单片机的入门课程了。 网上有很多图文并茂的资料把这个步骤写得很详细,我自己也变写了一点小程序,实现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);//全亮}}