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++;
- }
- }
请高手指教,我确实想不出来了。谢谢!
|