⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocmj15x20d_touch.lst

📁 触摸屏中断控制程序
💻 LST
字号:
C51 COMPILER V7.01  OCMJ15X20D_TOUCH                                                       03/28/2006 17:16:33 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE OCMJ15X20D_TOUCH
OBJECT MODULE PLACED IN OCMJ15X20D_touch.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE OCMJ15X20D_touch.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1           //中断方式
   2          //==============================================================================
   3          //本触摸屏程序只适用于金鹏公司D型液晶模块,显示点数按OCMJ15X20D液晶模块显示,即320X240点阵显示。
   4          //本程序利用液晶模块的触摸屏中断信号输出到lcd_int脚由MCU的INT0接收。
   5          //==============================================================================
   6          #include "init.c"
   7          
   8          uchar code tab1[] = "      金鹏电子有限公司D系列液晶模块    "
   9                              "          内嵌触摸屏功能演示程序        "
  10                              "              No-Touch!!                "
  11                              "               X=                       "
  12                              "               Y=                       ";
  13                              
  14          uchar code tab2[] = "No-Touch!!";
  15          uchar code tab3[] = "Touch-Now!";
  16          
  17          //==============================================================================
  18          void Get_Touch_XY(void)
  19          {
  20   1              uchar temp;
  21   1              uint X1, X2, Y1 ,Y2;
  22   1              
  23   1              lcd_regwrite(0xc0, 0xc0);//touch on,打开ADC
  24   1              
  25   1              Y1 = Touch_Y();
  26   1              X1 = Touch_X();
  27   1                      
  28   1              Delay1ms(2);
  29   1                              
  30   1              if(Test_Touch())
  31   1              {       
  32   2                      Y2 = Touch_Y();
  33   2                      X2 = Touch_X();
  34   2                      
  35   2                      if((X1==X2) && (Y1==Y2))
  36   2                      {       
  37   3                              /*已获得确实的触摸坐标X1、Y1*/
  38   3                              
  39   3                              gotoxy(14, 64);
  40   3                              LCD_Bold();
  41   3                              for(temp=0 ; temp<11 ; temp++)
  42   3                              {       
  43   4                                      lcd_datawrite(tab3[temp]);
  44   4                              }
  45   3                              gotoxy(18, 96);
  46   3                              Print_Hex(X1);
  47   3                              gotoxy(18, 128);
  48   3                              Print_Hex(Y1);
  49   3                              LCD_NoBold();
  50   3                              
  51   3                              delay1 (100);
  52   3                      }
  53   2              }
  54   1              lcd_regwrite(0xc0, 0x00);//touch off,关闭ADC对显示质量的干扰
  55   1              
C51 COMPILER V7.01  OCMJ15X20D_TOUCH                                                       03/28/2006 17:16:33 PAGE 2   

  56   1              gotoxy(14, 64);
  57   1              for(temp=0 ; temp<11 ; temp++)
  58   1              {       
  59   2                      lcd_datawrite(tab2[temp]);
  60   2              }
  61   1      }
  62          
  63          //==============================================================================
  64          void lcd_touch_init(void)
  65          {       
  66   1              uchar temp;
  67   1              
  68   1              temp=lcd_regread(0xa0)|0x04;//enable lcd touch int
  69   1              lcd_regwrite(0xa0, temp);
  70   1                      
  71   1      }
  72          //==============================================================================
  73          void Ext_int0(void) interrupt 0
  74          {
  75   1              EA=0;
  76   1              
  77   1              if(0x40==(lcd_regread(0xa0)&0x40))      //test bit6 touch int is "1"?
  78   1              {
  79   2                      Get_Touch_XY();
  80   2              }
  81   1              EA=1;
  82   1      }
  83          /******************************************************************************/
  84          /*Main program                                                                                                                    */
  85          /******************************************************************************/
  86          void main(void)
  87          {
  88   1              uchar temp;
  89   1                      
  90   1              lcd_reset();
  91   1              lcd_initial();
  92   1              lcd_clear();
  93   1              
  94   1              lcd_touch_init();
  95   1              
  96   1              lcd_regwrite(0x10,0x6b);
  97   1              lcd_regwrite(0x00,0xcd);
  98   1              
  99   1              gotoxy(0, 0);
 100   1              for(temp=0 ; temp<199 ; temp++)
 101   1              {       
 102   2                      lcd_datawrite(tab1[temp]);
 103   2              }
 104   1              
 105   1              IT0=1;
 106   1              EA=1;
 107   1              EX0=1;
 108   1              
 109   1              while(1);
 110   1      
 111   1      }
 112                          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1183    ----
   CONSTANT SIZE    =    223    ----
C51 COMPILER V7.01  OCMJ15X20D_TOUCH                                                       03/28/2006 17:16:33 PAGE 3   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -