菜鸟之学习51单片机(四)流水灯的实现

通过前面的程序,我们可以了解到,一个程序当中,让流水灯产生动作的是

  while(1)

{
  P0=0xff;                         //            P0口控制的LED等全灭,共阳二极管
 delay1ms(500);            //              延迟500ms
  P0=0x00;                    //              P0口控制的LED等全亮,共阳二极管
 delay1ms(500);           //            延迟500ms

  }

这个循环,因此,我们只需要控制I/O口的高低电平就可以实现流水灯

我们来看一下原理图

菜鸟之学习51单片机(四)流水灯的实现_第1张图片

流水灯程序

#include
#include   //下面用到一些功能函数,必须包含头文件

 void delay1ms(unsigned int i)


     unsigned  char j;
    while(i--)
 {
      
    for(j=0;j<125;j++)
    {
       ;
  }
  }

}

void main()
{
   while(1)
   { 
    P0=0x7f;  //0111 1111     第二排左边一个点亮
   P1=0xfe;  //1111  1111     第一排右边一个点亮
  while(1)
  {
  P0=_cror_(P0,1);                //第二排右移
  P1=_crol_(P1,1);              //第一排排左移
  delay1ms(50);                      //延迟 50ms移动 ,可以自行调整
  }  
     }

}

这个程序用函数实现流水灯功能,其实也可以一个个赋值,只是很麻烦,函数如下

extern unsigned  char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);

鼠标放在“#include ”点击右键,选择“Open  docment  ”即可看到这些函数,用法如上

你可能感兴趣的:(大学生涯)