TFTLCD屏幕刷新问题

2019-07-21 01:55发布

有没有大佬帮我看看,我想做一个电子时钟,用TFTLCD屏幕来做,但是遇到一个问题,就是我在循环函数里若加延时则大大影响了按键的效果,若不加延时则一直在快速刷新,一直在闪,我知道是什么问题,但是不知道怎么去解决,有没有大佬知道怎么解决。以下是本人程序,

#include "stm32f10x.h"
#include "led.h"
#include "time.h"
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "key.h"

u16 shi=0,fen=0,miao=0,a=0,b;
void key_can();

void TIM2_IRQHandler()
{
   if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
         {         
                   miao++;
                   if(miao==60)
                         {
                 miao=0;
           fen++;
           if(fen==60)
                                         {
                                            fen=0;
              shi++;
              if(shi==24)
                                                        {
                               shi=0;                                       
                                                        }                                                               
                                         }                                                 
                         }
                                      LED1=!LED1;
       TIM_ClearITPendingBit(TIM2,TIM_IT_Update);                 
         }
}

int main()
{

          delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
          uart_init(115200);
          LED_Init();
          LCD_Init();
          KEY_Init();
          TIM_Init(9999,7199);
          POINT_COLOR=RED;       
          while(1)
                {
       key_can();                               
                   LCD_Clear(BLUE);       
                   LCD_ShowxNum(210,0,miao,2,24,0x81);
                        LCD_ShowChar(195,0,':',24,1);
                   LCD_ShowxNum(170,0,fen,2,24,0x81);       
                        LCD_ShowChar(155,0,':',24,1);                       
                   LCD_ShowxNum(130,0,shi,2,24,0x81);                               
             LED0=!LED0;                       
       delay_ms(500);                       
                }
}

void key_can()
{
                         b=KEY_Scan(0);
                         if(b==3)
                         {
                                 delay_ms(10);
                      a++;                                 
          if(a==2)
                                        {
                      a=0;                               
                                        }                                               
                         }
                         if(a==0)
                         {
                TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//DISABLE  ENABLE                                
                         }
                         if(a==1)
                         {
                TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE);//DISABLE  ENABLE                                 
                         }
}



有没有大佬帮忙解决,或者能不能提供一个用stm32f10系列 TFTLCD屏的电子钟实验程序我参考参考,谢谢谢谢谢谢。

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