12864显示屏运行while函数是为什么总是闪烁。

2019-07-15 14:26发布

主程序:
void main(void)
{
     uint i,a,k1,k2,k3,b,c,d,e,f;a=0;b=0;c=0;d=0;e=0;f=0;
         port_init();
         Lcd_inital();  
         LcdWriteString(0,0,tab1);
         LcdWriteString(5,0,tab5);       
         LcdWriteString(0,1,tab2);
         LcdWriteString(5,1,tab5);
         LcdWriteString(0,2,tab3);
         LcdWriteString(5,2,tab5);

        while(1)
   {
          if((PINB&(1<<1))!=0)
          {
           if((PINB&(1<<2))!=0)
           {
        if((PINC&(1<<PC7))==0)
            {           
        b++;
        if(b>9)
         {
           b=0;
               a++;
         }
            }
           delay(5);                            
       if((PINC&(1<<PC6))==0)
           {         
             b--;
                 if(b<1)
                 {
                  b=9;a--;          
                 }                        
           }
          }
         }
         delay(5);
         if((PINB&(1<<1))==0)
           {
             if((PINC&(1<<PC7))==0)
             {           
           c++;
           if(c>9)
           {
             c=0;
                 d++;
           }
             }
                delay(5);                    
        if((PINC&(1<<PC6))==0)
             {                 
              c--;
                  if(c<1)
                  {
                   c=9;d--;          
                  }                        
             }
           }
         delay(5);
         if((PINB&(1<<2))==0)
           {
             if((PINC&(1<<PC7))==0)
             {   
           e++;
           if(e>9)
           {
             e=0;
                 f++;
           }
             }
                 delay(5);                     
         if((PINC&(1<<PC6))==0)
             {                 
              e--;
                  if(e<1)
                  {
                   e=9;f--;          
                  }                        
             }
           }
          delay(5);     
          WriteCommandLCM(0X83);  
      for(i=7;i<9;i++)   
       {     
         tab1[7]=d+0x30;
         tab1[8]=c+0x30;
         WriteDataLCM(tab2[i]);       
           }
          delay(5);
          WriteCommandLCM(0X93);
      for(i=7;i<9;i++)   
       {     
         tab2[7]=a+0x30;
         tab2[8]=b+0x30;
         WriteDataLCM(tab1[i]);       
           }
          delay(5);
          WriteCommandLCM(0X8B);  
      for(i=7;i<9;i++)   
       {     
         tab3[7]=f+0x30;
         tab3[8]=e+0x30;
         WriteDataLCM(tab3[i]);       
           }
      k2=a*10+b;
          k1=d*10+c;
          k3=f*10+e;
          delay(5);
          PORTD&=~TC;
          delay(k2);
          PORTD|=TC;
          delay(5);
          PORTB&=~(1<<4);
          delay(k1);
          PORTB|=(1<<4);
          delay(5);
          PORTD&=~(1<<2);
          delay(k3);
          PORTD|=(1<<2);
       
          
        }
          
       
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。