- 目录第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第七讲 单片机驱动彩色液晶屏 控制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
分享到:
上一篇:一招教你判断TFT接口连接是否正常(RA8889,RA8876的应用)
下一篇:第四讲 单片机驱动彩色液晶屏 控制RA8889软件:绘图
>>延伸阅读:0