標題: 新人請教一個51單片機動態(tài)閃爍問題 [打印本頁]

作者: 東窗西望兩茫然    時間: 2017-10-25 12:57
標題: 新人請教一個51單片機動態(tài)閃爍問題
學習版上用的是鎖存器,主函數(shù)如下

第一個數(shù)碼管閃爍很厲害,我把按鍵延遲調(diào)低很好些,但是這樣按鍵一按就是好幾個數(shù),按鍵延時調(diào)高,按鍵上是好了很多但是第一個數(shù)碼管可以非常慢的速度閃爍。感覺就是從上到下的執(zhí)行時間太長了。。。。。主程序里我還加了儲存,無視好了

void main()
{

       while(1)
       {
                                                        unsigned char buf[2];

                                                        E2Read(buf, 0x80, 2);
                                                        ge = buf[0];
                                                        shi = buf[1];
                                                        if ( ge>9 )
                                                        { ge=0; }
                                                        if ( shi>9 )
                                                        { shi=0; }

                                                   

                            wei=1;
                            P0=0xfe;
                            wei=0;
                            duan=1;
                            P0=LedChar[shi];
                            Delay(10);
                            duan=0;

                            wei=1;
                            P0=0xfd;
                            wei=0;
                            duan=1;
                            P0=LedChar[ge];
                            Delay(10);
                            duan=0;

                                                

                                                        if(k1==1)
                                                        {
                                                        Delay(15);
                                                        if(k1==1)
                                                        {
                                                         ge++;
                                                         if(ge>9)
                                                         {
                                                           ge=0;
                                                           shi++;
                                                          if(shi>9)
                                                         {
                                                             shi=0;
                                                         }
                                                         }
                                                        }

                                                         buf[0] = ge;
                                      buf[1] = shi;
         
                                 E2Write(buf, 0x80, 2);

                                                        }


                                                    if(k2==1)
                                                        {
                                                        Delay(15);
                                                        if(k2==1)
                                                        {
                                                         ge--;
                                                         if(ge<0)
                                                         {
                                                           ge=9;
                                                           shi--;
                                                           if(shi<0)
                                                         {                                       
                                                             shi=9;
                                                         }
                                                         }
                                                        }

                                                         buf[0] = ge;
                                      buf[1] = shi;
         
                                 E2Write(buf, 0x80, 2);

                                                        }

           }
}



作者: jden    時間: 2017-10-25 13:54
通過位選信號控制8段數(shù)碼管,用switch函數(shù)實現(xiàn)。
作者: jden    時間: 2017-10-25 13:57
通過位選信號信號控制8段數(shù)碼管顯示,使用switch函數(shù)實現(xiàn),另外,各種參數(shù)取名太草率了吧。!
作者: 東窗西望兩茫然    時間: 2017-10-25 17:25
jden 發(fā)表于 2017-10-25 13:57
通過位選信號信號控制8段數(shù)碼管顯示,使用switch函數(shù)實現(xiàn),另外,各種參數(shù)取名太草率了吧。!

改成這個樣子,原來一個 閃,現(xiàn)在兩個閃,很有規(guī)律的一亮一滅、、、、、
                             switch(i)
                                  {
                                   case 0 : wei=1;P0=0xfe;wei=0;duan=1;P0=LedChar[shi];duan=0;i=1;break;
                                   case 1 : wei=1;P0=0xfd;wei=0;duan=1;P0=LedChar[ge];duan=0;i=0;break;
                                   default: break;
                                  }  
作者: 東窗西望兩茫然    時間: 2017-10-25 18:52
jden 發(fā)表于 2017-10-25 13:57
通過位選信號信號控制8段數(shù)碼管顯示,使用switch函數(shù)實現(xiàn),另外,各種參數(shù)取名太草率了吧。!

改成這樣不行呀                                
                                  switch(i)
                                  {
                                   case 0 : wei=1;P0=0xfe;wei=0;duan=1;P0=LedChar[shi];duan=0;i=1;break;
                                   case 1 : wei=1;P0=0xfd;wei=0;duan=1;P0=LedChar[ge];duan=0;i=0;break;
                                   default: break;
                                  }     




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1