OLED是I2C接口的,单片机是STC12C5A56S2.
我现在可以显示单个字符,可是显示字符串就不行。
显示字符的程序如下:
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示
//size:选择字体 16/12
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_Column-1)
{
x = 0;
y = y+2;
}
if(Char_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);
for(i=0; i<6; i++)
OLED_WR_Byte(F6x8[c][i], OLED_DATA);
}
}
显示字符串的程序如下:
//显示一个字符号串
void OLED_ShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size)
{
uint8_t j=0;
while (chr[j] != '\0')
{
OLED_ShowChar(x, y, chr[j], Char_Size);
x += 8;
if(x>120)
{
x=0;
y+=2;
}
j++;
}
}
请高手指教,我确实想不出来了。谢谢!
|