📄 ocmj8x15d_touch.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 + -