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

📄 ocmj8x15d_touch.lst

📁 触摸屏的中断控制程序
💻 LST
字号:
C51 COMPILER V7.01  OCMJ8X15D_TOUCH                                                        04/05/2006 16:37:59 PAGE 1   


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

stmt level    source

   1           //中断方式
   2          //==============================================================================
   3          //本触摸屏程序只适用于金鹏公司D型液晶模块,显示点数按OCMJ8X15D液晶模块显示,即240X128点阵显示。
   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          uchar code tab2[] = "No-Touch!!";
  14          uchar code tab3[] = "Touch-Now!";
  15          
  16          //==============================================================================
  17          void Get_Touch_XY(void)
  18          {
  19   1              uchar temp;
  20   1              uint X1, X2, Y1 ,Y2;
  21   1              
  22   1              lcd_regwrite(0xc0, 0xc0);//touch on
  23   1              
  24   1              Y1 = Touch_Y();
  25   1              X1 = Touch_X();
  26   1                      
  27   1              Delay1ms(2);
  28   1                              
  29   1              if(Test_Touch())
  30   1              {       
  31   2                      Y2 = Touch_Y();
  32   2                      X2 = Touch_X();
  33   2                      
  34   2                      if((X1==X2) && (Y1==Y2))
  35   2                      {       
  36   3                              /*已获得确实的触摸坐标X1、Y1*/
  37   3                              
  38   3                              gotoxy(10, 32);
  39   3                              LCD_Bold();
  40   3                              for(temp=0 ; temp<11 ; temp++)
  41   3                              {       
  42   4                                      lcd_datawrite(tab3[temp]);
  43   4                              }
  44   3                              gotoxy(14, 48);
  45   3                              Print_Hex(X1);
  46   3                              gotoxy(14, 64);
  47   3                              Print_Hex(Y1);
  48   3                              LCD_NoBold();
  49   3                              
  50   3                              //delay1 (100);
  51   3                              Delay1ms(1);
  52   3                      }
  53   2              }
  54   1              lcd_regwrite(0xc0, 0x00);//touch off
  55   1              
C51 COMPILER V7.01  OCMJ8X15D_TOUCH                                                        04/05/2006 16:37:59 PAGE 2   

  56   1              gotoxy(10, 32);
  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<149 ; 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        =   1181    ----
   CONSTANT SIZE    =    173    ----
C51 COMPILER V7.01  OCMJ8X15D_TOUCH                                                        04/05/2006 16:37:59 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 + -