📄 lcd128_64.lst
字号:
309 1 }
310
311
312
313
314 /*******************************************************************************
315 //函数名:void Printn8(uchar xx ,uchar yy , ulong no,uchar yn,uchar le)
316 //功能:显示8*8一个无符号数据
317 //输入:xx , yy屏幕当中位置,no待显示数据 yn=0正常显示 yn=1反黑显示 le有效位
318 //输出:无
319 ********************************************************************************/
320 void Printn8(uchar xx ,uchar yy , ulong no,uchar yn,uchar le)
321 {
322 1 uchar ch2[6];
323 1 uchar ii;
324 1
325 1 for(ii = 1 ; ii <= le ;){
326 2 ch2[le - ii] = no % 10 + 0x30;
327 2 no /= 10;
328 2 ii += 1;
329 2 }
330 1 ch2[le] = '\0';
331 1 Print(xx ,yy ,ch2 ,yn);
332 1 }
333
334
335
336 /*******************************************************************************
337 //函数名:void Print6(uchar xx, uchar yy, uchar ch1[], uchar yn)
338 //功能:显示6*8字符串
339 //输入:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
340 //输出:无
341 ********************************************************************************/
342 void Print6(uchar xx, uchar yy, uchar ch1[], uchar yn)
343 {
344 1 uchar ii = 0;
345 1 uchar bb = 0;
346 1 unsigned int index = 0 ;
347 1
348 1 SetRamAddr(xx , yy);
349 1 while(ch1[bb] != '\0')
350 1 {
351 2 index = (unsigned int)(ch1[bb] - 0x20);
352 2 index = (unsigned int)index*6;
353 2 for(ii=0;ii<6;ii++)
354 2 {
355 3 if(yn)
356 3 {
357 4 Lcdwritedata(FontSystem6x8[index]);
358 4 }
359 3 else
360 3 {
361 4 Lcdwritedata(~FontSystem6x8[index]);
362 4 }
363 3 index += 1;
364 3 }
C51 COMPILER V8.08 LCD128_64 01/09/2008 13:45:48 PAGE 7
365 2 bb += 1;
366 2 }
367 1 }
368
369
370 /*******************************************************************************
371 //函数名:void Print8(uint y,uint x, uchar ch[],uint yn)
372 //功能:显示8*8字符串
373 //输入:xx ,yy 坐标,ch1待显示的字符串,yn是否反黑
374 //输出:无
375 ********************************************************************************/
376 void Print8(uint y,uint x, uchar ch[],uint yn)
377 {
378 1 uchar wm ,ii = 0;
379 1 uint adder;
380 1
381 1 while(ch[ii] != '\0')
382 1 {
383 2 adder = (ch[ii] - 0x20) * 16;
384 2
385 2 SetRamAddr(y , x);
386 2 for(wm = 0;wm < 8;wm++)
387 2 {
388 3 if(yn == 0)
389 3 {
390 4 Lcdwritedata(~Font8X8[adder]);
391 4 }
392 3 else
393 3 {
394 4 Lcdwritedata(Font8X8[adder]);
395 4 }
396 3 adder += 1;
397 3 }
398 2 SetRamAddr(y + 1 , x);
399 2 for(wm = 0;wm < 8;wm++)
400 2 {
401 3 if(yn == 0)
402 3 {
403 4 Lcdwritedata(~Font8X8[adder]);
404 4 }
405 3 else
406 3 {
407 4 Lcdwritedata(Font8X8[adder]);
408 4 }
409 3 adder += 1;
410 3 }
411 2 ii += 1;
412 2 x += 8;
413 2 }
414 1
415 1 }
416
417
418 /*******************************************************************************
419 //函数名:void Print16(uint y,uint x,uchar ch[],uint yn)
420 //功能:在屏幕上显示汉字
421 //输入:x ,y 坐标,ch[]待显示的汉字,yn是否反黑
422 //输出:无
423 ********************************************************************************/
424 void Print16(uint y,uint x,uchar ch[],uint yn)
425 {
426 1 uchar wm ,ii = 0;
C51 COMPILER V8.08 LCD128_64 01/09/2008 13:45:48 PAGE 8
427 1 uint adder;
428 1
429 1 wm = 0;
430 1 adder = 1;
431 1 while(FontNew8X16_Index[wm] > 100)
432 1 {
433 2 if(FontNew8X16_Index[wm] == ch[ii])
434 2 {
435 3 if(FontNew8X16_Index[wm + 1] == ch[ii + 1])
436 3 {
437 4 adder = wm * 14;
438 4 break;
439 4 }
440 3 }
441 2 wm += 2; //找到汉字在索引中的位置
442 2 }
443 1 SetRamAddr(y , x);
444 1
445 1 if(adder != 1) //找到汉字,显示出来
446 1 {
447 2 SetRamAddr(y , x);
448 2 for(wm = 0;wm < 14;wm++)
449 2 {
450 3 if(yn == 0)
451 3 {
452 4 Lcdwritedata(~FontNew16X16[adder]);
453 4 }
454 3 else
455 3 {
456 4 Lcdwritedata(FontNew16X16[adder]);
457 4 }
458 3 adder += 1;
459 3 }
460 2 for(wm = 0;wm < 2;wm++)
461 2 {
462 3 if(yn == 0)
463 3 {
464 4 Lcdwritedata(0xff);
465 4 }
466 3 else
467 3 {
468 4 Lcdwritedata(0x00);
469 4 }
470 3 }
471 2 SetRamAddr(y + 1 , x);
472 2
473 2 for(wm = 0;wm < 14;wm++)
474 2 {
475 3 if(yn == 0)
476 3 {
477 4 Lcdwritedata(~FontNew16X16[adder]);
478 4 }
479 3 else
480 3 {
481 4 Lcdwritedata(FontNew16X16[adder]);
482 4 }
483 3 adder += 1;
484 3 }
485 2 for(wm = 0;wm < 2;wm++)
486 2 {
487 3 if(yn == 0)
488 3 {
C51 COMPILER V8.08 LCD128_64 01/09/2008 13:45:48 PAGE 9
489 4 Lcdwritedata(0xff);
490 4 }
491 3 else
492 3 {
493 4 Lcdwritedata(0x00);
494 4 }
495 3 }
496 2
497 2
498 2 }
499 1 else //找不到字显示空格
500 1 {
501 2 ii += 1;SetRamAddr(y , x);
502 2 for(wm = 0;wm < 16;wm++)
503 2 {
504 3 if(yn == 0)
505 3 {
506 4 Lcdwritedata(0xff);
507 4 }
508 3 else
509 3 {
510 4 Lcdwritedata(0x00);
511 4 }
512 3 }
513 2 SetRamAddr(y + 1 , x);
514 2 for(wm = 0;wm < 16;wm++)
515 2 {
516 3 if(yn == 0)
517 3 {
518 4 Lcdwritedata(0xff);
519 4 }
520 3 else
521 3 {
522 4 Lcdwritedata(0x00);
523 4 }
524 3 }
525 2 }
526 1 }
527 /*******************************************************************************
528 //函数名:void Print(uchar y, uchar x, uchar ch[], uint yn)
529 //功能:实现汉字及字母混合显示
530 //输入:x ,y 坐标,ch[]待显示的汉字或字母,yn是否反黑
531 //输出:无
532 ********************************************************************************/
533 void Print(uchar y, uchar x, uchar ch[], uint yn)
534 {
535 1 uchar ch2[3];
536 1 uchar ii;
537 1 ii = 0;
538 1 while(ch[ii] != '\0')
539 1 {
540 2 if(ch[ii] > 120)
541 2 {
542 3 ch2[0] = ch[ii];
543 3 ch2[1] = ch[ii + 1];
544 3 ch2[2] = '\0'; //汉字为两个字节
545 3 Print16(y , x , ch2 , yn); //显示汉字
546 3 x += 16;
547 3 ii += 2;
548 3 }
549 2 else
550 2 {
C51 COMPILER V8.08 LCD128_64 01/09/2008 13:45:48 PAGE 10
551 3 ch2[0] = ch[ii];
552 3 ch2[1] = '\0'; //字母占一个字节
553 3 Print8(y , x , ch2 , yn); //显示字母
554 3 x += 8;
555 3 ii += 1;
556 3 }
557 2 }
558 1 }
559
560 /*******************************************************************************
561 //函数名:void ClearCol(uchar Begin , uchar End)
562 //功能:清除列
563 //输入:Begin开始处 End结束处
564 //输出:无
565 ********************************************************************************
566 void ClearCol(uchar Begin , uchar End)
567 {
568 uchar i;
569 for(i=Begin;i <= End ; i++)
570 {
571 Print6(Begin , 0 ," ", 1);
572 }
573 }*/
574
575 /*******************************************************************************
576 //函数名:void Rectangle(uchar x1,uchar y1,uchar x2,uchar y2)
577 //功能:画直线函数,本函数目前只能画水平和垂直线
578 //输入:x1,y1(第一个点) x2,y2第二个点
579 //输出:无
580 ********************************************************************************/
581 void Rectangle(uchar x1,uchar y1,uchar x2,uchar y2)
582 {
583 1
584 1 uchar ii;
585 1
586 1 for(ii=x1; ii<x2; ii++)
587 1 {
588 2 SetRamAddr(y1,ii);
589 2 Lcdwritedata(0x08);
590 2 SetRamAddr(y2,ii);
591 2 Lcdwritedata(0x08); //画横线
592 2 }
593 1 SetRamAddr(y1,x1);
594 1 Lcdwritedata(0xF0);
595 1 SetRamAddr(y1,x2);
596 1 Lcdwritedata(0xF0);
597 1
598 1 for(ii = y1+1;ii<y2;ii++)
599 1 {
600 2 SetRamAddr(ii,x1);
601 2 Lcdwritedata(0xff);
602 2 SetRamAddr(ii,x2);
603 2 Lcdwritedata(0xff); //画竖线
604 2 }
605 1
606 1 SetRamAddr(y2,x1);
607 1 Lcdwritedata(0x0F);
608 1 SetRamAddr(y2,x2);
609 1 Lcdwritedata(0x0F);
610 1 }
611
C51 COMPILER V8.08 LCD128_64 01/09/2008 13:45:48 PAGE 11
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1527 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 76
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 + -