在OLED屏幕上画画,需要一帧一帧刷新。虽然内容挺无聊,但是发现通过缓存向显存里写数据不说还不行,不然后面画画都没法进行下去了=_=

作者: 大明狐分类: 野生技能协会 发布时间: 2023-07-17 19:41:03 浏览:60574 次

在OLED屏幕上画画,需要一帧一帧刷新。虽然内容挺无聊,但是发现通过缓存向显存里写数据不说还不行,不然后面画画都没法进行下去了=_=

连牙已蓝接:
把屏幕寻址方式改成水平模式就不需要换行了 直接连续写1024字节数据。 尤其是用DMA的时候 这样更方便

【回复】回复 @D-667 : 对,比如SH1106芯片的就是132列,需要初始化的时候给起始位加2个点的偏移,否则屏幕上的图像会有两列跑到屏幕外,另外一边多出两列雪花点;如果清屏函数只覆盖了128×64,那么在调用硬件滚屏指令的时候,多出来的4列会显示成雪花点的竖条夹在滚屏画面之间。
【回复】记得哪个主控是132*64的,而不是128*64
【回复】这样兼容性更高?因为有的控制芯片一行不止128列
手残老林:
[笑哭]同这么干过,首先弄一个缓存,然后写一个函数各种根据坐标画缓存里任意位置的单个像素,后续什么画线画圆等函数,只要代入数据,计算出坐标打点就好了。

烤红薯coast:
这东西c51单片机能整吗(刚学的小白)

【回复】建议用其它型号的51单片机是因为,首先内存足够创建整个屏幕大小的显存区域;其次频率也有很多种,可以在stc-isp里烧录的时候随意选择;第三是都是51指令集,89c51、89c52之类单片机的程序都通用,比如最近几期视频用的stc8h8k,还有再往前几期用的stc32、stc8a8k等等,都能基本保证流畅。
【回复】你用的是什么单片机?比如stc的话,用stc-isp就能烧录他家所以型号单片机。也可以找其它支持它的烧录软件。
【回复】回复 @大明狐 :谢谢up[打call]
_Wuyan_:
哦淦,你知道我写库的时候多痛苦吗? md位操作气死人

ZOEYYTTLL:
03:30这里为什么gram【t】=0x22时,显示间隔三行点亮一行的图案啊

【回复】回复 @大明狐 : 明白了up[热词系列_你币有了][热词系列_妙啊]
【回复】因为0x22转成二进制是00100010,竖向八个排列起来就是每三个0然后一个1。每一行里面的128根小竖棍都是这两个灯亮,就形成了两条水平线。八行就形成了16条间距相等的线
清羽玄儿:
up请问你的xdata是怎么弄的呀,我写xdata会显示报错,呜呜呜[tv_笑哭]

【回复】回复 @大明狐 : 好吧,谢谢UP[tv_微笑]
【回复】回复 @清羽玄儿 : 我用的是51单片机,STM32的话好像不需要xdata[脸红]
【回复】回复 @大明狐 : 我是STM32C8T6,后面弄好了,能用显存显示,但是不知道怎么设置xdata[脱单doge]
择步者:
SSD1362 一个8bit 数据控制两个点怎么设置点亮一个点

散记到十:
虽然我没看懂,虽然我觉得up很牛逼,但我还是要说一句“当人解决了温饱问题,就会爱上折腾[doge]”

【回复】生命在于折腾[嗑瓜子]快去解决温饱问题
妳為何如此優秀:
对于只有3~4k内存的单片机,分配这么多显存影响大吗

【回复】肯定会有影响,就看功能需要的多少了。而且3~4k已经不小了,看程序空间占比重是多少。一个OLED12864只需要1k显存,有其它需求另算。比如新发的视频片头是两个数组叠加的效果,就需要2k。放在扩展内存里不会占用程序空间,数据空间不够的话还可以扩展内存或者SD卡之类。

我在B站学习 stc32 画画 经验分享 OLED 显存 学习心得 缓冲区 必剪创作

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读