这个程序在STemWin入门篇中提到过,当时程序编译出了点问题,不确定该代码是否有缺陷,同时看到网上有类似代码,但不够简洁,所以还是在这里补发一下这个这个代码
实现上面的方式转换为下面的方式
/**********************************************************************/
/*本函数实现STemWin生成的横向显示数据转换成竖向OLED128*64 SH1106的数据
/*源数据stemwinbuff[64][16] 64行
/*目的数据:sreenbuff[8][128] 128列
/**********************************************************************/
void STemWin_to_oled1106(void)
{
int a,b,c,ibit;
u8 temp1,temp2=0;
for(b=0;b<16;b++)
for(ibit=0;ibit<8;ibit++)
{ temp2=0;temp1=0x01;
for(a=0;a<64;a++)
{
if((stemwinbuff[a][b]&(0x01<<ibit))!=0)//判断该位是否需要显示
temp2=temp2|(temp1<<(a%8));//本显示器需要的值
/*************************************************************************/
if((a+1)%8==0)
{
c=7-ibit+b*8;
sreenbuff[a/8][c]=temp2;//该值存放地址
temp2=0;
}
}
}
}