⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oled.lst

📁 MSC1210 驱动 OLED源程序 包括ASCII码字库表
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -