HomeCases › 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化
English is not ready for this page. Showing Chinese for now.

第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化

2023-12-30

目录

第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频

第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架

第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化
第四讲 单片机驱动彩色液晶屏 控制RA8889软件:绘图

第五讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part1.内部字库

第六讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part2.外接字库

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

第八讲 单片机驱动彩色液晶屏 控制RA8889软件:显示图片

第九讲 单片机驱动彩色液晶屏 控制RA8889软件:认识显存并进行读、写、复制

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

第十一讲 单片机驱动彩色液晶屏 控制RA8889软件:播放avi视频

第十二讲 单片机驱动彩色液晶屏 如何打包bin档

第十三讲 单片机驱动彩色液晶屏 bin档的烧录方法

 

先来了解一下RA8889的软件框架:

**液晶屏参数、频率、通信接口等配置均放在userdef.h中用宏定义设置:

一、初始化配置硬件部份:**

(1)MCU接口通信

若是并口,请选择Parallel_8080;这里是采用SPI-4,其它类推:

**
// #define Parallel_8080

// #define Parallel_6800

// #define Serial_3

 #define Serial_4

// #define Serial_I2C

 

(2)液晶屏参数

**
 #define AT070TN92  //##INNOLUX_800x480

 

该宏定义实际参数在RA8889.c里面,不同的屏,不同的分辨率,只需要在此模板进行微调即可,最后六个参数调整水平和垂直方向的偏移:

**
 #ifdef AT070TN92

  //**[10h]**//

  Select_LCD_Sync_Mode();  // Enable XVSYNC, XHSYNC, XDE.

  // Select_LCD_DE_Mode(); // XVSYNC & XHSYNC in idle state.

  

  PCLK_Falling();

  //PCLK_Rising();

  VSCAN_T_to_B();

  PDATA_Set_RGB();

  HSYNC_Low_Active();

  VSYNC_Low_Active();

  DE_High_Active();

  //DE_Low_Active();

  LCD_HorizontalWidth_VerticalHeight(800,480);

  /* [16h][17h] : Figure 19-3 [HND] Non Display or Back porch (pixels)  = (HNDR + 1) * 8 + HNDFTR 

   [18h] :   Figure 19-3 [HST] Start Position or Front porch (pixels) = (HSTR + 1)x8

   [19h] :   Figure 19-3 [HPW] Pulse Width(pixels)      = (HPW + 1)x8

  */

  LCD_Horizontal_Non_Display(38);

  LCD_HSYNC_Start_Position(208);

  LCD_HSYNC_Pulse_Width(8);

    

  /* [1Ch][1Dh] : Figure 19-3 [VND] Non-Display Period(Line) = (VNDR + 1)

   [1Eh] :   Figure 19-3 [VST] Start Position(Line)  = (VSTR + 1)

   [1Fh] :   Figure 19-3 [VPW] Pulse Width(Line)   = (VPWR + 1)

  */

  LCD_Vertical_Non_Display(8);

  LCD_VSYNC_Start_Position(22);

  LCD_VSYNC_Pulse_Width(15);

 #endif

 

(3)FLASH型号:

已经做好配置,直接选择,主流FLASH均支持,一般选用NOR FLASH即可。

**
// #define MX25L25635E

 #define W25Q256FV

 

(4)外接集通字库型号:

可支持的字库芯片型号以及字形码请参考RA8889的规格书说明。

**
// #define GT21L16T1W

// #define GT30L16U2W

 #define GT30L24T3Y

// #define GT30L24M1Z

// #define GT30L32S4W

// #define GT20L24F6Y

// #define GT21L24S1W

 

**二、初始化配置 软件部分

(1)频率**

分别是晶振频率、SDRAM频率、主频和液晶扫描频率(即PCLK)。晶振要求使用10MHz,SDRAM最高可支持到166MH,CORE最高支持到133MHz,实际可依据显示效果适当微调。

**
#define OSC_FREQ 10 // OSC clock frequency, unit: MHz.

#define DRAM_FREQ 120 // SDRAM clock frequency, unit: MHz.

#define CORE_FREQ 120 // Core (system) clock frequency, unit: MHz.

#define SCAN_FREQ 30 // Panel Scan clock frequency, unit: MHz.



(2)MCU通信接口和色深

RA8889可支持如下几种方式,MCU可采用8bit或者16bit通信标准;色深可定义为8bpp、16bpp或者24bpp,其中24bpp在16bit通信标准下衍生两种模式,具体可以参考RA8889的规格书,显示效果差别不大。
**
// #define MCU_8bit_ColorDepth_8bpp    

 #define MCU_8bit_ColorDepth_16bpp  

// #define MCU_8bit_ColorDepth_24bpp

// #define MCU_16bit_ColorDepth_16bpp  

// #define MCU_16bit_ColorDepth_24bpp_Mode_1

// #define MCU_16bit_ColorDepth_24bpp_Mode_2



(3)图像、画布宽度,屏的宽度和高度

画布和图像宽度一般是相同,这个参数一般是设定为屏宽的n倍。
**
#define canvas_image_width  1600 //画布宽度

#define main_image_width  1600 //图像宽度

#define LCD_width  800   //屏宽

#define LCD_height  480  //屏高

 

三、主程序的初始化部份

(1)GPIO配置及延时函数
**
 /* System Clocks Configuration */

 RCC_Configuration();

 delay_init(72); 

 GPIO_Configuration();

 SPI_Peripheral_Init();





(2)配置FSMC
**
 /* Enable the FSMC Clock */

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

 FSMC_LCD_Init_H();

 

(3)RA8889初始化

该初始化会调用userdef.h中的宏定义参数,再将参数写入相关寄存器。

**
 RA8889_Initial();

 

(4)测试显示

初始化做完之后,再打开显示。彩虹条是用于液晶屏显示测试的,若正常显示,则说明屏的初始化已基本做完。

**
 Display_ON();  //打开显示

 Color_Bar_ON();  //显示彩虹条

 delay_seconds(1);

 Color_Bar_OFF(); //关闭彩虹条

 

彩虹条如下图,注意颜色排列顺序由黑、蓝、绿…白色排列,循环下去。若颜色不一致 或者有偏移,再检查接线以及微调屏参。

第三讲 THE END

				分享到: