完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 辛一_e1e 于 2022-1-18 00:45 编辑 RVB2601板载一块分辨率为128*64的单色OLED显示屏。CPU需要通过SPI,控制OLED的内容显示。在官方提供的SDK中,可以通过学习“ch2601_gui_demo”例子程序,来熟悉OLED的控制。 这个例子程序调用了开源库LVGL,用于OLED图形文字等内容显示的绘制。LVGL提供了丰富的组件,使用方便,内存需求也不大,非常适合嵌入式设备。 “ch2601_gui_demo”程序和OLED显示相关的部分,主要就是“static void gui_lvgl_task(void *arg)”这个函数,下面列出函数主体部分。
”lv_init()”用于初始LVGL库。之前提到CPU需要通过SPI来配置OLED驱动芯片,不过这里并没有使用硬件SPI,而是使用GPIO模拟SPI的时序来完成SPI通信。 在“oled_init()”中,首先配置PINMUX和GPIO用于SPI时序的模拟,然后模拟SPI时序完成OLED寄存器的配置。除了完成oled的相关控制,在“oled_init()”中,还将分配的显存Buf,以及OLED内容刷新控制注册到LVGL的回调函数“lv_disp_drv_register(&disp_drv)”。 “gui_label_create()”会调用lvgl label组件,并在组件上输出英文字母。“lv_label_set_long_mode”设置了文字label长度大于obj长度时的行为,这里的参数LV_LABEL_LONG_BREAK表示超出长度不予显示,“lv_label_set_align”设置了文字的对齐方向,LV_LABEL_ALIGN_CENTER表示居中显示。lv_obj_set_pos设置了label组件的起始位置,lv_obj_set_size设置了组件长宽,这个长宽的参照来自文件“lv_conf.h”定义的两个宏LV_HOR_RES_MAX 和LV_VER_RES_MAX。
完成上述准备工作,gui_lvgl_task这个任务会进入while(1)循环,每隔一段时间就调用lv_task_handler() 和 lv_tick_inc(1) 来完成lvgl的显示输出 ,并通过aos_msleep()函数来让出CPU控制权。 程序运行效果如下图所示。 完成了基本的文字显示,接下来尝试一下label组件更多配置。首先在OLED初始化的时候,将Set_Inverse_Display(0xA6);改为Set_Inverse_Display(0xA7);进行反色显示,将背景色设为黑色。由于OLED完全关闭为黑色,这样既可以完整显示信息,又能达到降低功耗的目的。然后修改static void gui_label_create(void)函数,使得OLED同时显示四行文字,并显示不同的动画效果。
在底部的视频前1分钟部分可以看到,第一行文字超出部分直接用点代替,第二行文字会来回滚动达到显示全部的效果,第三行文字会朝着左边方向一直滚动,第四行文字的动画效果是从下往上翻滚。 由于单色OLED的限制,大多数LVGL的组件无法正常显示。通过尝试发现可以通过img组件配合数组,在OLED显示预设图案。利用这个特点,实现了一个简易进度条,效果在底部视频1分钟之后,主要代码作为附件main.zip上传。 总结,在官方例程的基础上,探索了基于LVGL的单色OLED图形文字显示。 动画演示
|
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15715 浏览 1 评论
13766 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19689 浏览 2 评论
59141 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88264 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
795浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
694浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 21:02 , Processed in 0.641987 second(s), Total 64, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号