打印
[应用相关]

oled可以正常显示3位数以内的数字,不能正常显示4位数以上的数字?

[复制链接]
816|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2024-7-29 11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FOR, AMP, T3, TE, ui, OLED
为什么我今天才发现我的oled可以正常显示3位数以内的数字,不能正常显示4位数以上的数字 代码如下:
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
{                 
        uint32_t t,temp;
        uint32_t enshow=0;
        for(t=0;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,' ');
                                continue;
                        }
                        else enshow=1;
                        
                }
                 OLED_ShowChar(x+(size2/2)*t,y,temp+'0');
        }
}
main函数:
uint32_t nu=8234;
OLED_ShowNum(0,4,nu,4,16);

使用特权

评论回复
沙发
kzlzqi| | 2024-7-29 15:02 | 只看该作者
OLED_ShowChar 函数可能在显示4位数以上时出现问题,特别是如果字符显示函数未正确处理字符绘制区域的超出部分。

使用特权

评论回复
板凳
stormwind123| | 2024-7-29 22:01 | 只看该作者
OLED显示屏在显示文本或数字时,通常会使用一个内部或外部的缓冲区来存储待显示的数据。如果缓冲区的大小不足以存储四位数的数字(特别是当数字以字符串形式存储时,还需要考虑字符串结束符'\0'),那么可能无法完整显示。

使用特权

评论回复
地板
laocuo1142| | 2024-7-29 22:01 | 只看该作者
在编写显示数字的代码时,可能没有正确处理超出缓冲区大小或屏幕显示范围的数据。例如,如果代码只设计了显示三位数的逻辑,而没有为更长的数字预留足够的空间或进行适当的格式化处理,那么超出部分的数字将不会被显示或显示不正确。

使用特权

评论回复
5
powerantone| | 2024-7-29 22:02 | 只看该作者
检查并调整缓冲区大小至足够大

使用特权

评论回复
6
stormwind123| | 2024-7-29 22:02 | 只看该作者
编写能够处理任意长度数字的显示逻辑。例如,你可以使用字符串格式化函数(如C语言中的sprintf)来将数字转换为字符串,并确保字符串的长度不会超过OLED显示屏的显示范围。

使用特权

评论回复
7
classroom| | 2024-7-29 22:02 | 只看该作者
如果可能的话,尝试减小字体大小以在屏幕上显示更多的内容。

使用特权

评论回复
8
两只袜子| | 2024-7-29 22:03 | 只看该作者
检查并调整屏幕分辨率

使用特权

评论回复
9
申小林一号| | 2024-7-29 22:34 | 只看该作者
感谢分享

使用特权

评论回复
10
米多0036| | 2024-8-31 13:07 | 只看该作者
确保 OLED_ShowChar 函数能够正确显示单个字符。

使用特权

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

本版积分规则

385

主题

2087

帖子

3

粉丝