OpenEdv-开源电子网

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

0.96OLED坐标原点设置问题

[复制链接]

31

主题

83

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1332
金钱
1332
注册时间
2021-1-2
在线时间
121 小时
发表于 2021-2-2 21:03:53 | 显示全部楼层 |阅读模式
战舰V3,0.96OLED实验的画点函数,初看让人头痛。其原因是,0.96OLED屏的初始化程序,把屏的坐标原点设在了屏的左下角,但配套的资料及视频对此没有相关提示:如下示:
void OLED_Init(void)
{

     -------
    OLED_WR_Byte(0xC0,OLED_CMD);    //屏的坐标原点设在了屏的左下角
     -------
}
//画点
//x:0~127
//y:0~63
//t:1 填充 0,清空                                  
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
        u8 pos,bx,temp=0;
        if(x>127||y>63)        return;//超出范围了.
        pos=7-y/8;   //造成坐标转换
        bx=y%8;
        temp=1<<(7-bx);  //造成坐标转换
        if(t)OLED_GRAM[x][pos]|=temp;
        else OLED_GRAM[x][pos]&=~temp;            
}


其实,只要在0.96OLED屏的初始化程序中,把屏的坐标原点设在屏的左上角,就可避免在画点程序中的坐标转换,使程序清爽易读。如下示:
void OLED_Init(void)
{

     -------
    OLED_WR_Byte(0xC8,OLED_CMD);   //左标原点设置为左上角-----这符合习惯
     -------
}
//画点
//x:0~127
//y:0~63
//t:1 填充 0,清空                                  
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
        u8 pos,bx,temp=0;
        if(x>127||y>63)        return;//超出范围了.
        pos=y/8;                //当前页----省掉了坐标转换
        bx=y%8;                //当前页中的行
        temp=1<<bx;   //----省掉了坐标转换
        if(t)OLED_GRAM[x][pos]|=temp;
        else OLED_GRAM[x][pos]&=~temp;         
}






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

使用道具 举报

0

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2019-9-29
在线时间
29 小时
发表于 2021-3-24 11:19:21 | 显示全部楼层
改过来之后能正常显示吗?
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2020-8-22
在线时间
19 小时
发表于 2021-4-7 10:29:52 | 显示全部楼层
yunhao 发表于 2021-3-24 11:19
改过来之后能正常显示吗?

可以的  字模也不用改
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 00:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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