[STM32F1] OLED

[复制链接]
 楼主| WUZHIXIONG23 发表于 2018-11-23 17:51 | 显示全部楼层 |阅读模式
IMG_2454(20181123-174944).jpg IMG_2471(20181123-174920).jpg 想要图一的效果,却出现图二的效果怎么办?大神指点一下
 楼主| WUZHIXIONG23 发表于 2018-11-23 18:08 | 显示全部楼层
545545bf7d17b08de4.png 或者说这段代码中的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.
 楼主| WUZHIXIONG23 发表于 2018-11-23 18:33 | 显示全部楼层
mohanwei 发表于 2018-11-23 18:17
要改调用显示字符串函数的那个地方;不是改点阵字模……
例如:
sprintf(buff, "%0d",0);//输出"0"

310725bf7d73675f63.png 我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模
mohanwei 发表于 2018-11-23 18:54 | 显示全部楼层
WUZHIXIONG23 发表于 2018-11-23 18:33
我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模
...

目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵,显示00没问题
 楼主| WUZHIXIONG23 发表于 2018-11-24 08:56 | 显示全部楼层
mohanwei 发表于 2018-11-23 18:54
目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵, ...

是8x16的ASCII码,我的函数只有8x16跟16x24的,都不能输出00,有什么办法解决?
 楼主| WUZHIXIONG23 发表于 2018-11-24 08:57 | 显示全部楼层
mohanwei 发表于 2018-11-23 18:54
目测你用的ascii字符点阵是8x16,是不可能作出00的,你自己手工描点编辑一下就知道了。
要是16x16点阵, ...

手工描点对我的难度有点大
 楼主| WUZHIXIONG23 发表于 2018-11-24 08:59 | 显示全部楼层
来了方法 发表于 2018-11-23 19:28
没看出有什么不妥善

最后面一个数字7要变成07,这样看起来才是一个计时器
mohanwei 发表于 2018-11-24 11:21 | 显示全部楼层
WUZHIXIONG23 发表于 2018-11-24 08:56
是8x16的ASCII码,我的函数只有8x16跟16x24的,都不能输出00,有什么办法解决? ...

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

评论

为题解决了。我计数的时候是0-60,我用的是0-9和10-60字长设成一样了,然后显示0-9的时候是显示的空格+0-9  发表于 2018-11-26 16:29
xuanhuanzi 发表于 2018-11-24 18:20 | 显示全部楼层
你弄的字模太丑了,长字体好看。
 楼主| 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);
  }
}
这段代码麻烦哪位大神帮忙解释一下?
stm32jy 发表于 2018-11-26 12:17 | 显示全部楼层
这个不难啊,很简单的
stm32jy 发表于 2018-11-26 12:17 | 显示全部楼层
WUZHIXIONG23 发表于 2018-11-23 18:33
我用取模软件怎么也生成不了那种字模,  0的时候不可能全不是0x00吧?或者是我还没弄懂这个字模
...

用取摸软件也可以
stm32jy 发表于 2018-11-26 12:18 | 显示全部楼层
来了方法 发表于 2018-11-23 19:12
还有这种项目有市场?

应该就是简单显示下
huzi2099 发表于 2018-11-26 13:05 | 显示全部楼层
改造一下你的显示函数就行了呀,固定的位数显示.
huzi2099 发表于 2018-11-26 13:05 | 显示全部楼层
改造一下你的显示函数就行了呀,固定的位数显示.
yang_alex 发表于 2018-11-26 15:27 | 显示全部楼层
WUZHIXIONG23 发表于 2018-11-23 18:08
或者说这段代码中的0我想改成00,1改成01怎么做到?

每行注释里的最后数字是字库中第几个字符,不是要显示的字符,//后的才是要显示的字符。
 楼主| WUZHIXIONG23 发表于 2018-11-26 16:26 | 显示全部楼层
yang_alex 发表于 2018-11-26 15:27
每行注释里的最后数字是字库中第几个字符,不是要显示的字符,//后的才是要显示的字符。 ...

对,我看懂了,还有就是字符长度的问题。写一位数的时候不能把长度设为两位数,不然又空格出现
 楼主| WUZHIXIONG23 发表于 2018-11-26 16:30 | 显示全部楼层
huzi2099 发表于 2018-11-26 13:05
改造一下你的显示函数就行了呀,固定的位数显示.

恩,解决了,显示数字的长度问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

233

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部