📄 oled.c
字号:
//-- 宋体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 + -