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