单片机第一步——点亮第一盏灯

     用单片机点亮一个灯泡并让灯泡不停闪烁,常亮也是可以的, 这几乎是单片机的入门课程了。 网上有很多图文并茂的资料把这个步骤写得很详细,我自己也变写了一点小程序,实现8个灯的循环亮起灯,流水灯。

      其实LED的顺序亮起一定要注意好它的移位方向和起始位置,然后要找好相应的输出口,P0,P1,还是P2,P3。P0口需要接上拉电阻,不然无法使用。由于上传视频比较麻烦,就把程序附上,自行查阅,亦可下载操作~~

#include 
//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);//全亮
	}
}

 

你可能感兴趣的:(单片机第一步——点亮第一盏灯)