📄 main.lst
字号:
211 1 return(reg_rddata);
212 1
213 1 }
214 //=============================================
215 void LCD_Reset(void)
216 {
217 1 DelayL(10); // delay 120ms 等待上电复位
218 1 LCD_COMMAND &=LCD_RST_ENABLE; // RST置低电平
219 1 DelayL(10);
220 1 LCD_COMMAND |=LCD_RST_DISABLE; // RST置高电平
221 1 DelayL(10);
222 1
223 1 }
224
225 void lcd_regwrite(uchar regname,uchar regdata)
226 { //写资料到缓存器
227 1 lcd_regwr(regname);
228 1 DelayS(1);
229 1 lcd_regwr(regdata);
230 1 }
231 //.............................................
232 void lcd_initial(void)
233 { //初始化
234 1 lcd_regwrite(0x00,0xc9); // lcd control register(lcr)
235 1 lcd_regwrite(0x01,0xe2); // misc.register(mir)
236 1 lcd_regwrite(0x02,0x10); // advance power setup register(apsr)
237 1 lcd_regwrite(0x03,0x80); // advance display setup regiser(adsr)
238 1 lcd_regwrite(0x10,0x69); // cursor control register(ccr)
239 1 lcd_regwrite(0x11,0x00); // distance of word or lines register(dwlr)
240 1 lcd_regwrite(0x12,0x91); // memory access mode register(awrr)
241 1 lcd_regwrite(0x21,0x27); // display window right register(dwrr)
C51 COMPILER V7.20 MAIN 04/03/2008 10:48:30 PAGE 5
242 1 lcd_regwrite(0x31,0xef); // display window bottom register(dwbr)
243 1 lcd_regwrite(0x41,0x00); // display window left register(dwlr)
244 1 lcd_regwrite(0x51,0x00); // display window top register(dwtr)
245 1 lcd_regwrite(0x20,0x27); // active window right register(awrr)
246 1 lcd_regwrite(0x30,0xef); // active window bottom register(awbr)
247 1 lcd_regwrite(0x40,0x00); // active window left register(awlr)
248 1 lcd_regwrite(0x50,0x00); // active window top register(awtr)
249 1 lcd_regwrite(0x60,0x00); // cursor position x register(cpxr)
250 1 lcd_regwrite(0x61,0x00); // begin segment position register(bgsg)
251 1 lcd_regwrite(0x70,0x00); // cursor position y register(cpyr)
252 1 lcd_regwrite(0x71,0x00); // shift action range,begin commom register(bgcm)
253 1 lcd_regwrite(0x72,0xef); // shift action range,end commom register(edcm)
254 1 lcd_regwrite(0x80,0xaa); // blink time register(btr)
255 1 lcd_regwrite(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
256 1 lcd_regwrite(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
257 1 lcd_regwrite(0x90,0x06); // shift clock control register(sccr)
258 1 lcd_regwrite(0xa0,0x11); // interrupt setup & status register(frcb)
259 1 lcd_regwrite(0xa1,0x00); // key scan control register(kscr)
260 1 lcd_regwrite(0xa2,0x00); // key scan data register(ksdr)
261 1 lcd_regwrite(0xa3,0x00); // key scan data expand register(kser)
262 1 lcd_regwrite(0xb0,0x27); // interrupt column setup register(intx)
263 1 lcd_regwrite(0xb1,0xef); // interrupt row setup register(inty)
264 1 lcd_regwrite(0xc0,0x00); // touch panel control register(tpcr)
265 1 lcd_regwrite(0xc1,0x24); // adc status register(adcs)
266 1 lcd_regwrite(0xc8,0x80); // touch panel segment high byte data register(tpxr)
267 1 lcd_regwrite(0xc9,0x80); // touch panel common high byte data register(tpyr)
268 1 lcd_regwrite(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
269 1 lcd_regwrite(0xd0,0x80); // lcd contrast control register (lccr)
270 1 lcd_regwrite(0xe0,0x00); // pattern data register(pdr)
271 1 lcd_regwrite(0xf0,0xa0); // font control register(fcr)
272 1 lcd_regwrite(0xf1,0x0f); // font size control register
273 1 }
274 //.............................................
275 void lcd_clear(void)
276 { //清屏
277 1 uchar reg_rddata;
278 1 lcd_regwrite(0xe0,0x00);
279 1 reg_rddata =lcd_regread(0xf0);
280 1 reg_rddata |= 0x08;
281 1 lcd_regwrite(0xf0,reg_rddata);
282 1 }
283
284
285 void SetXY(uchar x,uchar y)
286 {
287 1 lcd_regwrite(0x60,x); // active window top register(awtr)
288 1 lcd_regwrite(0x70,y); // active window top register(awtr)
289 1
290 1 }
291
292 /*void lcd_photo(uchar code *pho)
293 { //显示图形
294 uchar i,j,k;
295 uchar code *pp;
296 SetXY(0,0);
297 for(k=0;k<4;k++)
298 {
299 pp=pho;
300 for(j=0;j<60;j++)
301 {
302 for(i=0;i<40;i++)
303 {
C51 COMPILER V7.20 MAIN 04/03/2008 10:48:30 PAGE 6
304 lcd_datawrite(*pp);
305 ++pp;
306 }
307 }
308 }
309 }*/
310 void XY_Position_change()
311 {
312 1 long tempx,tempy;//注意类型和Tx,Ty保持一致
313 1 int i,r,x[6],y[6],xmin,xmax,ymin,ymax;
314 1 int SETX=0,SETY=0,X_temp[2],Y_temp[2];
315 1 CS=0;
316 1 for(i=0;i<2;i++)
317 1 {
318 2 for(r=0;r<6;r++)//X,Y的坐标读取六次
319 2 {
320 3 WriteCharTo7843(CODE_INT_X);
321 3 //Step2. Receive X-dir locating information
322 3 x[r] = ReadFromCharFrom7843();
323 3 //Step3. Send out Y-dir locating command
324 3 WriteCharTo7843(CODE_INT_Y);
325 3 //Step4. Receive Y-dir locating information
326 3 y[r] = ReadFromCharFrom7843();//读Y轴坐标
327 3 }
328 2 xmin=x[0];xmax=x[0];ymin=y[0];ymax=y[0];
329 2 for(r=1;r<6;r++)
330 2 {
331 3 if(x[r]<xmin)
332 3 xmin=x[r];
333 3 if(x[r]>xmax)
334 3 xmax=x[r];
335 3 if(y[r]<ymin)
336 3 ymin=y[r];
337 3 if(y[r]>ymax)
338 3 ymax=y[r];
339 3 }
340 2 //坐标中去掉最大的和最小的
341 2 X_temp[i]=(x[0]+x[1]+x[2]+x[3]+x[4]+x[5]-xmin-xmax)/4;
342 2 Y_temp[i]=(y[0]+y[1]+y[2]+y[3]+y[4]+y[5]-ymin-ymax)/4;
343 2
344 2 }
345 1 //将处理后的触摸屏坐标取平均,得到较准确的触摸屏坐标X,Y
346 1 SETX=(X_temp[0]+X_temp[1])/2;
347 1 SETY=(Y_temp[0]+Y_temp[1])/2;
348 1 // tempx=SETX-375;//这里X,Y是经过处理的触摸屏的坐标
349 1 if(tempx<0)
350 1 tempx=0;
351 1 else
352 1 Tx=(tempx*320)/(1800-375);
353 1 tempy=SETY-500;
354 1 if(tempy<0)
355 1 tempy=0;
356 1 else
357 1 Ty=tempy*240/(1800-590);
358 1 }
359 void MouseDown(unsigned long X, unsigned long Y)
360 {
361 1 if(Y<30)
362 1 {
363 2 SetXY(8,24);
364 2 lcd_datawrite(0xE8);
365 2 lcd_datawrite(0xAF);
C51 COMPILER V7.20 MAIN 04/03/2008 10:48:30 PAGE 7
366 2 }
367 1 else if(Y>30&&Y<72)
368 1 {
369 2 SetXY(8,56);
370 2 lcd_datawrite(0xC0);
371 2 lcd_datawrite(0xDA);
372 2 }
373 1 else if(Y>72)
374 1 {
375 2 SetXY(8,88);
376 2 lcd_datawrite(0xBE);
377 2 lcd_datawrite(0xFD);
378 2 }
379 1 else
380 1 ;
381 1
382 1
383 1 }
*** WARNING C280 IN LINE 359 OF MAIN.C: 'X': unreferenced local variable
384
385 void WriteCharTo7843(unsigned char num)
386 {
387 1 unsigned char count;
388 1 DCLK=0;
389 1 for(count=0;count<8;count++)
390 1 {
391 2 if((num&0x80)==0x80)
392 2 DIN=1;
393 2 else if((num&0x80)==0x00)
394 2 DIN=0;
395 2 DCLK=0; _nop_();_nop_();_nop_();
396 2 DCLK=1; _nop_();_nop_();_nop_();
397 2 num<<=1;
398 2 }
399 1 }
400 unsigned int ReadFromCharFrom7843()
401 {
402 1 unsigned char count=0;
403 1 unsigned int Num=0;
404 1 for(count=0;count<12;count++)
405 1 {
406 2 Num<<=1;
407 2 DCLK=1; _nop_();_nop_();_nop_();
408 2 DCLK=0; _nop_();_nop_();_nop_();
409 2 if(DOUT==1) Num++;
410 2 }
411 1 return(Num);
412 1 }
413
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1935 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 9 64
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -