📄 cmpmnckj.lst
字号:
C51 COMPILER V7.07 CMPMNCKJ 09/13/2007 12:26:26 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE CMPMNCKJ
OBJECT MODULE PLACED IN CMPMNCKJ.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CMPMNCKJ.C BROWSE INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTEXTEND
stmt level source
1 //本程序为Franklin/keil C51源程序,可以在所有51系列(或兼容)单片机中运行。
2 //完成功能:使用任意2个引脚模拟串行接口,实现对触摸屏控制器数据的接收
3 // 和对KY系列智能液晶终端进行控制.
4 //程序中给出了设计方法,通过修改TIMEzq使本程序适用于各种晶振及各种波特率.
5 //本例为:当通讯波特率=9600Hz,单片机晶振=18.432MHz时,TIMEzq=50
6 // 使用P3.0模拟串口输入,使用P3.1模拟串口输出,使用P1.2检测"忙"信号.
7 //本程序在Wave For windows ver 2.80仿真软件编译成功。
8 //在AT89C51(9600Hz,18.432MHz)中运行通过.运行结果是:可更改6位十进制数的触摸键盘.
9 //本程序运行需以下8个汉字,应运行前下载到字符集3中(12*12,代码为B8H-BFH)
10 // "取消"(B8H B9H) "增加"(BAH BBH) "减少"(BCH BDH) "确认"(BEH BFH)
11 //=========================================================================================
12 #include "reg51.h"
13 #define uchar unsigned char
14 #define uint unsigned int
15 sbit CMP_DATA =P1^7; //由此接收触摸屏发出的串行数据,可以使用任一引脚.
16 sbit ZD_DATA =P1^1; //向液晶终端输出串行数据,使用模拟串口输出数据时,可以使用任一引脚.
17 sbit ZD_BUSY =P1^3; //接收液晶终端发来的"忙"(BUSY)信号,可以连接于任意一位输入引脚上.
18 //=========================================================================================
19 bdata char DATA;
20 sbit mb0=DATA^0;
21 sbit mb1=DATA^1;
22 sbit mb2=DATA^2;
23 sbit mb3=DATA^3;
24 sbit mb4=DATA^4;
25 sbit mb5=DATA^5;
26 sbit mb6=DATA^6;
27 sbit mb7=DATA^7;
28 //=========================================================================================
29 #define TIMEzq 29 //修改TIMEzq可使本程序适用于各种晶振及各种波特率.计算方法见文件尾。
30 //本例:AT89C51(9600Hz,11.0592MHz)时 TIMEzq=29
31 uint Xzsj,Yzsj;
32 //=========================================================================================
33 uint Xzb,Yzb;//X坐标在Xzb中,Y坐标在Yzb中
34 //延时函数TIME()
35 //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
36 void TIME(void)
37 {
38 1 uchar i;
39 1 for(i=0;i<TIMEzq;i++);
40 1 }
41 //=========================================================================================
42 //延时函数TIME1B()
43 //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
44 void TIME1B(void)
45 {
46 1 uchar i;
47 1 for(i=0;i<(TIMEzq/2);i++);
48 1 }
49 //=========================================================================================
50 //将sj(仅低4位有效)转换为对应的ASCII码
51 uchar zh16(uint sj)
52 {
53 1 uchar sj1;
54 1 sj1=sj&0x0f;
55 1 if (sj1>=0x0a) sj1=sj1+7;
C51 COMPILER V7.07 CMPMNCKJ 09/13/2007 12:26:26 PAGE 2
56 1 sj1=sj1+0x30;
57 1 return sj1;
58 1 }
59 //=========================================================================================
60 //向终端发送一字节数据
61 //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
62 void FSsj(uchar sj)
63 {
64 1 while(ZD_BUSY);
65 1 ZD_DATA =0; //起始位=0
66 1 TIME();
67 1 ZD_DATA =sj&1; //D0;12+24+24+24
68 1 TIME();
69 1 ZD_DATA =sj&2; //D1
70 1 TIME();
71 1 ZD_DATA =sj&4; //D2
72 1 TIME();
73 1 ZD_DATA =sj&8; //D3
74 1 TIME();
75 1 ZD_DATA =sj&0x10; //D4
76 1 TIME();
77 1 ZD_DATA =sj&0x20; //D5
78 1 TIME();
79 1 ZD_DATA =sj&0x40; //D6
80 1 TIME();
81 1 ZD_DATA =sj&0x80; //D7
82 1 TIME();
83 1 ZD_DATA =0; //奇偶位=0
84 1 TIME();
85 1 ZD_DATA =1; //停止位=1
86 1 TIME();
87 1 }
88 //=========================================================================================
89 //用CMP_DATA模拟串口接收数据
90 //为了得到精确的延时时间,不要修改本函数的形式,绝对不要修改!
91 //读触摸屏1个字节
92 uchar JSsj(void)
93 {
94 1 while(CMP_DATA); //CMP_DATA=1,则等待.
95 1 TIME1B();
96 1 TIME();
97 1 mb0=CMP_DATA; //D0
98 1 TIME();
99 1 mb1=CMP_DATA; //D1
100 1 TIME();
101 1 mb2=CMP_DATA; //D2
102 1 TIME();
103 1 mb3=CMP_DATA; //D3
104 1 TIME();
105 1 mb4=CMP_DATA; //D4
106 1 TIME();
107 1 mb5=CMP_DATA; //D5
108 1 TIME();
109 1 mb6=CMP_DATA; //D6
110 1 TIME();
111 1 mb7=CMP_DATA; //D7
112 1 TIME();
113 1 TIME();
114 1 return DATA;
115 1 }
116
117 //===========================================
C51 COMPILER V7.07 CMPMNCKJ 09/13/2007 12:26:26 PAGE 3
118 uchar h6jp(void)//画出6位数字键盘
119 {
120 1 FSsj(0X1B);//最大矩形 'j' 的ASCII码为6A
121 1 FSsj('j');
122 1 FSsj((0X9000+Xzsj)>>8); //定义矩形的左上角坐标
123 1 FSsj(Xzsj);
124 1 FSsj(Yzsj>>8);
125 1 FSsj(Yzsj);
126 1 FSsj((Xzsj+242)>>8);
127 1 FSsj(Xzsj+242);
128 1 FSsj((Yzsj+86)>>8);
129 1 FSsj(Yzsj+86);
130 1
131 1 FSsj(0X1B);//矩形
132 1 FSsj('j');
133 1 FSsj((0X9000+Xzsj+2)>>8);
134 1 FSsj(Xzsj+2);
135 1 FSsj(Yzsj+2>>8);
136 1 FSsj(Yzsj+2);
137 1 FSsj((Xzsj+242-2)>>8);
138 1 FSsj(Xzsj+242-2);
139 1 FSsj((Yzsj+86-2)>>8);
140 1 FSsj(Yzsj+86-2);
141 1
142 1 FSsj(0X1B);//1#按键
143 1 FSsj('j');
144 1 FSsj((0X9000+Xzsj+2+4)>>8);
145 1 FSsj(Xzsj+2+4);
146 1 FSsj(Yzsj+2+4>>8);
147 1 FSsj(Yzsj+2+4);
148 1 FSsj((Xzsj+2+4+35)>>8);
149 1 FSsj(Xzsj+2+4+35);
150 1 FSsj(Yzsj+2+4+35>>8);
151 1 FSsj(Yzsj+2+4+35);
152 1
153 1 FSsj(0X1B);//2#按键
154 1 FSsj('j');
155 1 FSsj((0X9000+Xzsj+2+4+35+4)>>8);
156 1 FSsj(Xzsj+2+4+35+4);
157 1 FSsj(Yzsj+2+4>>8);
158 1 FSsj(Yzsj+2+4);
159 1 FSsj((Xzsj+2+4+35+35+4)>>8);
160 1 FSsj(Xzsj+2+4+35+35+4);
161 1 FSsj(Yzsj+2+4+35>>8);
162 1 FSsj(Yzsj+2+4+35);
163 1
164 1 FSsj(0X1B);//3#按键
165 1 FSsj('j');
166 1 FSsj((0X9000+Xzsj+2+4+(35+4)*2)>>8);
167 1 FSsj(Xzsj+2+4+(35+4)*2);
168 1 FSsj(Yzsj+2+4>>8);
169 1 FSsj(Yzsj+2+4);
170 1 FSsj((Xzsj+2+4+35+(35+4)*2)>>8);
171 1 FSsj(Xzsj+2+4+35+(35+4)*2);
172 1 FSsj(Yzsj+2+4+35>>8);
173 1 FSsj(Yzsj+2+4+35);
174 1
175 1 FSsj(0X1B);//4#按键
176 1 FSsj('j');
177 1 FSsj((0X9000+Xzsj+2+4+(35+4)*3)>>8);
178 1 FSsj(Xzsj+2+4+(35+4)*3);
179 1 FSsj(Yzsj+2+4>>8);
C51 COMPILER V7.07 CMPMNCKJ 09/13/2007 12:26:26 PAGE 4
180 1 FSsj(Yzsj+2+4);
181 1 FSsj((Xzsj+2+4+35+(35+4)*3)>>8);
182 1 FSsj(Xzsj+2+4+35+(35+4)*3);
183 1 FSsj(Yzsj+2+4+35>>8);
184 1 FSsj(Yzsj+2+4+35);
185 1
186 1 FSsj(0X1B);//5#按键
187 1 FSsj('j');
188 1 FSsj((0X9000+Xzsj+2+4+(35+4)*4)>>8);
189 1 FSsj(Xzsj+2+4+(35+4)*4);
190 1 FSsj(Yzsj+2+4>>8);
191 1 FSsj(Yzsj+2+4);
192 1 FSsj((Xzsj+2+4+35+(35+4)*4)>>8);
193 1 FSsj(Xzsj+2+4+35+(35+4)*4);
194 1 FSsj(Yzsj+2+4+35>>8);
195 1 FSsj(Yzsj+2+4+35);
196 1
197 1 FSsj(0X1B);//6#按键
198 1 FSsj('j');
199 1 FSsj((0X9000+Xzsj+2+4+(35+4)*5)>>8);
200 1 FSsj(Xzsj+2+4+(35+4)*5);
201 1 FSsj(Yzsj+2+4>>8);
202 1 FSsj(Yzsj+2+4);
203 1 FSsj((Xzsj+2+4+35+(35+4)*5)>>8);
204 1 FSsj(Xzsj+2+4+35+(35+4)*5);
205 1 FSsj(Yzsj+2+4+35>>8);
206 1 FSsj(Yzsj+2+4+35);
207 1
208 1 FSsj(0X1B); //调用字符集3
209 1 FSsj(0X33);
210 1 FSsj(0X1B); //设置字符旋转方向
211 1 FSsj(0X66);
212 1 FSsj(0X04);
213 1
214 1 FSsj(0X1B);//7#按键:"取消"(B8H B9H)
215 1 FSsj('j');
216 1 FSsj((0X9000+Xzsj+2+4)>>8);
217 1 FSsj(Xzsj+2+4);
218 1 FSsj(Yzsj+2+4+35+4>>8);
219 1 FSsj(Yzsj+2+4+35+4);
220 1 FSsj((Xzsj+2+4+35)>>8);
221 1 FSsj(Xzsj+2+4+35);
222 1 FSsj(Yzsj+2+4+35+35+4>>8);
223 1 FSsj(Yzsj+2+4+35+35+4);
224 1 FSsj(0X1B);
225 1 FSsj('z');//设置系统坐标及字体颜色
226 1 FSsj((0X9000+Xzsj+2+4+5)>>8);
227 1 FSsj(Xzsj+2+4+5);
228 1 FSsj((0X8000+Yzsj+2+4+35+4+11)>>8);
229 1 FSsj(Yzsj+2+4+35+4+11);
230 1 FSsj(0XB8);
231 1 FSsj(0XB9);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -