OpenEdv-开源电子网

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

大家谁帮解释下这段代码,纠结好几天了。

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-7-5
在线时间
0 小时
发表于 2013-7-17 18:14:15 | 显示全部楼层 |阅读模式
OLED试验部分的,买板子的时候忘记买OLED了,没法硬件实现看结果,主要是因为套餐中没有OLED,就忽略要买这个东西了
原子哥说代码没问题,我也相信没问题,否则不会正确显示出结果的,但是从算法角度,我就是搞不明白一个问题,望大家帮忙给说明下

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;        
}

关于pos=7-y/8的问题,定义OLED_GRAM[128][8],分第0~7页,举例点亮(100,29)这个点,那么应该是OLED_GRAM[100][4],在第4页上,而(100,29)点,不是在第3页上的么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-17 20:22:42 | 显示全部楼层
看看这个:
0  7
1  6
2  5
3  4
4  3
5  2
6  1
7  0
关键看你从下往上数,还是从上往下数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

27

主题

308

帖子

1

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2012-6-19
在线时间
19 小时
发表于 2013-7-18 11:40:26 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥这个程序我看了两个多钟才看懂啊...
OLED的第0页是在最下面把,程序里面改成最上面是第0页吧?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-18 13:50:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-9-29
在线时间
16 小时
发表于 2013-11-17 19:38:11 | 显示全部楼层
回复【2楼】正点原子:
我觉回复【2楼】正点原子:
---------------------------------
我觉得页数从上往下数更方便些吧。。。。
回复 支持 反对

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-9-29
在线时间
16 小时
发表于 2013-11-17 21:29:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
{           
u8 temp,t,t1;
u8 y0=y;
chr=chr-' ';//得到偏移后的值    
    for(t=0;t<size;t++)
    {   
if(size==12)temp=asc2_1206[chr][t];  //调用1206字体
else temp=asc2_1608[chr][t];  //调用1608字体                            
        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;
}
}    
    }          
}
如果字符取模是从上往下的话,这个跟void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
u8 pos,bx,temp=0;
if(x>127||y>63)return;//超出范围了.
pos=7-y/8; //y是从低到高,在一页内从上往下为低位到高位
bx=y%8;
temp=1<<(7-bx);
if(t)OLED_GRAM[x][pos]|=temp;
else OLED_GRAM[x][pos]&=~temp;     
}不相符吧??因为void OLED_DrawPoint(u8 x,u8 y,u8 t)函数的Y方向是向上是增加的,而取模是向下的
回复 支持 反对

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-9-29
在线时间
16 小时
发表于 2013-11-17 21:53:26 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
回复【6楼】aacmeme:
---------------------------------
原子哥,

  真心迷了,,,求解答。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-17 22:12:56 | 显示全部楼层
回复【7楼】aacmeme:
---------------------------------
自己写个函数,实现以下,拔云见日。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-9-29
在线时间
16 小时
发表于 2013-11-18 09:36:44 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
我没有OLED屏,,对于OLED实验只能看程序了,但那一点怎么都觉得跟想的不一样,,,哎
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-18 14:37:21 | 显示全部楼层
回复【9楼】aacmeme:
---------------------------------
有屏了再试吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2018-7-10
在线时间
16 小时
发表于 2018-9-12 23:35:36 | 显示全部楼层
本帖最后由 pig881 于 2018-9-13 09:07 编辑

temp=1<<(7-bx);  为什么要用 7-bx ?

这里的 7  是指第几页 ? 还是 页里的 第几行?
还有为什么要左移?
回复 支持 反对

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2018-7-10
在线时间
16 小时
发表于 2018-9-13 11:17:08 | 显示全部楼层

为什么要  1<<2  ? 为毛要左移?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 08:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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