本帖最后由 Yr~ 于 2019-5-16 14:20 编辑
包含字符显示驱动、清屏驱动、数字显示驱动、字符串显示驱动、图片显示驱动、汉字显示驱动
void OLED_ShowChar(u8 x,u8 y,u8 chr);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
void OLED_ShowString(u8 x,u8 y, u8 *p);
void OLED_Set_Pos(unsigned char x, unsigned char y);
void OLED_ShowCHinese(u8 x,u8 y,u8 no);
void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]);
//主函数
int main(void)
{ u8 t;
delay_init();
NVIC_Configuration();
OLED_Init();
OLED_Clear() ;
t=' ';
while(1)
{
OLED_Clear();
OLED_ShowString(0,3,"1.3' OLED TEST");
OLED_ShowString(0,6,"ASCII:");
OLED_ShowString(63,6,"CODE:");
OLED_ShowChar(48,6,t);
t++;
if(t>'~')t=' ';
OLED_ShowNum(103,6,t,3,16);
delay_ms(8000);
OLED_Clear();
delay_ms(8000);
OLED_DrawBMP(0,0,128,8,BMP1);
delay_ms(8000);
OLED_DrawBMP(0,0,128,8,BMP2);
delay_ms(8000);
}
}
//在指定位置显示一个字符
//x:0~127
//y:0~63
//mode:0,反白显示 1,正常显示
//size:选择字体 16/12
void OLED_ShowChar(u8 x,u8 y,u8 chr)
{
unsigned char c=0,i=0;
c=chr-' ';//μÃμ½Æ«òÆoóμÄÖμ
if(x>Max_Column-1){x=0;y=y+2;}
if(SIZE ==16)
{
OLED_Set_Pos(x,y);
for(i=0;i<8;i++)
OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
OLED_Set_Pos(x,y+1);
for(i=0;i<8;i++)
OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
}
else {
OLED_Set_Pos(x,y+1);
for(i=0;i<6;i++)
OLED_WR_Byte(F6x8[c],OLED_DATA);
}
}
剩余程序源码请下载附件
|