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

📄 oled.c

📁 MSC1210 驱动 OLED源程序 包括ASCII码字库表
💻 C
📖 第 1 页 / 共 2 页
字号:
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    
        //--  文字:  g  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C,
    
        //--  文字:  h  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,
    
        //--  文字:  i  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    
        //--  文字:  j  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78,
    
        //--  文字:  k  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00,
    
        //--  文字:  l  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
    
        //--  文字:  m  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00,
    
        //--  文字:  n  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,
    
        //--  文字:  o  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,
    
        //--  文字:  p  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x44,0x78,0x40,0xE0,
    
        //--  文字:  q  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x42,0x42,0x42,0x22,0x1E,0x02,0x07,
    
        //--  文字:  r  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,
    
        //--  文字:  s  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00,
    
        //--  文字:  t  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x10,0x10,0x10,0x0C,0x00,0x00,
    
        //--  文字:  u  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,
    
        //--  文字:  v  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x10,0x10,0x00,0x00,
    
        //--  文字:  w  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD7,0x92,0x92,0xAA,0xAA,0x44,0x44,0x00,0x00,
    
        //--  文字:  x  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00,
    
        //--  文字:  y  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x18,0x10,0x10,0xE0,
    
        //--  文字:  z  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00,
    
        //--  文字:  {  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x00,
    
        //--  文字:  |  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
    
        //--  文字:  }  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x60,0x10,0x10,0x10,0x10,0x10,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x60,0x00,
    
        //--  文字:  ~  
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x30,0x4C,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    
        //--  文字:  立方     ascII=127
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x60,0x10,0x60,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	
        //--  文字:  平方    ascII=128
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x70,0x10,0x20,0x40,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	
        //--  文字:  下标    ascII=129
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x38,0x20,0x38,0x00, 
    
        //--  文字:  小圈    ascII=130
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x1C,0x14,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
    	
        //--  文字:  μ       ascII=131
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0xC4,0xA4,0x9A,0x80,0x00,
    	
        //--  文字:  Ω      ascII=132
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x3C,0x42,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x24,0xC3,0x00,0x00,
    	
        //--  文字:  千分号    ascII=133
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xA0,0xE0,0x00,0x00, 
    	
    
        //--  文字:  0.       ascII=134
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x01,0x01,
    
        //--  文字:  1.       ascII=135
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x01,0x01,
    
        //--  文字:  2.       ascII=136
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x01,0x01,
    
        //--  文字:  3.       ascII=137
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x01,0x01,
    
        //--  文字:  4.       ascII=138
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x01,0x01,
    
        //--  文字:  5.       ascII=139
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x01,0x01,
    
        //--  文字:  6.       ascII=140
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x01,0x01,
    
        //--  文字:  7.       ascII=141
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x01,0x01,
    
        //--  文字:  8.       ascII=142
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x01,0x01,
    
        //--  文字:  9.       ascII=143
        //--  宋体12  此字体下对应的点阵为:宽x高=8x16   
    	0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x01,0x01
};
         

/********************延时************************/
void    Delay500uS(unsigned int num)
{
    unsigned char i;
    unsigned int  j;
    for(j=0;j<num;j++)
    {
        for(i=0;i<150;i++);
    }
}
/*******************OLED写命令*********************/
void OLEDWriteCommand(unsigned char command)
{
    OLED_NCS    =1;
    OLED_DC     =0;
	OLED_RW     =0;
	OLED_E      =1;
	OLED_NCS    =0;
	P0          =command;
	OLED_NCS    =1;
	OLED_RW     =1;
	OLED_E      =0;
    OLED_DC     =1;
}
/*******************OLED写数据*********************/
void OLEDWriteData(unsigned char dot)
{
    OLED_NCS    =1;
    OLED_E      =0;
    OLED_DC     =1;
	OLED_RW     =0;
	OLED_E      =1;
	OLED_NCS    =0;
	P0          =dot;
	OLED_NCS    =1;
	OLED_RW     =1;
	OLED_E      =0;
    OLED_DC     =1;
}
/*******************OLED设置XY地址*****************/
void OLEDSetXY(  unsigned char X_Addr,unsigned char Y_Addr )
{
     OLEDWriteCommand( X_ADRESS   );        //Set X_ADRESS rang of 0-127
     OLEDWriteCommand( X_Addr>>1 );
     OLEDWriteCommand( 63 );

     OLEDWriteCommand( Y_ADRESS   );        //Set Y_ADRESS rang of 0-79
     OLEDWriteCommand( Y_Addr    );
     OLEDWriteCommand( 79 );   
}
/*******************OLED填充数据*********************/
void OLEDFillScreen( unsigned char dot )
{
    unsigned int i; 
    OLEDSetXY(0,0);
    for(i=0;i<64*64;i++)
    {
        OLEDWriteData(dot);
    }
}
/*******************初始化OLED*********************/
void OLEDInit(void)
{  
    OLED_NRST   =1;  
    OLED_NRST   =0; //复位OLED 
    Delay500uS(2) ;
    OLED_NRST   =1; 
    OLED_BS1    =0; //68 MODE 

    OLEDWriteCommand(Display_Off);      //关显示函数

    OLEDWriteCommand(MasterConfig);     //设置电源配置/控制内部DCDC和VCOMH 
    OLEDWriteCommand(EnableDCDC + EnableInternalVCOMH); 

    OLEDWriteCommand(DispOffset);       //设置显示偏置,范围0-79
    OLEDWriteCommand(0x40);
        
    OLEDWriteCommand(HalfCurr);         //电流/QuarterCurr/HalfCurr/FullCurr
       
    OLEDWriteCommand(Contrast);         //设置对比度,范围(0-127)
    OLEDWriteCommand(0x50);

    OLEDWriteCommand(MultiRadio);       //设置Multiplex Ratio,范围16MUX-80MUX
    OLEDWriteCommand(0x3F); 

	OLEDWriteCommand(DispClock);        //设置时钟分频率、振荡频率
    OLEDWriteCommand(0x41);
//  OLEDWriteCommand(0x01);             //范围0-15
//	OLEDWriteCommand(0x04);             //范围0x00-0xF0

	OLEDWriteCommand(VCOMH);            //设置VCOMH电压,范围0-0x1F
    OLEDWriteCommand(0x1F); 

	OLEDWriteCommand(SegmentLow);       //设置Segment Low Voltage(VSL)电压,范围0-16
    OLEDWriteCommand(0x00); 

	OLEDWriteCommand(Precharge);        //设置Precharge电压,范围0-0x1F
    OLEDWriteCommand(0x00);  

    OLEDWriteCommand(Re_map);           //Set Re-map
    OLEDWriteCommand(EnableCOMSplitOddEvent + EnableCOMRemap + HorizontalIncrement + EnableNibbleRemap + DisableColumeRemap);

	OLEDWriteCommand(PhaseLength);      //设置Phase长度
    OLEDWriteCommand(0x02);             //范围0-15
	OLEDWriteCommand(0x22);             //范围0x00-0xF0

	OLEDWriteCommand(RowPeriod);        //设置Row周期/范围2-158
    OLEDWriteCommand(0x46); 

    OLEDWriteCommand(NormDisp);         //设置显示模式/NormDisp/DispAllOn/DispAllOff/InverseDisp
    
    ////////////////////////////
    OLEDWriteCommand(StartLine);        //设置显示起始行,范围0-79
    OLEDWriteCommand(0x00);
                
	OLEDWriteCommand(EnCompensate);     //设置Pre-charge Compensation使能
    OLEDWriteCommand(0x08);

	OLEDWriteCommand(LvCompensate);     //设置Pre-charge Compensation电平,范围0-8
    OLEDWriteCommand(0x00);            
          
    OLEDWriteCommand(BiasCurr);         //设置DCDC的直流电流,范围0x70-0xF0
    OLEDWriteCommand(0xF0); 
    //////////////////////////// 
    OLEDWriteCommand(Display_On);       //开显示函数

    OLEDFillScreen(0xFF);    //全屏点亮函数 
    Delay500uS    (5000);
    OLEDFillScreen(0x00);    //清屏函数
}

/*******************OLED写字符函数*********************/
void OLEDPutcharOne(unsigned char X_Address,unsigned char Y_Address,char AsciiChar)
{
    unsigned char i,k,ziku,dot;
    unsigned int position;

    if( AsciiChar<0x20 )
    {
        AsciiChar   =0x20;
    }
    if( AsciiChar<144 )
    {
        for(i=0;i<16;i++)           //Y计算
        {
            OLEDSetXY( X_Address, Y_Address+i );
            position  = 16*( (unsigned char)AsciiChar-0x20) + i ;
            ziku = ASCII[ position ];

            //写单字节字模到OLED
            for(k=0;k<4;k++)    //字模单字节计算
            {
                dot =ColourSetting.Background;  //背景色
                if( (ziku&0x40)!=0 )
                {
                    dot = (dot&0xF0) + (ColourSetting.Foreground&0x0F);   
                }
                if( (ziku&0x80)!=0 )
                {
                    dot = (dot&0x0F) + (ColourSetting.Foreground&0xF0);   
                }
                OLEDWriteData(dot);
                ziku =ziku<<2;
            }
            //写单字节字模到OLED

        }
    }
}
/*******************OLED写字符串函数*********************/
void OLEDPutchar(   unsigned char X_Address,
                    unsigned char Y_Address,
                             char *point, 
                    unsigned char number )
{
    unsigned char i;
    unsigned int  X_counter,Y_counter;
    for(i=0;i<number;i++)
    {
        X_counter   = (X_Address + 8*i)%128;
        Y_counter   = 8*i;
        Y_counter   = ( X_Address + Y_counter)/128;    //显示字符行数计算
        Y_counter   = Y_Address + Y_counter*16;
        if(Y_counter<=56)
        {
            OLEDPutcharOne( (unsigned char)X_counter, (unsigned char)Y_counter, *(point+i) );
        }
    }
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -