本帖最后由 p13692166934 于 2019-3-28 19:58 编辑 这个是我网上找的代码,只有8,16,24字体,发现24还是太小,想自己写一个32的,但是看不懂代码的含义,看起来像是取字模复制过来显示的,但是不清楚显示原理,我都是直接复制粘贴然后看注释套用,自己看就坑了 /******************************************************************************* * 函数名:OLED_showChar * 功能描述:在指定位置显示一个字符,包括部分字符 * 参数说明: * 在指定位置显示一个字符,包括部分字符 * x:0~127 * y:0~63 * mode:0,反白显示;1,正常显示 * size:选择字体 24/16/12 * 返回值说明:none * 修改记录: *******************************************************************************/ void OLED_showChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t Char_Size) { uint8_t c=0,i=0; c=chr-' ';//得到偏移后的值 if(x>MAX_COLUMNC-1) { x=0; y=y+2; //这个要优化,根据字体的不同来换行 } if(Char_Size == 24) { OLED_setPos(x,y); for(i=0;i<16;i++) OLED_writeByte(F16X24[c*48+i],OLED_DATA); OLED_setPos(x,y+1); for(i=0;i<16;i++) OLED_writeByte(F16X24[c*48+i+16],OLED_DATA); OLED_setPos(x,y+2); for(i=0;i<16;i++) OLED_writeByte(F16X24[c*48+i+16*2],OLED_DATA); } else if(Char_Size ==16) { OLED_setPos(x,y); for(i=0;i<8;i++) OLED_writeByte(F8X16[c*16+i],OLED_DATA); //一个字符用16个字节来控制 OLED_setPos(x,y+1); //y+1 表示换行, for(i=0;i<8;i++) OLED_writeByte(F8X16[c*16+i+8],OLED_DATA); } else { OLED_setPos(x+1,y); for(i=0;i<6;i++) OLED_writeByte(F6x8[c],OLED_DATA); } } |
评分
查看全部评分
偏移量是什么,比如F16X24[c*48+i+16*2]代表的是什么意思
点评