找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3272|回复: 17
打印 上一主题 下一主题
收起左侧

关于led双向来回闪烁中的小问题 感谢

  [复制链接]
回帖奖励 40 黑币 回复本帖可获得 20 黑币奖励! 每人限 1 次(中奖概率 50%)
跳转到指定楼层
楼主
ID:278709 发表于 2018-3-22 07:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/*实现流水灯双向循环,并且在每次来回滚动后添加全亮或者全灭的闪烁效果
#include"reg52.h"

#include"intrins.h"

#define uint unsigned int

#define uchar unsigned char

inti,j;

voiddelay1ms(uint) ;

void delay1ms(uint) ;

voidmain()

{

while(1)

   {

   P2=0xfe;

        delay1ms(60);

  for(i=0;i<7;i++)  //注意左移六次而不是7次和8次。i=0为第一个灯跳到第二个灯后,第二个灯亮。所以为了跳到第八个灯,i=6;即i<7

  {

        P2=_crol_(P2,1);   

        delay1ms(60);

  }   

   for(j=0;j<7;j++)

  {

    P2=_cror_(P2,1);

        delay1ms(60);

   }

    P2=0xff;

        P2=0x00;

        P2=0xfe;   //为什么不能实现先全亮再全灭的效果?是因为一个口不能先后被多个数赋值吗,那应该如何解决
}


  }

voiddelay1ms(uint z)

{

        uint x,y;

        for(x=450;x>0;x--)

           for(y=z;y>0;y--);

}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2018-3-22 10:00 | 只看该作者
先看看别人正确的程序!
回复

使用道具 举报

板凳
ID:193818 发表于 2018-3-22 10:29 | 只看该作者
P2=0xff;

        P2=0x00;

        P2=0xfe;   //为什么不能实现先全亮再全灭的效果?是因为一个口不能先后被多个数赋值吗,那应该如何解决

试问一下,就算如果有效果,你能看的见么。你仔细算算一条代码的处理速度。
回复

使用道具 举报

地板
ID:212177 发表于 2018-3-22 11:42 来自手机 | 只看该作者
没有设置延时,速度太快,人眼无法识别,建议增加200ms以上延时
回复

使用道具 举报

5#
ID:162136 发表于 2018-3-22 12:00 | 只看该作者
有效果,就是太快了你看不到,可以在 P2=0xff; 代码后加延时,后面的 P2=0x00; 也加相应的延时,就可以看到效果了。
回复

使用道具 举报

6#
ID:294610 发表于 2018-3-22 12:08 | 只看该作者
处理速度过快吧
回复

使用道具 举报

7#
ID:295410 发表于 2018-3-22 12:17 | 只看该作者
/*实现流水灯双向循环,并且在每次来回滚动后添加全亮或者全灭的闪烁效果
#include"reg52.h"

#include"intrins.h"

#define uint unsigned int

#define uchar unsigned char

inti,j;

voiddelay1ms(uint) ;

void delay1ms(uint) ;

voidmain()

{

while(1)

   {

   P2=0xfe;

        delay1ms(60);

  for(i=0;i<7;i++)  //注意左移六次而不是7次和8次。i=0为第一个灯跳到第二个灯后,第二个灯亮。所以为了跳到第八个灯,i=6;即i<7

  {

        P2=_crol_(P2,1);   

        delay1ms(60);

  }   

   for(j=0;j<7;j++)

  {

    P2=_cror_(P2,1);

        delay1ms(60);

   }

    P2=0xff;
delay1ms(500);//此处增加延时。即可看到预期效果
        P2=0x00;
delay1ms(500);//此处增加延时。即可看到预期效果
        P2=0xfe;   //为什么不能实现先全亮再全灭的效果?是因为一个口不能先后被多个数赋值吗,那应该如何解决
}


  }

voiddelay1ms(uint z)

{

        uint x,y;

        for(x=450;x>0;x--)

           for(y=z;y>0;y--);

}
回复

使用道具 举报

8#
ID:295821 发表于 2018-3-23 10:11 来自手机 | 只看该作者
一行下面加一个延时,人眼有视觉暂留
回复

使用道具 举报

9#
ID:296060 发表于 2018-3-23 17:25 | 只看该作者
不加延时,看不到效果的。。
回复

使用道具 举报

10#
ID:295783 发表于 2018-3-24 13:13 | 只看该作者
速度太快 肉眼无法察觉 建议修改延时
回复

使用道具 举报

11#
ID:234868 发表于 2018-3-24 14:20 | 只看该作者
人眼视觉暂留时间约为0.05至0.2秒,低于这个时间的变化人眼是看不到的。程序执行的太快了,肉眼分辨不出来,可以用示波器观察,看看指令有没有执行。
回复

使用道具 举报

12#
ID:296334 发表于 2018-3-24 14:46 | 只看该作者
程序没有问题,只是你的程序没加延时,跑起来人的肉眼很难看出,尝试加延时函数
回复

使用道具 举报

13#
ID:291974 发表于 2018-3-24 15:36 | 只看该作者
处理速度过快你没看到吧
回复

使用道具 举报

14#
ID:296395 发表于 2018-3-24 16:23 | 只看该作者
可能是速度太快人眼看不出来
回复

使用道具 举报

15#
ID:289989 发表于 2018-3-29 08:31 | 只看该作者
你可以试试蜂鸣器,一个样子的。没有延时感觉不出来的。
回复

使用道具 举报

16#
ID:298682 发表于 2018-3-29 09:36 | 只看该作者
LED显示屏闪烁原因:1.驱动加载程序不对2.电脑和屏之间胡网线太长或者网线故障3.发送卡坏了4.控制卡坏,查看一下控制卡上的小灯亮吗?要是不亮就坏了。5.电源与控制卡之间的连接线是否短路。6.电源的输出电压电流不稳定,带控制卡的电源不要带太多的板子。
回复

使用道具 举报

17#
ID:295783 发表于 2018-3-29 17:17 | 只看该作者
延时 注意延时 细节决定成败
回复

使用道具 举报

18#
ID:248705 发表于 2018-3-29 20:31 | 只看该作者
加个延时
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表