打印
[STM32F1]

OLED

[复制链接]
1734|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
想要图一的效果,却出现图二的效果怎么办?大神指点一下
沙发
WUZHIXIONG23|  楼主 | 2018-11-23 18:08 | 只看该作者
或者说这段代码中的0我想改成00,1改成01怎么做到?

使用特权

评论回复
板凳
mohanwei| | 2018-11-23 18:17 | 只看该作者
要改调用显示字符串函数的那个地方;不是改点阵字模……
例如:
sprintf(buff, "%0d",0);//输出"0"
sprintf(buff, "%02d",0);//输出"00"
sprintf(buff, "%03d",0);//输出"000"

使用特权

评论回复
地板
WUZHIXIONG23|  楼主 | 2018-11-23 18:28 | 只看该作者
mohanwei 发表于 2018-11-23 18:17
要改调用显示字符串函数的那个地方;不是改点阵字模……
例如:
sprintf(buff, "%0d",0);//输出"0"

输出00是没问题,关键是我需要做一个计时器,递增的时候00-01,左边那个0会闪一下,就算是00和0 所占的尺寸大小都为16.

使用特权

评论回复
5
WUZHIXIONG23|  楼主 | 2018-11-23 18:33 | 只看该作者
mohanwei 发表于 2018-11-23 18:17
要改调用显示字符串函数的那个地方;不是改点阵字模……
例如:
sprintf(buff, "%0d",0);//输出"0"

我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模

使用特权

评论回复
6
mohanwei| | 2018-11-23 18:54 | 只看该作者
WUZHIXIONG23 发表于 2018-11-23 18:33
我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模
...

目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵,显示00没问题

使用特权

评论回复
7
WUZHIXIONG23|  楼主 | 2018-11-24 08:56 | 只看该作者
mohanwei 发表于 2018-11-23 18:54
目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵, ...

是8x16的ASCII码,我的函数只有8x16跟16x24的,都不能输出00,有什么办法解决?

使用特权

评论回复
8
WUZHIXIONG23|  楼主 | 2018-11-24 08:57 | 只看该作者
mohanwei 发表于 2018-11-23 18:54
目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵, ...

手工描点对我的难度有点大

使用特权

评论回复
9
WUZHIXIONG23|  楼主 | 2018-11-24 08:59 | 只看该作者
来了方法 发表于 2018-11-23 19:28
没看出有什么不妥善

最后面一个数字7要变成07,这样看起来才是一个计时器

使用特权

评论回复
10
mohanwei| | 2018-11-24 11:21 | 只看该作者
WUZHIXIONG23 发表于 2018-11-24 08:56
是8x16的ASCII码,我的函数只有8x16跟16x24的,都不能输出00,有什么办法解决? ...

空间这么大,不能显示两个8x16的'0'么?

使用特权

评论回复
评论
WUZHIXIONG23 2018-11-26 16:29 回复TA
为题解决了。我计数的时候是0-60,我用的是0-9和10-60字长设成一样了,然后显示0-9的时候是显示的空格+0-9 
11
xuanhuanzi| | 2018-11-24 18:20 | 只看该作者
你弄的字模太丑了,长字体好看。

使用特权

评论回复
12
WUZHIXIONG23|  楼主 | 2018-11-26 11:44 | 只看该作者
xuanhuanzi 发表于 2018-11-24 18:20
你弄的字模太丑了,长字体好看。

/*****************************
函数名称:OLED_showNum
返回值:无
参数:
作用:显示数字
*****************************/
void OLED_showNum(u8 x,u8 y,u32 num,u8 len,u8 size2)
{                
  u8 t,temp;
  u8 enshow=0;                                                  
  for(t=0;t<len;t++)
  {
    temp=(num/OLED_pow(10,len-t-1))%10;
    if(enshow==0&&t<(len-1))
    {
      if(temp==0)
      {
        OLED_showChar(x+(size2/2)*t,y,' ',size2);
        continue;
      }else enshow=1;
    }
    OLED_showChar(x+(size2/2)*t,y,temp+'0',size2);
  }
}
这段代码麻烦哪位大神帮忙解释一下?

使用特权

评论回复
13
stm32jy| | 2018-11-26 12:17 | 只看该作者
这个不难啊,很简单的

使用特权

评论回复
14
stm32jy| | 2018-11-26 12:17 | 只看该作者
WUZHIXIONG23 发表于 2018-11-23 18:33
我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模
...

用取摸软件也可以

使用特权

评论回复
15
stm32jy| | 2018-11-26 12:18 | 只看该作者
来了方法 发表于 2018-11-23 19:12
还有这种项目有市场?

应该就是简单显示下

使用特权

评论回复
16
huzi2099| | 2018-11-26 13:05 | 只看该作者
改造一下你的显示函数就行了呀,固定的位数显示.

使用特权

评论回复
17
huzi2099| | 2018-11-26 13:05 | 只看该作者
改造一下你的显示函数就行了呀,固定的位数显示.

使用特权

评论回复
18
yang_alex| | 2018-11-26 15:27 | 只看该作者
WUZHIXIONG23 发表于 2018-11-23 18:08
或者说这段代码中的0我想改成00,1改成01怎么做到?

每行注释里的最后数字是字库中第几个字符,不是要显示的字符,//后的才是要显示的字符。

使用特权

评论回复
19
WUZHIXIONG23|  楼主 | 2018-11-26 16:26 | 只看该作者
yang_alex 发表于 2018-11-26 15:27
每行注释里的最后数字是字库中第几个字符,不是要显示的字符,//后的才是要显示的字符。 ...

对,我看懂了,还有就是字符长度的问题。写一位数的时候不能把长度设为两位数,不然又空格出现

使用特权

评论回复
20
WUZHIXIONG23|  楼主 | 2018-11-26 16:30 | 只看该作者
huzi2099 发表于 2018-11-26 13:05
改造一下你的显示函数就行了呀,固定的位数显示.

恩,解决了,显示数字的长度问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

230

帖子

2

粉丝