单色屏幕的旋转显示算法(micropython,frameBuf)

文章详细介绍了如何在墨水屏上实现90度旋转显示,由于硬件本身不支持旋转,需要通过软件方法对显存进行旋转操作。通过定义虚拟屏幕和显存,以及使用特定的byteArrRotate函数,将旋转后的虚拟屏幕内容拷贝到真实屏幕的显存中,从而达到旋转显示的效果。在ESP32平台上,结合framebuf库,实现了旋转显示的功能。

编写墨水屏micropython板本的驱动时,需要对墨水屏进行旋转显示,由于墨水屏本身没有旋转功能,因此需要对显存进行旋转操作。

代码如下:


def byteArrRotate(frbByteArr,scrByteArr,EPD_WIDTH,EPD_HEIGHT):
    '''
    frbByteArr为旋转后的虚拟屏幕显存,用frameBuff直接操作的
    scrByteArr为真实屏幕显存,直接写入屏幕的
    EPD_WIDTH和EPD_HEIGHT是真实屏幕显存对应的矩阵大小,虚拟屏幕的该两个值要调换
    
    本段程序实现单色显示屏内容的90度旋转,显示屏定义如下:
    ----   WIDTH----
    | byte0->       | 
    |               |
    |               |
 HEIGHT             |
    |               |
    |               |
    |               |
    -----------------
    不旋转模式下,定义直接用于显示的缓存scrByteArr.显示规则是从第0字节开始,第一行第一列对应byte0的bit7-bit0,高位在前.
    显示缓存scrByteArr的大小为width/8*height
    如果不旋转,直接定义frameBuff,对scrByteArr进行操作即可,如:
    frb_black=framebuf.FrameBuffer(scrByteArr,EPD_WIDTH,EPD_HEIGHT,framebuf.MONO_HLSB)
    
    但要实现旋转显示,就必须定义一块虚拟的屏幕,把WIDTH和HEIGHT对调,
    并定义一块显存frbByteArr,与虚拟的屏幕对应,大小为HEIGHT/8*WIDTH
    然后再定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值