野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13828|回复: 2

实现LCD触摸屏点动方式!!求助

[复制链接]
发表于 2015-3-24 15:30:55 | 显示全部楼层 |阅读模式
void even_process(void)
{
        char lcd_char[20];
        switch(even)
        {
                case E_BUTTON1:                                                                        //LED1                                                       
               
                                if(red_button == S_OFF)               
                                {
                                        Lcd_show_bmp(38, 184,"/led/ui_r_button.bmp");                       
                                        //red_button = S_ON;                                                                                                                       
                                        LED1_TOGGLE;
                                        //Delay_ms(1000);
                                }
                                else                                                                               
                                {
                               
                                        red_button = S_OFF;                                                                                                                       
                                }        
                                        Lcd_show_bmp(38, 184,"/led/ui_rb_button.bmp");       
                                LED1_TOGGLE;                                                       
                                       
                                even = E_NULL;
                               
          break;
               
                case E_BUTTON2:                                                                                //LED2
                       
                                if(green_button == S_OFF)               
                                {
                                        Lcd_show_bmp(38, 95,"/led/ui_g_button.bmp");               
                                        green_button = S_ON;                                                                                                               
                                }
                                else                                                                                       
                                {
                                        Lcd_show_bmp(38, 95,"/led/ui_gb_button.bmp");                       
                                        green_button = S_OFF;                                                                                                                       
                                        }
               
                                LED2_TOGGLE;
                               
                                even = E_NULL;
               
                break;
               
                case E_BUTTON3:                                                                                        //LED3
                       
                                if(yellow_button == S_OFF)               
                                {
                                        Lcd_show_bmp(38, 11,"/led/ui_y_button.bmp");                       
                                        yellow_button = S_ON;                                                                                                                       
                                }
                                else                                                                                       
                                {
                                        Lcd_show_bmp(38, 11,"/led/ui_yb_button.bmp");               
                                        yellow_button = S_OFF;                                                                                                       
                                        }       
               
                                LED3_TOGGLE;
               
                                even = E_NULL;
               
                break;
               
                case E_GETCHAR:                                                               
                        if(recv_char == 0)                                       
                        {
                                Lcd_GramScan( 1 );
                                LCD_DispEnCh(20,180,"ûóD½óêÕμ½′®¿úêy¾Y",BLUE);
                        }
                        else       
                        {                       
        Lcd_GramScan( 1 );
        LCD_Clear(20,180,180,16,BACKGROUND)        ;                                       
        sprintf(lcd_char,"′®¿úêy¾Y:%c",recv_char);       
        LCD_DispEnCh(20,180,lcd_char,BLUE);                                       
                        }
                       
                        even = E_NULL;
               
                break;
               
                default:
                        break;
        }
}


/**
  * @brief  touch_processÖ
  * @param  ÎT  
  * @retval ÎT
  */
void touch_process(void)
{
         if(touch_flag == 1)                                                                                                       
    {               

      if(Get_touch_point(&display, Read_2046_2(), &touch_para ) !=DISABLE)      
      {               
                                printf("\r\n x=%d,y=%d",display.x,display.y);
                               
                                       
                                        if(display.x>=34 && display.x<=76)                                       
                                                {
                                                if(display.y>=15 && display.y<=46)                                // LED1
                                                {
                                                                even = E_BUTTON1;
                                                                printf("\r\n LED1");
                                          }
                                                else if(display.y>=100 && display.y<=135)        // LED2
                                                {
                                                                even = E_BUTTON2;
                                                                printf("\r\n LED2");
                                                }
                                                else if(display.y>=182 && display.y<=216)        // LED3
                                                {
                                                                even = E_BUTTON3;
                                                                printf("\r\n LED3");
                                                }       
                                }
                        }                               
                }
}
中断
void EXTI9_5_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line9) != RESET)
  {       
                        //Delay_ms(1000);

    touch_flag=1;
                touch_process();
    EXTI_ClearITPendingBit(EXTI_Line9);
  }
}
以上是LCD触摸屏控制LED灯的案例(点一次LED灯开,点一次LED灭).我想实现点动的方式,(一直点LED亮,松开就灭了),求大神指教怎么修改程序!!!

回复

使用道具 举报

发表于 2015-3-24 19:54:57 | 显示全部楼层
按键按下后用死循环轮询触摸屏
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-25 08:08:06 | 显示全部楼层
火哥能否举个例子???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-30 03:26 , Processed in 0.033419 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表