HarmonyOS鸿蒙Next中SSD1306 OLED显示屏滚动播放
HarmonyOS鸿蒙Next中SSD1306 OLED显示屏滚动播放 对于OLED屏幕显示而言,单独的静态显示较为简单,通过直接设置显示的命令即可。但是静态显示较为呆板,考虑使用动态滚动显示增强显示的效果。动态滚动显示实现分为两种,一种是使用软件实现,测试过软件刷屏滚动显示,效果不佳;第二种是基于硬件实现,这个取决于模块是否支持,需要查看器件手册。
查到所用的SSD1306是128x64点阵的显示模块,拥有水平和垂直方向的滚动功能。
以上是水平滚动功能介绍,可以实现循环水平滚动。且根据范例可知,可对指定页进行滚动,其余保持静止。这里有个提示,在使用这个功能前需要先关闭滚动功能,不然可能打乱RAM中的数据。
以上是连续垂直和水平滚动功能的介绍,这里提到BCD三个字节负责连续的水平滚动,E字节是连续垂直滚动的偏移,若偏移量为0则只有水平滚动,跟上方的水平滚动一样。同样使用前需要关闭滚动功能。
这里还提到一个水平滚动区域设置的功能,可以指定水平滚动的区域。
经过功能性确认,可以开始查看寄存器的参数,来配置对应的实现指令。
这里有几个需要注意的地方,首先是AEF三个Dummy Byte,一定要配置,否则会导致无法正常工作。然后就是页的概念,自上而下一共64个像素点行,每8行构成一页。
这里提到几个问题,第一是没有连续的水平滚动可以使用。这个问题经过实验发现在8个页里,不能实现全部一起滚动,最多7个一起。然后是第二个问题,使用关闭滚动命令后,需要重新写入RAM中的数据,才能显示。最后是命令执行的问题,最后的命令会覆盖前面的命令,所以不能实现同时设置多个命令,如0~3页向左滚动,4~7页向右滚动。
最后这里是区域设置命令,可以设置垂直滚动的区域。需要搭配水平和垂直滚动一起使用,当水平和垂直滚动中设置的页在垂直滚动的区域外,那么垂直滚动的区域是只做向上的垂直滚动,设置的页只做水平方向的滚动;在区域内,则同时做水平和垂直的滚动;由此设计了一个固定第7页做水平滚动的,其他页可配置的垂直滚动函数。
主任务如下:
效果如下:(没有上传视频的权限,只能传个Gif,求官方给个权限,orz)
更多关于HarmonyOS鸿蒙Next中SSD1306 OLED显示屏滚动播放的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中实现SSD1306 OLED显示屏滚动播放,可以使用ohos.drivers.peripheral
库进行控制。首先初始化SSD1306驱动,设置显示区域和滚动模式。通过SSD1306_ScrollRight
或SSD1306_ScrollLeft
函数设置滚动方向,启动滚动后,显示屏将自动滚动显示内容。注意调整滚动速度和频率,确保显示效果流畅。示例代码如下:
#include "ssd1306.h"
void start_scroll() {
SSD1306_Init();
SSD1306_Clear();
SSD1306_ScrollRight(0x00, 0x0F); // 向右滚动
SSD1306_StartScroll();
}
确保硬件连接正确,并根据需求调整滚动参数。