OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3640|回复: 4

关于OLED屏的一点问题

[复制链接]

13

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2016-7-24
在线时间
20 小时
发表于 2016-7-24 22:09:41 | 显示全部楼层 |阅读模式
学习原子的战舰OLEd实验,对于函数OLED_ShowChar()里的u8 csize=(size/8+((size%8)?1:0))*(size/2);                //得到字体一个字符对应点阵集所占的字节数
不是很理解,哪位高手可以解答一下,小弟不胜感激。贴上函数代码:
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示                                 
//size:选择字体 12/16/24
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{                                  
        u8 temp,t,t1;
        u8 y0=y;
        u8 csize=(size/8+((size%8)?1:0))*(size/2);                //得到字体一个字符对应点阵集所占的字节数
        chr=chr-' ';//得到偏移后的值                 
    for(t=0;t<csize;t++)
    {   
                if(size==12)
                {
                        temp=asc2_1206[chr][t];                  //调用1206字体
                }
                else if(size==16)
                {
                        temp=asc2_1608[chr][t];        //调用1608字体
                }
                else if(size==24)
                {
                        temp=asc2_2412[chr][t];        //调用2412字体
                }
                else
                        return;                                                                //没有的字库
        for(t1=0;t1<8;t1++)
                {
                        if(temp&0x80)
                        {
                                OLED_DrawPoint(x,y,mode);
                        }
                        else
                        {
                                OLED_DrawPoint(x,y,!mode);
                        }
                        temp<<=1;
                        y++;
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                break;
                        }
                }           
    }         
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11544
金钱
11544
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-7-25 09:24:40 | 显示全部楼层

可以自己举个具体的例子,假设size等于某值,
然后计算一下,再去理解。


回复 支持 反对

使用道具 举报

13

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2016-7-24
在线时间
20 小时
 楼主| 发表于 2016-7-26 20:41:39 | 显示全部楼层
xuande 发表于 2016-7-25 09:24
可以自己举个具体的例子,假设size等于某值,
然后计算一下,再去理解。

size是多少计算出来就是多少
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-7-27
在线时间
23 小时
发表于 2016-7-27 12:21:41 | 显示全部楼层
同问是什么原理?
回复 支持 反对

使用道具 举报

10

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
817
金钱
817
注册时间
2016-2-5
在线时间
163 小时
发表于 2016-8-4 17:29:47 | 显示全部楼层
- -今天也刚搞OLED有点昏,这里他是用了一个三目运算符进行判断,size取值只能是12,16,24,带入之后发现12和16都是两个字节,其中12是有4位没用,24带入之后为3,占3个字节也是对的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 10:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表