标题:
请教大家一个单片机+OLED屏幕显示程序的问题
[打印本页]
作者:
gaoky
时间:
2020-3-7 10:21
标题:
请教大家一个单片机+OLED屏幕显示程序的问题
我在写stc15单片机的OLED显示程序的时候,想参考别的程序,有一个显示字符的子程序有点看不懂,那个y一会加2,一会加1,
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~6
//chr:要显示的字符
void OledShowChar(uchar x,uchar y,uchar chr)
{
uchar c = 0, i = 0;
c = chr-' ';//得到偏移后的值
if(x>Max_Column-1)
{
x = 0;
y = y + 2;
}
OledSetPos(x,y);
for(i=0;i<8;i++)
OledWriteByte(CharF8x16[c*16+i],OLED_DATA);
OledSetPos(x,y+1);
for(i=0;i<8;i++)
OledWriteByte(CharF8x16[c*16+i+8],OLED_DATA);
}
作者:
lovexulu
时间:
2020-3-7 14:18
if(x>Max_Column-1)
{
x = 0;
y = y + 2;
}
应该是行尾判断,转入下一行。。。
作者:
河边的考拉
时间:
2020-3-16 22:01
lovexulu 发表于 2020-3-7 14:18
if(x>Max_Column-1)
{
x = 0;
为什么不是y=y+1呀?
作者:
adject
时间:
2020-3-17 11:22
因为写的是8*16的在字符,字符占2行高所以y=y+2,接下来
for(i=0;i<8;i++)
OledWriteByte(CharF8x16[c*16+i],OLED_DATA);这里写字符的上半部分 占一行
OledSetPos(x,y+1); 写字符的下半部分, y+1
for(i=0;i<8;i++)
OledWriteByte(CharF8x16[c*16+i+8],OLED_DATA);
作者:
左岸的花会开
时间:
2020-3-17 16:12
你的字符取模是8*16的,而点阵屏,8行算一页,比如你打一个字符占用了第0页,第1页,那么这一行打印完,下一行要从第2页开始打印,所以这个行数加的是2
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1