流水灯实验是第一个实验,比较简单。LED的阳极串联一个电阻,然后连接到电源VCC,而LED的阴极连接到单片机的P2口,如果你想点亮一盏LED就对把单片机相对应的IO赋为低电平。
我总结了两种方法,其实还有更多。
方法一、
#include <reg51.h>
#include <intrins.h> //左移右移函数头文件
#define GPIO_LED P2 //将P2口另外取名GPIO_LED
void Delay10ms(unsigned int); //误差0μs
void main(void)
{
unsigned char n;
GPIO_LED=0xfe; //
while(1)
{
for(n=0;n<7;n++)
{
GPIO_LED = _crol_(GPIO_LED,1);
Delay10ms(50);
}
for(n=0;n<7;n++)
{
GPIO_LED = _cror_(GPIO_LED,1);
Delay10ms(50);
}
}
}
void Delay10ms(unsigned int c) //0~65535
{
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
方法二、
#include <reg51.h>
#define LED_P P2
void Delay10ms(unsigned int c); //误差 0us
/*低电平时 LED 灯亮 */
/*从左向右依次点亮一盏LED 灯*/
unsigned char led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void main()
{
unsigned char i=0;
while(1)
{
for(i=0;i<8;i++)
{
LED_P = led[i];
Delay10ms(50);
}
}
}