led流水灯的实现程序

led流水灯的实现是目前单片机程序中最容易实现的程序。

1.延时的实现
由于人眼的视觉暂留大约在2us左右,所以,在实现流水灯的时候有一个重要的问题——延时。如果不延时,在人眼看来,Led是全亮的。延时有两种方式可以实现:
1.调用intrins.h

_nop_( );  //延迟1us

2.自己写一个延迟函数

/*
t>0 && t<255
实际延迟2*t+12
*/
void delay_us(unsigned char t)
{
    while(--t);
}

void delay_ms(unsigned char t)
{
    while(t--)
    {
        delay_us(245);
        delay_us(245);
    }
}

void delay_s(unsigned char t)
{
    while(t--)
    {
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
        delay_ms(200);
    }
}

2.移位的实现
流水灯的实现实际是led每次显示时只显示一个位置。有两种显示方式:
1.调用intrins.h

     unsigned char temp = 0x7f;
      while(1)
      {
               temp = _crol_(temp,1);
           LED = temp;
           delay_s(1);
       }

2.自己写一个数组来实现(此方法占用较大空间)

unsigned char leddate[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main()
{
        unsigned char i = 0;
        while(1)
        {
              LED = leddate[i++];

             if(8 == i)
            {
                  i = 0;
              }
             delay_s(1);
         }
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值