首页 > 技术支持 > 应用与案例 > 正文
第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算 作者:BW.SU   发表日期:2024-01-17   来源:菱致电子   浏览:
目录
第六讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part2.外接字库
第七讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part3.自建字库
第八讲 单片机驱动彩色液晶屏 控制RA8889软件:显示图片
第九讲 单片机驱动彩色液晶屏 控制RA8889软件:认识显存并进行读、写、复制
第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算
第十一讲 单片机驱动彩色液晶屏 控制RA8889软件:播放avi视频
第十二讲 单片机驱动彩色液晶屏 如何打包bin档
第十三讲 单片机驱动彩色液晶屏 bin档的烧录方法


常用的图像运算主要包括:复制、去底色、单色位图延展上色、淡入淡出这些功能,下面逐一进行介绍如何使用:

一、图像复制

API函数如下,_Chroma表示透明色剔除功能:

void BTE_Memory_Copy(unsigned long S0_Addr,unsigned short S0_W,unsigned short XS0,unsigned short YS0,unsigned long S1_Addr,unsigned short S1_W,unsigned short XS1,unsigned short YS1,unsigned long Des_Addr,unsigned short Des_W, unsigned short XDes,unsigned short YDes,unsigned int ROP_Code,unsigned short X_W,unsigned short Y_H);
void BTE_Memory_Copy_Chroma_key(unsigned long S0_Addr,unsigned short S0_W,unsigned short XS0,unsigned short YS0,unsigned long Des_Addr,unsigned short Des_W, unsigned short XDes,unsigned short YDes,unsigned long Background_color,unsigned short X_W,unsigned short Y_H);


RA8889的代码是透明开放的,我们可以逐层进去看实际算法,也可以查看具体的寄存器操作,初步接触瑞佑的芯片可以先用用API即可,有兴趣的话可以进入底层查看代码,相当灵活。

我们进入一个API函数代码看看:

void BTE_Memory_Copy(
    unsigned long S0_Addr // Start address of Source 0
    ,
    unsigned short S0_W // image width of Source 0 (recommend = canvas image width)
    ,
    unsigned short XS0 // coordinate X of Source 0
    ,
    unsigned short YS0 // coordinate Y of Source 0
    ,
    unsigned long S1_Addr // Start address of Source 1
    ,
    unsigned short S1_W // image width of Source 1 (recommend = canvas image width)
    ,
    unsigned short XS1 // coordinate X of Source 1
    ,
    unsigned short YS1 // coordinate Y of Source 1
    ,
    unsigned long Des_Addr // start address of Destination
    ,
    unsigned short Des_W // image width of Destination (recommend = canvas image width)
    ,
    unsigned short XDes // coordinate X of Destination
    ,
    unsigned short YDes // coordinate Y of Destination
    ,
    unsigned int ROP_Code
    /*ROP_Code :
       0000b  0(Blackness)
       0001b  ~S0!E~S1 or ~(S0+S1)
       0010b  ~S0!ES1
       0011b  ~S0
       0100b  S0!E~S1
       0101b  ~S1
       0110b  S0^S1
       0111b  ~S0 + ~S1 or ~(S0 + S1)
       1000b  S0!ES1
       1001b  ~(S0^S1)
       1010b  S1
       1011b  ~S0+S1
       1100b  S0
       1101b  S0+~S1
       1110b  S0+S1
       1111b  1(whiteness)*/
    ,
    unsigned short X_W // X_W : Width of BTE Window
    ,
    unsigned short Y_H // Y_H : Length of BTE Window
)
{
    BTE_S0_Memory_Start_Address(S0_Addr);
    BTE_S0_Image_Width(S0_W);
    BTE_S0_Window_Start_XY(XS0, YS0);

    BTE_S1_Memory_Start_Address(S1_Addr);
    BTE_S1_Image_Width(S1_W);
    BTE_S1_Window_Start_XY(XS1, YS1);

    BTE_Destination_Memory_Start_Address(Des_Addr);
    BTE_Destination_Image_Width(Des_W);
    BTE_Destination_Window_Start_XY(XDes, YDes);

    BTE_ROP_Code(ROP_Code);
    BTE_Operation_Code(0x02); // BTE Operation: Memory copy (move) with ROP.
    BTE_Window_Size(X_W, Y_H);
    BTE_Enable();
    Check_BTE_Busy();
}

瑞佑的API是可以从函数名推测其功能的,有些函数名称包含了参数信息,跟据参数名称就可判断参数功能,具体的参数在API函数都有作了详细说明,实际写代码时可以再进入函数查询。

针对BTE_Memory_Copy这个函数,参数可分为五个部分,参考下方图解说明:


所有图像操作API函数都包括S0、S1和Des三部份。比如BTE_Memory_Copy_Chroma_key相比BTE_Memory_Copy只是换了一个参数Background_color,这个参数作用是复制时同时剔除这个背景颜色,其它功能都相近了。


二、图像延展

图像延展指的是把1bpp图像延展为16bpp图像。1bpp图片高度不限,宽度须为8的倍数。

当我们将1bpp写入显存时,实际显示出来图像看起来水平方向压扁了一样。通过BTE_Memory_Copy_ColorExpansion这个函数转换,数据为1转为前景色,数据为0会转为背景色,如果换作BTE_Memory_Copy_ColorExpansion_Chroma_key函数,则只将数据1转换为前景色,数据0不处理,即为透明色。这个功能在我们做图标、数字表盘是相当有用的功能!

图形延展API函数:

void BTE_Memory_Copy_ColorExpansion(unsigned long S0_Addr,unsigned short S0_W,unsigned short XS0,unsigned short YS0,unsigned long Des_Addr,unsigned short Des_W, unsigned short XDes,unsigned short YDes,unsigned short X_W,unsigned short Y_H,unsigned long Foreground_color,unsigned long Background_color);
void BTE_Memory_Copy_ColorExpansion_Chroma_key(unsigned long S0_Addr,unsigned short S0_W,unsigned short XS0,unsigned short YS0,unsigned long Des_Addr,unsigned short Des_W, unsigned short XDes,unsigned short YDes,unsigned short X_W,unsigned short Y_H,unsigned long Foreground_color);


图形延展实际效果:


三、淡入淡出

淡入淡出是通过RA8889的硬件加速功能实现的,通过控制 alpha 值即可控制两张图片的明淡效果,这种功能如果采用单片机进行软件处理,那会占用相当大的资源,很难实用,而通过RA8889/RA8876可轻松实现该功能。

淡入淡出API函数:

void BTE_Alpha_Blending_Picture_Mode(unsigned long S0_Addr,unsigned short S0_W,unsigned short XS0,unsigned short YS0,unsigned long S1_Addr,unsigned short S1_W,unsigned short XS1,unsigned short YS1,unsigned long Des_Addr,unsigned short Des_W, unsigned short XDes,unsigned short YDes,unsigned short X_W,unsigned short Y_H,unsigned char alpha);



淡入淡出实例演示:
https://live.csdn.net/v/359248

 

第十讲 THE END


分享到:

相关热词搜索:RA8889 RA8876 单片机 驱动 彩屏

上一篇:第九讲 单片机驱动彩色液晶屏 控制RA8889软件:认识显存
下一篇:第十一讲 单片机驱动彩色液晶屏 控制RA8889软件:播放avi视频

>>延伸阅读:0

  • · 如何解决MCU与RA8889等液晶控制芯片的SPI通信问题 [2020-03-04]
  • · RA8889配套上位机使用简介 [2020-09-01]
  • · 介绍一颗51单片机就可以进行视频解码的芯片方案1366x768 [2020-09-07]
  • · RA88xx系列对显存直接读写点的方法 [2020-09-10]
  • · NAND FLASH的调用 [2020-09-14]