📄 t9_v1.lst
字号:
266
267
268 /**************************************************************************************************
269 *
270 *从LCD的RAM中读数据
271 *函数声明:uchar read_data();
272 *返回参数:uchar型为RAM中的数据
273 *
274 *
275 **************************************************************************************************/
276 uchar read_data()
277 {
278 1 uchar din;
279 1 LCD_BUS=0xff;
280 1 DI=1; RW=1;
281 1 E=0;
282 1 E=0;
283 1 E=1;
284 1 E=1;
285 1 E=1;
286 1 din=LCD_BUS;
287 1 return din;
288 1 }
289
290
291 /**************************************************************************************************
292 *
293 *画竖线函数
294 *函数声明:void line_v(uchar x,uchar y,uchar l);
295 *函数参数:x,y分别为LCD的横向和纵向的坐标值,l为竖线的长度
296 *
297 *
298 **************************************************************************************************/
299 void line_v(uchar x,uchar y,uchar l)
300 {
301 1 uchar i;
302 1 for(i=0;i<l;i++) point(x,y+i);
303 1
C51 COMPILER V7.50 T9_V1 05/01/2006 11:18:37 PAGE 6
304 1 }
305
306 /**************************************************************************************************
307 *
308 *画横线函数
309 *函数声明:void line_h(uchar x,uchar y,uchar l);
310 *函数参数:x,y分别为LCD的横向和纵向的坐标值,l为横线的长度
311 *
312 *
313 **************************************************************************************************/
314 void line_h(uchar x,uchar y,uchar l)
315 {
316 1 uchar i;
317 1 for(i=0;i<l;i++) point(x+i,y);
318 1
319 1 }
320
321 /**************************************************************************************************
322 *
323 *在LCD的任意位置画点的函数
324 *函数声明:void point(uchar x,uchar y);
325 *函数参数:x为lcd的列坐标(0-127),y为lcd的纵坐标(0-63)
326 *利用此函数能在LCD12864的任意位置画一个点
327 *
328 **************************************************************************************************/
329 void point(uchar x,uchar y)
330 {
331 1 uchar y1,y2,pp;
332 1 uchar datain;
333 1 pp=1;
334 1 y1=y>>3;
335 1 y2=y%8;
336 1 pp=pp<<y2;
337 1 if (x<64)
338 1 {
339 2 CS2=1;
340 2 CS1=0;
341 2 write_cmd(PAGE+y1);
342 2 write_cmd(COL+x);
343 2 datain=read_data();
344 2 write_cmd(PAGE+y1);
345 2 write_cmd(COL+x);
346 2 delay(10);
347 2 datain=read_data();
348 2
349 2 write_cmd(PAGE+y1);
350 2 write_cmd(COL+x);
351 2 datain=datain|pp;
352 2 write_data(datain);
353 2 }
354 1 else
355 1 {
356 2
357 2 CS2=0;
358 2 CS1=1;
359 2 write_cmd(PAGE+y1);
360 2 write_cmd(COL+x-64);
361 2 datain=read_data();
362 2 write_cmd(PAGE+y1);
363 2 write_cmd(COL+x-64);
364 2 delay(10);
365 2 datain=read_data();
C51 COMPILER V7.50 T9_V1 05/01/2006 11:18:37 PAGE 7
366 2 write_cmd(PAGE+y1);
367 2 write_cmd(COL+x-64);
368 2 datain=datain|pp;
369 2 write_data(datain);
370 2 }
371 1
372 1
373 1
374 1 }
375
376
377 /**************************************************************************************************
378 *
379 *初始化LCD屏函数
380 *函数声明:void init();
381 *函数参数:无
382 *函数作用:对LCD做初始化操作
383 *
384 **************************************************************************************************/
385 void init()
386 {
387 1
388 1 delay(100);
389 1 CS2=1; CS1=0;
390 1 delay(100);
391 1 write_cmd(DISP_OFF);
392 1 write_cmd(PAGE);
393 1 write_cmd(START_LINE);
394 1 write_cmd(COL);
395 1 write_cmd(DISP_ON);
396 1 CS2=0; CS1=1;
397 1 delay(100);
398 1 write_cmd(DISP_OFF);
399 1 write_cmd(PAGE);
400 1 write_cmd(START_LINE);
401 1 write_cmd(COL);
402 1 write_cmd(DISP_ON);
403 1 }
404
405 /**************************************************************************************************
406 *
407 *清屏函数
408 *函数声明:void cls();
409 *函数参数:无
410 *函数作用:
411 *
412 **************************************************************************************************/
413 void cls()
414 {
415 1 uchar j,k;
416 1 CS2=1;CS1=0;
417 1 for(k=0;k<8;k++)
418 1 {
419 2 write_cmd(PAGE+k);
420 2 write_cmd(COL); //列地址0
421 2 for(j=0;j<64;j++) //列地址自动加一
422 2 write_data(0x00);
423 2 }
424 1 CS2=0;CS1=1;
425 1 for(k=0;k<8;k++)
426 1 {
427 2 write_cmd(PAGE+k);
C51 COMPILER V7.50 T9_V1 05/01/2006 11:18:37 PAGE 8
428 2 write_cmd(COL); //列地址0
429 2 for(j=0;j<64;j++) //列地址自动加一
430 2 write_data(0x00);
431 2 }
432 1 }
433
434
435
436
437
438 /**************************************************************************************************
439 *
440 *显示12*16点阵的汉字函数
441 *函数声明:void display_h(uchar page,uchar col,uchar code *str,uchar n);
442 *函数参数:page为页地址(0-7),col为列地址(0-127),str为数组名,n为要显示第n个汉字点阵
443 *函数作用:
444 *
445 **************************************************************************************************/
446 void display_h(uchar page,uchar col,uchar code *str,uchar n)
447 {
448 1 uchar i,j;
449 1 uchar num;
450 1 if(col<=52)
451 1 {
452 2 CS2=1;CS1=0;
453 2 for(j=0;j<2;j++)
454 2 {
455 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
456 3 for(i=0;i<12;i++)
457 3 write_data(str[n*24+12*j+i]);
458 3 }
459 2 }
460 1 else if(col>=64)
461 1 {
462 2 CS2=0;CS1=1;
463 2 col=col-64;
464 2 for(j=0;j<2;j++)
465 2 {
466 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
467 3 for(i=0;i<12;i++)
468 3 write_data(str[n*24+12*j+i]);
469 3 }
470 2 }
471 1
472 1
473 1 else if(col>52&&col<64) //处理跨屏幕的汉字书写的函数
474 1 {
475 2 num=64-col;
476 2 CS2=1;CS1=0;
477 2
478 2 for(j=0;j<2;j++)
479 2 {
480 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
481 3 for(i=0;i<num;i++)
482 3 write_data(str[n*24+12*j+i]);
483 3 }
484 2 CS2=0;CS1=1;
485 2 col=0;
486 2 for(j=0;j<2;j++)
487 2 {
488 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
489 3 for(i=num;i<12;i++)
C51 COMPILER V7.50 T9_V1 05/01/2006 11:18:37 PAGE 9
490 3 write_data(str[n*24+12*j+i]);
491 3 }
492 2
493 2
494 2 }
495 1
496 1 }
497
498
499
500 /**************************************************************************************************
501 *
502 *显示6*16点阵的英文函数
503 *函数声明:void display_e(uchar page,uchar col,uchar code *str,uchar n);
504 *函数参数:page为页地址(0-7),col为列地址(0-127),str为数组名,n为要显示第n个英文点阵
505 *函数作用:
506 *
507 **************************************************************************************************/
508 void display_e(uchar page,uchar col,uchar code *str,uchar n)
509 {
510 1 uchar i,j,num;
511 1 if(col<=58)
512 1 {
513 2 CS2=1;CS1=0;
514 2 for(j=0;j<2;j++)
515 2 {
516 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
517 3 for(i=0;i<6;i++)
518 3 write_data(str[n*12+6*j+i]);
519 3 }
520 2 }
521 1 else if(col>=64)
522 1 {
523 2 CS2=0;CS1=1;
524 2 col=col-64;
525 2 for(j=0;j<2;j++)
526 2 {
527 3 write_cmd(PAGE+page+j);write_cmd(COL+col);
528 3 for(i=0;i<6;i++)
529 3 write_data(str[n*12+6*j+i]);
530 3 }
531 2
532 2 }
533 1 else if(col>58&&col<64)
534 1 {
535 2 num=64-col;
536 2 CS2=1;CS1=0;
537 2
538 2 for(j=0;j<2;j++)
539 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -