标题: 新人请教一个51单片机动态闪烁问题 [打印本页]

作者: 东窗西望两茫然    时间: 2017-10-25 12:57
标题: 新人请教一个51单片机动态闪烁问题
学习版上用的是锁存器,主函数如下

第一个数码管闪烁很厉害,我把按键延迟调低很好些,但是这样按键一按就是好几个数,按键延时调高,按键上是好了很多但是第一个数码管可以非常慢的速度闪烁。感觉就是从上到下的执行时间太长了。。。。。主程序里我还加了储存,无视好了

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段数码管,用switch函数实现。
作者: jden    时间: 2017-10-25 13:57
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!
作者: 东窗西望两茫然    时间: 2017-10-25 17:25
jden 发表于 2017-10-25 13:57
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!

改成这个样子,原来一个 闪,现在两个闪,很有规律的一亮一灭、、、、、
                             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 发表于 2017-10-25 13:57
通过位选信号信号控制8段数码管显示,使用switch函数实现,另外,各种参数取名太草率了吧!!!

改成这样不行呀                                
                                  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.51hei.com/bbs/) Powered by Discuz! X3.1