求oled显示SPI四线显示汉字的程序

2019-07-20 08:26发布

弄了两天怎么改都改不正确,想找一个来参考参考,望各位大神给助攻!!!!!不胜感激!!!!!
 显示汉字,画点函数需要改吗 ?个人认为不改不知道对吗?
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63)return;//????·??§??.
pos=7-y/8;
bx=y%8;
temp=1<<(7-bx);
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;    



字符显示部分  
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{          
u8 temp,t,t1;
u8 y0=y;
chr=chr-' ';//?????????ó????   
    for(t=0;t<size;t++)
    {   
if(size==12)temp=oled_asc2_1206[chr][t];  //?÷??1206×???
else temp=oled_asc2_1608[chr][t]; //?÷??1608×???                          
        for(t1=0;t1<8;t1++)
{
if(temp&0x80)OLED_DrawPoint(x,y,mode);        这一句的if里面为什么要和0x80按位与呢?
else OLED_DrawPoint(x,y,!mode);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}    
    }          
}





















友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
萨克斯
1楼-- · 2019-07-21 06:41
萨克斯 发表于 2018-4-28 14:25
大神,我现在有一个把LED映射成按TFT屏的方法来显示的程序,英文字母和数字都可以显示,就是中文搞不出来 ...

/**************************************************************************************/
///////////////////////////oo×&#214;&#207;&#212;ê&#190;///////////////////////////
/*******************************************************************************************/
////////////////////////////////////////////////////////////////////////////////////////////////////////
//&#212;ú&#214;&#184;&#182;¨&#206;&#187;&#214;&#195;&#207;&#212;ê&#190;ò&#187;&#184;&#246;oo×&#214;
//x,y:&#198;eê&#188;×&#248;±ê
//num:òa&#207;&#212;ê&#190;μ&#196;×&#214;·&#251;:" "--->"~"
//size:×&#214;ì&#229;′óD&#161;
//mode:μt&#188;ó·&#189;ê&#189;(1)&#187;1ê&#199;·&#199;μt&#188;ó·&#189;ê&#189;(0)
void led_showcharH(u16 x,u16 y,u8 num,u8 size,u8 mode,u8 color)
{                                                            
  u8 temp,t1,t;
        u16 y0=y;
        u8 csize=(size/16+((size%8)?1:0))*(size/2);                //μ&#195;μ&#189;×&#214;ì&#229;ò&#187;&#184;&#246;×&#214;·&#251;&#182;&#212;ó|μ&#227;&#213;ó&#188;ˉ&#203;ù&#213;&#188;μ&#196;×&#214;&#189;úêy       
        num=num-' ';//μ&#195;μ&#189;&#198;&#171;ò&#198;oóμ&#196;&#214;죨ASCII×&#214;&#191;aê&#199;′ó&#191;&#213;&#184;&#241;&#191;aê&#188;è&#161;&#196;££&#172;&#203;ùò&#212;-' '&#190;íê&#199;&#182;&#212;ó|×&#214;·&#251;μ&#196;×&#214;&#191;a£&#169;
        for(t=0;t<csize;t++)
        {   
                if(size==16)temp=Code16x16[num][t];             //μ÷ó&#195;×&#214;ì&#229;×&#214;&#196;£
               
                else return;                                                                //&#195;&#187;óDμ&#196;×&#214;&#191;a
                for(t1=0;t1<16;t1++)
                {                            
                        if(temp&0x80)set_pixel(y,x,color);
                        else if(mode==0)set_pixel(y,x,BLACK);
                        temp<<=1;
                        y++;
                        if(y>=32)return;                //3&#172;&#199;&#248;óòá&#203;
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                if(x>=64)return;        //3&#172;&#199;&#248;óòá&#203;
                                break;
                        }
                }  
   
        }               
}
  
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//&#207;&#212;ê&#190;&#182;à&#184;&#246;oo×&#214;
//x,y:&#198;eμ&#227;×&#248;±ê
//width,height:&#199;&#248;óò′óD&#161;  
//size:×&#214;ì&#229;′óD&#161;
//*p:×&#214;·&#251;′&#174;&#198;eê&#188;μ&#216;&#214;·                  
void led_showstringH(u16 x,u16 y ,u8 size,u8 *p,u8 color)
{         
  while( *p!=''){  //&#197;D&#182;&#207;ê&#199;2&#187;ê&#199;·&#199;·¨×&#214;·&#251;!
                led_showcharH(x,y,*p,size,0,color);
                x+=size/2;
                p++;
  }  
}

一周热门 更多>