📄 oled.lst
字号:
496 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
497 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x01,0x01,
498
499 //-- 文字: 1. ascII=135
500 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
501 0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x01,0x01,
502
503 //-- 文字: 2. ascII=136
504 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
505 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x01,0x01,
506
507 //-- 文字: 3. ascII=137
508 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
509 0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x01,0x01,
510
511 //-- 文字: 4. ascII=138
512 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
513 0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x01,0x01,
514
515 //-- 文字: 5. ascII=139
516 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
517 0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x01,0x01,
518
519 //-- 文字: 6. ascII=140
520 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
521 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x01,0x01,
522
523 //-- 文字: 7. ascII=141
524 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
525 0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,
526
527 //-- 文字: 8. ascII=142
528 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
529 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x01,0x01,
530
531 //-- 文字: 9. ascII=143
532 //-- 宋体12 此字体下对应的点阵为:宽x高=8x16
533 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x01,0x01
534 };
535
536
537 /********************延时************************/
538 void Delay500uS(unsigned int num)
539 {
540 1 unsigned char i;
541 1 unsigned int j;
542 1 for(j=0;j<num;j++)
543 1 {
544 2 for(i=0;i<150;i++);
545 2 }
546 1 }
547 /*******************OLED写命令*********************/
548 void OLEDWriteCommand(unsigned char command)
549 {
550 1 OLED_NCS =1;
551 1 OLED_DC =0;
C51 COMPILER V7.50 OLED 01/06/2006 13:37:03 PAGE 10
552 1 OLED_RW =0;
553 1 OLED_E =1;
554 1 OLED_NCS =0;
555 1 P0 =command;
556 1 OLED_NCS =1;
557 1 OLED_RW =1;
558 1 OLED_E =0;
559 1 OLED_DC =1;
560 1 }
561 /*******************OLED写数据*********************/
562 void OLEDWriteData(unsigned char dot)
563 {
564 1 OLED_NCS =1;
565 1 OLED_E =0;
566 1 OLED_DC =1;
567 1 OLED_RW =0;
568 1 OLED_E =1;
569 1 OLED_NCS =0;
570 1 P0 =dot;
571 1 OLED_NCS =1;
572 1 OLED_RW =1;
573 1 OLED_E =0;
574 1 OLED_DC =1;
575 1 }
576 /*******************OLED设置XY地址*****************/
577 void OLEDSetXY( unsigned char X_Addr,unsigned char Y_Addr )
578 {
579 1 OLEDWriteCommand( X_ADRESS ); //Set X_ADRESS rang of 0-127
580 1 OLEDWriteCommand( X_Addr>>1 );
581 1 OLEDWriteCommand( 63 );
582 1
583 1 OLEDWriteCommand( Y_ADRESS ); //Set Y_ADRESS rang of 0-79
584 1 OLEDWriteCommand( Y_Addr );
585 1 OLEDWriteCommand( 79 );
586 1 }
587 /*******************OLED填充数据*********************/
588 void OLEDFillScreen( unsigned char dot )
589 {
590 1 unsigned int i;
591 1 OLEDSetXY(0,0);
592 1 for(i=0;i<64*64;i++)
593 1 {
594 2 OLEDWriteData(dot);
595 2 }
596 1 }
597 /*******************初始化OLED*********************/
598 void OLEDInit(void)
599 {
600 1 OLED_NRST =1;
601 1 OLED_NRST =0; //复位OLED
602 1 Delay500uS(2) ;
603 1 OLED_NRST =1;
604 1 OLED_BS1 =0; //68 MODE
605 1
606 1 OLEDWriteCommand(Display_Off); //关显示函数
607 1
608 1 OLEDWriteCommand(MasterConfig); //设置电源配置/控制内部DCDC和VCOMH
609 1 OLEDWriteCommand(EnableDCDC + EnableInternalVCOMH);
610 1
611 1 OLEDWriteCommand(DispOffset); //设置显示偏置,范围0-79
612 1 OLEDWriteCommand(0x40);
613 1
C51 COMPILER V7.50 OLED 01/06/2006 13:37:03 PAGE 11
614 1 OLEDWriteCommand(HalfCurr); //电流/QuarterCurr/HalfCurr/FullCurr
615 1
616 1 OLEDWriteCommand(Contrast); //设置对比度,范围(0-127)
617 1 OLEDWriteCommand(0x33);
618 1
619 1 OLEDWriteCommand(MultiRadio); //设置Multiplex Ratio,范围16MUX-80MUX
620 1 OLEDWriteCommand(0x3F);
621 1
622 1 OLEDWriteCommand(DispClock); //设置时钟分频率、振荡频率
623 1 OLEDWriteCommand(0x41);
624 1 // OLEDWriteCommand(0x01); //范围0-15
625 1 // OLEDWriteCommand(0x04); //范围0x00-0xF0
626 1
627 1 OLEDWriteCommand(VCOMH); //设置VCOMH电压,范围0-0x1F
628 1 OLEDWriteCommand(0x1F);
629 1
630 1 OLEDWriteCommand(SegmentLow); //设置Segment Low Voltage(VSL)电压,范围0-16
631 1 OLEDWriteCommand(0x00);
632 1
633 1 OLEDWriteCommand(Precharge); //设置Precharge电压,范围0-0x1F
634 1 OLEDWriteCommand(0x00);
635 1
636 1 OLEDWriteCommand(Re_map); //Set Re-map
637 1 OLEDWriteCommand(EnableCOMSplitOddEvent + EnableCOMRemap + HorizontalIncrement + EnableNibbleRemap + D
-isableColumeRemap);
638 1
639 1 OLEDWriteCommand(PhaseLength); //设置Phase长度
640 1 OLEDWriteCommand(0x02); //范围0-15
641 1 OLEDWriteCommand(0x22); //范围0x00-0xF0
642 1
643 1 OLEDWriteCommand(RowPeriod); //设置Row周期/范围2-158
644 1 OLEDWriteCommand(0x46);
645 1
646 1 OLEDWriteCommand(NormDisp); //设置显示模式/NormDisp/DispAllOn/DispAllOff/InverseDisp
647 1
648 1 ////////////////////////////
649 1 OLEDWriteCommand(StartLine); //设置显示起始行,范围0-79
650 1 OLEDWriteCommand(0x00);
651 1
652 1 OLEDWriteCommand(EnCompensate); //设置Pre-charge Compensation使能
653 1 OLEDWriteCommand(0x08);
654 1
655 1 OLEDWriteCommand(LvCompensate); //设置Pre-charge Compensation电平,范围0-8
656 1 OLEDWriteCommand(0x00);
657 1
658 1 OLEDWriteCommand(BiasCurr); //设置DCDC的直流电流,范围0x70-0xF0
659 1 OLEDWriteCommand(0xF0);
660 1 ////////////////////////////
661 1 OLEDWriteCommand(Display_On); //开显示函数
662 1
663 1 OLEDFillScreen(0xFF); //全屏点亮函数
664 1 Delay500uS (5000);
665 1 OLEDFillScreen(0x00); //清屏函数
666 1 }
667
668 /*******************OLED写字符函数*********************/
669 void OLEDPutcharOne(unsigned char X_Address,unsigned char Y_Address,char AsciiChar)
670 {
671 1 unsigned char i,k,ziku,dot;
672 1 unsigned int position;
673 1
674 1 if( AsciiChar<0x20 )
C51 COMPILER V7.50 OLED 01/06/2006 13:37:03 PAGE 12
675 1 {
676 2 AsciiChar =0x20;
677 2 }
678 1 if( AsciiChar<144 )
679 1 {
680 2 for(i=0;i<16;i++) //Y计算
681 2 {
682 3 OLEDSetXY( X_Address, Y_Address+i );
683 3 position = 16*( (unsigned char)AsciiChar-0x20) + i ;
684 3 ziku = ASCII[ position ];
685 3
686 3 //写单字节字模到OLED
687 3 for(k=0;k<4;k++) //字模单字节计算
688 3 {
689 4 dot =ColourSetting.Background; //背景色
690 4 if( (ziku&0x40)!=0 )
691 4 {
692 5 dot = (dot&0xF0) + (ColourSetting.Foreground&0x0F);
693 5 }
694 4 if( (ziku&0x80)!=0 )
695 4 {
696 5 dot = (dot&0x0F) + (ColourSetting.Foreground&0xF0);
697 5 }
698 4 OLEDWriteData(dot);
699 4 ziku =ziku<<2;
700 4 }
701 3 //写单字节字模到OLED
702 3
703 3 }
704 2 }
705 1 }
706 /*******************OLED写字符串函数*********************/
707 void OLEDPutchar( unsigned char X_Address,
708 unsigned char Y_Address,
709 char *point,
710 unsigned char number )
711 {
712 1 unsigned char i;
713 1 unsigned int X_counter,Y_counter;
714 1 for(i=0;i<number;i++)
715 1 {
716 2 X_counter = (X_Address + 8*i)%128;
717 2 Y_counter = 8*i;
718 2 Y_counter = ( X_Address + Y_counter)/128; //显示字符行数计算
719 2 Y_counter = Y_Address + Y_counter*16;
720 2 if(Y_counter<=56)
721 2 {
722 3 OLEDPutcharOne( (unsigned char)X_counter, (unsigned char)Y_counter, *(point+i) );
723 3 }
724 2 }
725 1 }
726
727
728
729
730
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 589 ----
CONSTANT SIZE = 1792 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.50 OLED 01/06/2006 13:37:03 PAGE 13
PDATA SIZE = ---- ----
DATA SIZE = 2 9
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 + -