第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算

这篇具有很好参考价值的文章主要介绍了第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单片机驱动TFT彩色液晶屏系列讲座

目录

第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频
第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架
第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化
第四讲 单片机驱动彩色液晶屏 控制RA8889软件:绘图
第五讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part1.内部字库
第六讲 单片机驱动彩色液晶屏 控制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这个函数,参数可分为五个部分,参考下方图解说明:
第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算,单片机驱动TFT彩色液晶屏系列讲座,单片机,嵌入式硬件

所有图像操作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软件:图像运算,单片机驱动TFT彩色液晶屏系列讲座,单片机,嵌入式硬件

淡入淡出

淡入淡出是通过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);

淡入淡出实例演示:

RA8889/RA8876淡入淡出演示

第十讲 THE END

了解更多信息:http://www.lcdvision.com.cn文章来源地址https://www.toymoban.com/news/detail-814934.html

到了这里,关于第十讲 单片机驱动彩色液晶屏 控制RA8889软件:图像运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第七讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part3.自建字库

    目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控制RA8889软件:绘图 第五讲 单片机驱动彩色液

    2024年01月21日
    浏览(49)
  • 51单片机LCD1602液晶屏显示方法

    以显示hello,world!    2022.10.17  为例。 首先把LCD1602的模块化程序添加到项目目录中,模块化方法在51单片机之程序模块化_学习笔记吧的博客-CSDN博客这里可以学习。 实验程序: LCD1602.c文件代码: LCD1602.h文件代码: 把这两个代码,分别添加到LCD1602.c 和 LCD1602.h 文件,然后添加

    2023年04月08日
    浏览(55)
  • 51单片机学习笔记-12LCD1602液晶屏

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字

    2024年02月11日
    浏览(53)
  • 【51单片机系列】proteus中的LCD12864液晶屏

    文章来源:《单片机C语言编程与Proteus仿真技术》。 点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。 12864点阵图型LCD显示模块内部控制器采用KS0108或HD61202。其引脚排列

    2024年01月19日
    浏览(51)
  • 51单片机——LCD1602液晶屏 C语言入门编程

    目录 LCD1602: 数据指令:  字节写入时序: 1. LCD1602:LCD1602液晶上显示字符信息         1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若 干个5x7的点阵字符位组成,每个点

    2024年02月05日
    浏览(53)
  • 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD1602 液晶显示模块(其内部控制器为HD44780 芯片),它可以显示两行,每行16 个字

    2024年02月04日
    浏览(67)
  • 低端单片机彩色屏幕的内存占用疑惑

    问题: 假设320*240的rgb565屏幕,320*240*2=153600,内存已经150K了,而很多低端单片机接口速度虽然勉强能用,但内存只有20K/8K,整屏的显存是绝对放不下的,只刷一部分都占很多内存,低端单片机刷彩屏都是写哪刷哪静态刷新的吗?这种场合比较合适的解决方法是什么?外挂ra

    2024年01月19日
    浏览(45)
  • 蓝桥杯单片机第十三届国赛客观题(深夜学习——单片机)

    1.填空题 (2)不同的地址范围: data:0x00-0xff idata:0x0000-0xffff xdata:0x0000-0xffff pdata:0x00-0xff code:0x0000-0xffff 2.选择题 (3)模电——》多级放大电路 (6)DS18B20 (7)模电——》二极管  (8)单片机      

    2024年02月11日
    浏览(67)
  • 蓝桥杯单片机 第十二届 国赛

    蓝桥杯第十二届,模块都比较常规,感觉都和省赛差不多,主要是麻烦在数据处理上,而我们处理的数据又要在界面中显示出来。 对比之前的第十届,其实题目差不多,并且少了串口收发这一比较难的模块。但是多了max,min,avg三个超声波数据的处理。所以按道理时间方面应该

    2023年04月08日
    浏览(51)
  • 【第十四届蓝桥杯单片机冲刺版】

    明天就是正式比赛啦,今天可以在把各个模块练习一遍,常考的外设相关代码一定要熟练哦。 比赛时拿到资料包了,检查驱动文件,使用到的驱动文件,自己做相应的修改,确保是能够正常使用(驱动修改相关可看之前的文章)。 下面是自己将常考的外设结合一起的练习,

    2023年04月27日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包