单片机驱动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这个函数,参数可分为五个部分,参考下方图解说明:
所有图像操作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);
淡入淡出实例演示:
RA8889/RA8876淡入淡出演示
第十讲 THE END
了解更多信息:http://www.lcdvision.com.cn