找回密码
 立即注册
查看: 1051|回复: 12

OLED12864和12832的疑惑

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-02-15 01:13:47

2

主题

15

回帖

260

积分

中级会员

积分
260
发表于 2024-5-14 22:31:42 | 显示全部楼层 |阅读模式
本帖最后由 karlman 于 2024-5-15 07:13 编辑

STC8G1K17A 8pin芯片,此为手头的单片机。
买了个OLED12832,0.91',SSD1306芯片,例程里给的是软件IIC,测试了一下显示正常。
找了个硬件IIC的OLED12864例程,测试发现字符都被压缩压扁了一半,也就是说16点阵的汉字,变成16*8了,只显示了2、4、6、8、10、12、14、16这8行,字扁了一半。如下图
   

看这两个例程,硬件IIC也是在软件IIC的基础上改的,对比了半天也没有找出问题所在。
于是又买了个OLED12864,0.93',也是SSD1306芯片,测试用硬件IIC例程显示正常!


我就觉得很奇怪了,难道这两个OLED的显存页面不一样?
我又用OLED12832的软件IIC例程去测试OLED12864,结果显示的内容是显示一行空一行,也是只显示了2行汉字!也就是说每个汉字变成了16*32了,12864也只能显示2行汉字了。如图
4.jpg     3.jpg

下面把硬件例程和软件例程的OLED显示部分上传上来给大家看看,有没有哪位能帮我这个初学菜鸟找出问题所在?多谢!
STC8G_OLED.rar (5.31 KB, 下载次数: 92) SHT31W204.rar (7.31 KB, 下载次数: 79)


12864

12864

12832

12832
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-5-14 23:08:05 | 显示全部楼层
疑惑在哪了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-02-15 01:13:47

2

主题

15

回帖

260

积分

中级会员

积分
260
发表于 2024-5-14 23:26:28 | 显示全部楼层

刚才没编辑完
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-5-15 00:18:08 | 显示全部楼层
OLED12832肯定比OLED12864少显示一半啊,从你的图片上看明显就是只能显示显存中0、2、4、6行,你每次换行的时候就不能用y+1了,得y+2,或者直接写0、2、4、6这四行
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-02-15 01:13:47

2

主题

15

回帖

260

积分

中级会员

积分
260
发表于 2024-5-15 00:40:39 | 显示全部楼层
本帖最后由 karlman 于 2024-5-15 00:52 编辑
xxxe*** 发表于 2024-5-15 00:18
OLED12832肯定比OLED12864少显示一半啊,从你的图片上看明显就是只能显示显存中0、2、4、6行,你每次换行的 ...

这两个OLED用的都是SSD1306芯片啊,显存都是128*64的,只是12832只用了一半显存吧?
我的例程都是只显示两行字符,也就是32行点阵。
我的理解是,前一半显存不都是一样的吗?为什么显示出来不一样?
从程序里我看不出驱动12864和12832有什么不同。
除了一个是硬件IIC一个是软件外,写OLED屏幕的子程序几乎都是一样的,显存都是8页,每页都是8*128,也就是半行16点阵的汉字,12864用了8页(4行汉字)缓存,12832只用了前4页(2行汉字)缓存吧?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2025-04-30 08:59:38

1

主题

81

回帖

1073

积分

金牌会员

积分
1073
发表于 2024-5-15 08:53:12 | 显示全部楼层

汉字扁了,只剩下一半
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-5-15 10:22:27 | 显示全部楼层
这和点阵字没关系吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-02-15 01:13:47

2

主题

15

回帖

260

积分

中级会员

积分
260
发表于 2024-5-15 11:04:29 | 显示全部楼层
so*** 发表于 2024-5-15 10:22
这和点阵字没关系吧

测试时我只是换了个屏,没有动程序。点阵OLEDFONT.H用的是同一个文件。我现在只能是猜想12832并不是简单的只用了12864的前一半显存,点阵和显存的对应关系不对。但是我没有从程序中找出不同。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-5-15 12:30:05 | 显示全部楼层
以前还真没玩过12832的屏,都是玩12864的屏。又研究了一下,我觉得应该是oled屏初始化里设置的问题了,你试试把oled12832屏可以正常运行的程序中的OLED_Init(void)函数中
   OLED_WR_Byte(0xa8,OLED_CMD);//设置驱动路数
   OLED_WR_Byte(0x1f,OLED_CMD);
之中的0x1f改为0x3f,编译后看12864的屏显示是否正常了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2025-02-15 01:13:47

2

主题

15

回帖

260

积分

中级会员

积分
260
发表于 2024-5-15 16:00:56 | 显示全部楼层
本帖最后由 karlman 于 2024-5-15 18:47 编辑
xxxe*** 发表于 2024-5-15 12:30
以前还真没玩过12832的屏,都是玩12864的屏。又研究了一下,我觉得应该是oled屏初始化里设置的问题了,你试 ...

我的目的是用硬件IIC驱动12832的屏,所以我去把左边的这个12864硬件IIC程序的0x3f改成了0x1f,显示结果还是扁字,但是向下移动了一行(16点)
换成12864的话,是正常显示但是向下移动了两行(32点)。


感觉确实很可能是初始化的参数不对,但两个程序的OLED初始化代码相差比较大,软件IIC的代码还没有详细注释,不知道每个参数是什么意思。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 03:17 , Processed in 0.127317 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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