bwsu 发表于 2024-7-1 23:35:34

STC8H8K64U搭配RA8889如何控制TFT彩屏(附SPI4源码)

本帖最后由 bwsu 于 2024-7-16 16:29 编辑

文章导引:

(1)STC8H8K64U搭配RA8889如何控制TFT彩屏(附SPI4源码)
(2)51单片机(STC8H8K64U)加上RA8889可以点高分辨率TFT彩屏(附I2C源码下载)
(3)51单片机(STC8H8K64U/STC8051U34K64)_RA8889_8080参考代码(v1.3)
(4)51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动大屏_硬件SPI4_参考代码(v1.3)

单片机实际不限,这里采用的STC最新、主推的型号,比如STC8H8K64U、STC8051U34K64进行实验测试,您可以换用不同型号。目前测试这两个系列,显示速度均相当不错,软件设计也是极为简单。各篇文章下方均提供源码供参考下载。

本例提供软件模拟SPI-4通信代码,下方简单做一下介绍。


【硬件部份】

一、STC8H8K64U+RA8889开发板+7寸TFT LCD(兼容AT070TN92接口即可,分辨率800x480、1024x600均有兼容接口)
RA8889是瑞佑科技推出的一款高集成的液晶控制芯片,其内建强大的图形驱动引擎,支持JPEG硬件解码、AVI解码等功能,与单片机可通过8080/6800/SPI/I2C接口进行通信,输出信号为TTL电平RGB:888,最大可以支持1366x2048的分辨率。先介绍基本硬件框架,如下图:



直接看看实物连接:
这里采用RA8889开发板来测试,使用SPI-4进行举例,开发板零件虽然比较多,但基本上只用到左半部份。
该例中单片机与开发板的实际连接只用到SPI 4条线和1条RA8889的复位线,另外红、黑线为单片机的供电电压3.3V和地线。




二、SPI-4连接电路图:
单片机(注意要使用3.3V供电)和RA8889的接口支持SPI-3线和4线,在这里采用SPI-4线来测试,连接电路图如下:






【软件部份】

三、RA8889核心文件存放在RA8889_01_Kernel文件夹下:
      RA8889_51.c                为底层接口文件
      RA8889_API_51.c         为用户层接口文件
      RA8889_MCU_IF.c         为单片机接口文件(通信接口定义及通信函数)
      UserDef.h                     为用户自定义参数文件
      delay.c                         延迟函数,请根据单片机的主频修正

上面这些添加进工程,同时在main.c中包含对应的.h头文件:



四、通信引脚配置:
/* SPI-4 IO口配置*/
sbit SPI_SS   = P2 ^ 7; // Slave Select(RA8889片选)
sbit SPI_MISO = P2 ^ 6; // Master In Slave Out(接RA8889的SDO)
sbit SPI_MOSI = P2 ^ 5; // Master Out Slave In(接RA8889的SDI)
sbit SPI_SCK= P2 ^ 4; // Serial Clock
sbit RA8889_RST= P2 ^ 3; // Reset RA8889(通过IO口接到RA8889进行硬件复位)***该配置在RA8889_MCU_IF.h文件内。

五、GPIO引脚配置:
STC8H8K64U单片机的GPIO引脚要做一下配置,这点与标准的51单片机有所不同,单片机的P2.6作为MISO,接到RA8889的SDO输出,故该引脚要这样配置:
P2M0 = 0xBF;      //设置P2.6为双向口模式,其它为挽输出模式
P2M1 = 0x00;***该配置放在main.c文件内执行一次即可。

六、其他代码不需要变化,按51单片机的代码正常写:
      /* SPI初始化 */
      SPI4_Init();

      /* RA8889硬件复位 */
      RA8889_RST = 1;
      delay_ms(10);
      RA8889_RST = 0;
      delay_ms(10);
      RA8889_RST = 1;

      /* RA8889初始化 */
      RA8889_Initial();

      /* 循环功能演示 */
      while(1)
      {
                Introduction();    //文字介绍
                Geometry_Demo();   //几何绘图演示
                Show_BMP();      //调用FLASH的BMP图片显示
                Show_JPG();       //调用FLASH的JPG图片显示
                Fade_in_Fade_out();   //图片淡入淡出演示
                Show_AVI();      //调用FLASH的AVI影片播放
                Show_PNG();      //调用FLASH的PNG图片显示
      }

七、实物效果展示:
https://www.bilibili.com/video/BV18Wh4ecEyQ/?share_source=copy_web&vd_source=c0cd4c87f6dcc19bcebab2f4cf3c40db

八、源码下载:



(1)pic文件夹:存放图资,已打包为flash.bin,先烧录到RA8889扩展的FLASH芯片上;
(2)STC89_RA8889_SPI4: Keil源码,推荐使用Keil5。










durongze 发表于 2024-9-11 08:17:54

我是初学者,记录下自己的理解。大佬不要笑话。
0xBF 是 1011_1111其中Pin6(也就是第7位) 配置为0 ,即stc8的2端口6引脚配置成了输出。

bwsu 发表于 2024-9-11 09:00:49

durongze 发表于 2024-9-11 08:17
我是初学者,记录下自己的理解。大佬不要笑话。
0xBF 是 1011_1111其中Pin6(也就是第7位) 配置为0 ,即st ...

没有关系!SPI接法确实容易引起混淆,不熟悉的话对MISO和MOSI都可能迷糊了。
MISO: 主机作为输入端,从机作为输出端;
MOSI:反之。

这里使用的是模拟SPI时序,将P2.6设置为双向口模式,接到RA8889的SPI_MISO,该处单片机为主机,RA8889为从机,此时该脚信号是发送给单片机的。

durongze 发表于 2024-9-11 17:11:18

本帖最后由 durongze 于 2024-9-11 17:13 编辑

我贴下RA8889的8080图,

和6800图


durongze 发表于 2024-9-11 17:40:46

页: [1]
查看完整版本: STC8H8K64U搭配RA8889如何控制TFT彩屏(附SPI4源码)