找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4028|回復: 17
收起左側(cè)

關(guān)于led雙向來回閃爍中的小問題 感謝

  [復制鏈接]
回帖獎勵 40 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次(中獎概率 50%)
ID:278709 發(fā)表于 2018-3-22 07:35 | 顯示全部樓層 |閱讀模式

/*實現(xiàn)流水燈雙向循環(huán),并且在每次來回滾動后添加全亮或者全滅的閃爍效果
#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;   //為什么不能實現(xiàn)先全亮再全滅的效果?是因為一個口不能先后被多個數(shù)賦值嗎,那應該如何解決
}


  }

voiddelay1ms(uint z)

{

        uint x,y;

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

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

}



回復

使用道具 舉報

ID:111634 發(fā)表于 2018-3-22 10:00 | 顯示全部樓層
先看看別人正確的程序!
回復

使用道具 舉報

ID:193818 發(fā)表于 2018-3-22 10:29 | 顯示全部樓層
P2=0xff;

        P2=0x00;

        P2=0xfe;   //為什么不能實現(xiàn)先全亮再全滅的效果?是因為一個口不能先后被多個數(shù)賦值嗎,那應該如何解決

試問一下,就算如果有效果,你能看的見么。你仔細算算一條代碼的處理速度。
回復

使用道具 舉報

ID:212177 發(fā)表于 2018-3-22 11:42 來自觸屏版 | 顯示全部樓層
沒有設(shè)置延時,速度太快,人眼無法識別,建議增加200ms以上延時
回復

使用道具 舉報

ID:162136 發(fā)表于 2018-3-22 12:00 | 顯示全部樓層
有效果,就是太快了你看不到,可以在 P2=0xff; 代碼后加延時,后面的 P2=0x00; 也加相應的延時,就可以看到效果了。
回復

使用道具 舉報

ID:294610 發(fā)表于 2018-3-22 12:08 | 顯示全部樓層
處理速度過快吧
回復

使用道具 舉報

ID:295410 發(fā)表于 2018-3-22 12:17 | 顯示全部樓層
/*實現(xiàn)流水燈雙向循環(huán),并且在每次來回滾動后添加全亮或者全滅的閃爍效果
#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;   //為什么不能實現(xiàn)先全亮再全滅的效果?是因為一個口不能先后被多個數(shù)賦值嗎,那應該如何解決
}


  }

voiddelay1ms(uint z)

{

        uint x,y;

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

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

}
回復

使用道具 舉報

ID:295821 發(fā)表于 2018-3-23 10:11 來自觸屏版 | 顯示全部樓層
一行下面加一個延時,人眼有視覺暫留
回復

使用道具 舉報

ID:296060 發(fā)表于 2018-3-23 17:25 | 顯示全部樓層
不加延時,看不到效果的。。
回復

使用道具 舉報

ID:295783 發(fā)表于 2018-3-24 13:13 | 顯示全部樓層
速度太快 肉眼無法察覺 建議修改延時
回復

使用道具 舉報

ID:234868 發(fā)表于 2018-3-24 14:20 | 顯示全部樓層
人眼視覺暫留時間約為0.05至0.2秒,低于這個時間的變化人眼是看不到的。程序執(zhí)行的太快了,肉眼分辨不出來,可以用示波器觀察,看看指令有沒有執(zhí)行。
回復

使用道具 舉報

ID:296334 發(fā)表于 2018-3-24 14:46 | 顯示全部樓層
程序沒有問題,只是你的程序沒加延時,跑起來人的肉眼很難看出,嘗試加延時函數(shù)
回復

使用道具 舉報

ID:291974 發(fā)表于 2018-3-24 15:36 | 顯示全部樓層
處理速度過快你沒看到吧
回復

使用道具 舉報

ID:296395 發(fā)表于 2018-3-24 16:23 | 顯示全部樓層
可能是速度太快人眼看不出來
回復

使用道具 舉報

ID:289989 發(fā)表于 2018-3-29 08:31 | 顯示全部樓層
你可以試試蜂鳴器,一個樣子的。沒有延時感覺不出來的。
回復

使用道具 舉報

ID:298682 發(fā)表于 2018-3-29 09:36 | 顯示全部樓層
LED顯示屏閃爍原因:1.驅(qū)動加載程序不對2.電腦和屏之間胡網(wǎng)線太長或者網(wǎng)線故障3.發(fā)送卡壞了4.控制卡壞,查看一下控制卡上的小燈亮嗎?要是不亮就壞了。5.電源與控制卡之間的連接線是否短路。6.電源的輸出電壓電流不穩(wěn)定,帶控制卡的電源不要帶太多的板子。
回復

使用道具 舉報

ID:295783 發(fā)表于 2018-3-29 17:17 | 顯示全部樓層
延時 注意延時 細節(jié)決定成敗
回復

使用道具 舉報

ID:248705 發(fā)表于 2018-3-29 20:31 | 顯示全部樓層
加個延時
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表