找回密码
 立即注册
搜索
热搜: RA8889 RA8876 RA8875
查看: 231|回复: 0

第二讲:单片机STC89C52+RA8889驱动控制彩屏 代码移植介绍

[复制链接]

45

主题

3

回帖

458

积分

管理员

积分
458
QQ
发表于 2024-5-31 10:23:50 | 显示全部楼层 |阅读模式
51单片机驱动控制彩屏系列讲座

第一讲:单片机STC89C52+RA8889驱动控制彩屏  极简方案【 源码v1.0 】
第二讲:单片机STC89C52+RA8889驱动控制彩屏 代码移植介绍
第三讲:单片机STC89C52+RA8889驱动控制彩屏 代码的压缩(Keil编译器)
第四讲:单片机STC89C52+RA8889驱动控制彩屏 代码移植范例(包含API接口)【 源码v1.1 】
第五讲:51单片机+RA8889驱动控制彩屏  完整源码说明 【 源码v1.2 】


一、RA8889核心文件有四个,分别是:
RA8889.c                  底层API程序
RA8889_API.c           用户层API程序(可选)
RA8889_MCU_IF.c     MCU通信函数
UserDef.h                 参数配置:屏参、频率等

重点要移植的代码是RA8889.c,这份程序可以根据功能需求进行裁切移植,而RA8889_API.c这份是API接口程序,代码多,根据实际功能需求进行裁切。RA8889_MCU_IF.c则可以根据实际通信方式进行选择裁切。
UserDef.h 配置相关参数、宏定义,另外还有一份delay.c,这里的延时函数需要用户根据自己的主频进行调整。根据51单片机,移植好了核心代码放在 RA8889_01_Kernel 文件架里面:



我在上一讲已针对51基础功能进行了基础移植,并根据51单片机进行优化,该代码使用的是AT070TN92兼容屏,若您手上的液晶屏是其它型号,要变更屏的参数配置Set_LCD_Panel(),不清楚可以在本bbs论坛留言。
使用Keil来编辑时,程序添加到项目中,



路径包含:



二、单片机仅需要做三步:
  1. /* SPI初始化 */
  2.         SPI4_Init();

  3.         /* RA8889硬件复位 */
  4.         SPI_RST = 1;
  5.         delay_ms(1);
  6.         SPI_RST = 0;
  7.         delay_ms(1);
  8.         SPI_RST = 1;

  9.         /* RA8889初始化 */
  10.         RA8889_Initial();
复制代码
这样初始化也就做完了,接下来单片机就可以开始绘图了。

三、绘图和显示文字:
1. 下方代码演示颜色填充,根据函数名称不难理解,这些函数存放在RA8889_51.c里面:
  1. /* 画矩形填充 */
  2.         Foreground_color_16M(0x0);
  3.         Square_Start_XY(0,0);
  4.         Square_End_XY(799,479);
  5.         Start_Square_Fill();
复制代码
RA8889内建图形驱动引擎,可以绘制各种几何图形:方形,三角形,圆形,椭圆形等等,您可以根据需求再从RA8889标准参考程序里面找到RA8889.c,根据功能进行裁剪。

2. 文字显示,下方是简单调用,此外文字显示还有多种功能:放大、加底色等,这些都可以从RA8889标准参考程序找到RA8889_API.c进行裁剪移植。
  1. /* 内建文字显示测试 */
  2.         Foreground_color_16M(0xFFFFFF);
  3.         Goto_Text_XY(124,30);
  4.         Show_String("Solution: 89C52 + RA8889.");
  5.         Goto_Text_XY(124,60);
  6.         Show_String("RA8889 is an efficient TFT LCD CONTROLLER.");
  7.         Goto_Text_XY(124,90);
  8.         Show_String("It has an embedded decoder for JPG and AVI.");
复制代码


四:移植的调试
在移植时,有可能不成功,这里介绍一点经验:
1. 检查SPI接线,SDO和SDI不要接反了,还要确认CS和地线;
2. 可以无限循环RA8889_Initial()代码,再用示波器观察SDO、SDI、SCK及CS的波形,是否有周期的脉冲,这个方法定位会比较容易;
3. 在MCU_Dev_Board.c代码中有一个通信测试Comm_Test(),通过该函数对RA8889进行读写,若正常则闪烁LED来指示;
4. 另外可以调整delay.c,将延时先调得长一点进行测试,待通信正常再适当调快。

如有疑问,请在论坛bbs留言。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Lcdvision Technology ( 苏ICP备10203891号 )

GMT+8, 2024-9-20 00:07 , Processed in 0.142803 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表