3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
3.2inch 320x240 Touch LCD (C) 
用户手册 
驱动芯片 
类型 
接口 
背光 
色阶指数 
分辨率 
LCD 控制芯片 ILI9325,触摸面板控制芯片 XPT2046 
TFT 
LCD:16bit 并行,触摸面板:SPI 
LED 背光 
65536 色 
320x240  (Pixel) 
简介 
 
 
目录 
3.2inch 320x240 Touch LCD (C)  用户手册 ................................................................................. 1 
简介 ................................................................................................................................. 1 
1.  硬件资源 .................................................................................................................. 2 
ILI9325 ........................................................................................................... 2 
XPT2046 ......................................................................................................... 4 
2.  硬件说明 .................................................................................................................. 5 
3.  示例程序 .................................................................................................................. 6 
4.  附件:四线触摸屏的原理与校准 ............................................. 错误!未定义书签。 
1.1 
1.2 
 
 
 
版本 V2.2,2015 年 5 月 19 日 
1 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
1.  硬件资源 
1.1  ILI9325 
 
 
ILI9325 是一个 240x320(RGB)分辨率、262144 色的 TFT  液晶显示屏的驱动
芯片;172820 (240 x 320x 18/8)  字节的 RAM。每个像素点深度可以达到18  位。 
ILI9325 有以下几种数据接口模式: 
1) 
2)  VSYNC  接口(system interface + VSYNC, internal clock, DB[17:0]) 
3) 
4)  RGB 6-/16-/18-bit  接口(DOTCLK, VSYNC, HSYNC, ENABLE, DB[17:0]). 
i80-system MPU  接口(8-/9-/16-/18-bit bus width) 
serial data transfer  接口(SPI) 
 
此屏的 ILI9325 的 18 位 RGB 赋值与  LCD GRAM 的对应关系如图所示: 
 
从图中可以看出,ILI9325  在 16  位模式下面,GRAM Data 有用的是:D17~D10  和 
D8~D1,  D9 和  D0  没有用到,实际上在我们  LCD  模块里面,  ILI9341  的  D9  和  D0
没有引出,ILI9325  的  D17~D10  和  D8~D1 对应  MCU  的  D15~D0。MCU  的  16  位
数据,最低  5  位代表蓝色,中间  6  位为绿色,最高  5  位为红色;数值越大,表
示该颜色越深。 
 
重要寄存器介绍 
寄存器详细介绍请参阅  ILI9325 的  datasheet。这里只介绍一些重要的寄存器设置: 
输入设置(R03h): 
 
AM:控制 GRAM 的更新方向   
  当  AM=0  地址在水平写入方向得以更新   
  当  AM=1  地址在垂直写入方向得以更新 
 
I/D[1:0]:  当更新一个像素数据时,  I/D[1:0]位控制地址计数器(AC)自动增加或
者减少  1。详细请见下图: 
 
版本 V2.2,2015 年 5 月 19 日 
2 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
ORG  :当窗口地址区域产生后,原点地址的移动根据  ID 的设定。当使用高速写 
RAM  模式写数据到窗口地址区域这个功能被使能。   
  ORG=0  :原点地址不会移动,在这种情况下,在窗口地址区域根据  GRAM  的
地址映射指定一个地址开始写操作。 
  ORG=1  :原始地址为“00000h”  根据  ID[1 :0]的  设定来移动。 
 
BGR :  根据被写入的数据交换  R  和  B  的顺序 
  BGR=0  :根据  RGB  的顺序写入像素数据   
  BGR=1  :交换  RGB  数据为  BGR  写到  GRAM 
 
GRAM  水平垂直变址设置(R20h, R21h) 
水平位置寄存器变址  0x20  垂直变址寄存器变址  0x21  GRAM  Horizontal/Vertical 
Address Set (R20h, R21h) 
 
AD[16:0]:用于设置变址计数器(AC)的初始化数值。当数据写入内部的  GARM  中
时,变址计数器(AC)会根据  AM  和  I/D  位的设置来自动的更新其数值。当从内部 
GRAM  中读数据时变址计数器不会自动更新。 
 
 
 
 
版本 V2.2,2015 年 5 月 19 日 
3 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
写数据到  GRAM (R22h) 
该寄存器是  GRAM  的访问端口,当通过这个寄存器更新显示数据的时候,地址计
 
数器会自动增加或者减少。 
 
GRAM  地址映射和读/写 
ILI9325  有一个容量为  172800 bytes 的内部图片 RAM (GRAM),用来存储显示数据。
一像素由十八位数据构成,  GRAM 可以通过  i80 系统接口,SPI  或者是  RGB  接口
来访问,以下是  GRAM  在  i80  系统接口下读写的时序“ 
 
 
 
 
1.2  XPT2046 
  XPT2046  是一款  4  线制电阻式触摸屏控制器,内含  12  位分辨率  125KHz  转
换速率逐步逼近型  A/D  转换器。 
  XPT2046  支持从  1.5V  到  5.25V  的低电压  I/O  接口。 
  XPT2046  能通过执行两次  A/D  转换查出被按的屏幕位置,除此之外,还可以
测量加在触摸屏上的压力。内部自带  2.5V  参考电压,可以作为辅助输入、温
度测量和电池监测之用,电池监测的电压范围可以从  0V  到  5V。 
  XPT2046  片内集成有一个温度传感器。在  2.7V  的典型工作状态下,关闭参考
电压,功耗可小于  0.75mW。XPT2046  采用微小的封装形式:TSSOP-16,QFN-16 
和  VFBGA-48。  工作温度范围为-40℃~+85℃。与  ADS7846、TSC2046、
AK4182A  完全兼容。 
 
版本 V2.2,2015 年 5 月 19 日 
4 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
2.  硬件说明 
引脚号  标识  描述 
功能 
1  5V 
5V 电源 
当 5V 供电时(1,2 脚接 5V 电源),3.3V 端(33,
34 脚输出 3.3V 电压) 
2  GND 
接地 
GND 
3  D0 
4  D1 
5  D2 
6  D3 
7  D4 
8  D5 
9  D6 
10  D7 
11  D8 
12  D9 
13  D10 
14  D11 
15  D12 
16  D13 
17  D14 
18  D15 
数据线 
D0-D15 
19  CS 
LCD 片选信号  低电平选择 LCD 
20  RS 
21  WR 
22  RD 
指令/数据 寄
存器选择 
RS = 0:指令寄存器 
RS = 1:数据寄存器 
写动作 
读动作 
WR = 0,RD = 1 
WR = 1,RD = 0 
23  RESET  芯片重启 
低电平重启芯片 
24  NC 
  
  
25  BLVCC 
5V 或 3.3V 
26  BLGND  接地 
背光灯 VCC 
背光灯 GND 
27  BLCNT 
背光灯亮度调
节 
可以使用 PWM 来控制背光灯亮度 
28  TP_IRQ  触摸面板中断  检测到触摸面板有按下则为低电平 
29  TP_CS 
30  TP_SCK 
31  TP_SI 
触摸面板片选
信号 
触摸面板 SPI 时
钟信号 
触摸面板 SPI 数
据输入 
低电平选择触摸面板 
连接到 SPI 的 SCK 
连接到 SPI 的 MOSI 
32  TP_SO  触摸面板 SPI 数 连接到 SPI 的 MISO 
版本 V2.2,2015 年 5 月 19 日 
5 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
据输出 
33  3.3V 
+3.3 电源 
当 3.3V 供电时(33,34 脚输入 3.3V) 1,2 脚悬空 
34  GND 
接地 
  
 
3.  示例程序 
本手册使用主控芯片 STM32F103RCT6 的开发板说明本款 LCD 的基本使用方法。用
户也可以采用其他类似的开发板进行开发。 
 
3.2inch 320x240 Touch LCD (C)和 STM32F103RCT6 连接接口图: 
 
 
版本 V2.2,2015 年 5 月 19 日 
 
6 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
程序流程: 
 
初始化 LCD 控制器的 IO 
复位 LCD,初始化 LCD 控制器的寄存器 
初始化触摸面板 SPI 
进 行 触 摸 板 校
 
判断是否有触摸 
 
否   
是   
读取触摸板的坐标 
转换成显示坐标,显示到 LCD 上 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
版本 V2.2,2015 年 5 月 19 日 
7 
3.2inch 320x240 Touch LCD (C)用户手册 
 
  微雪电子 
源代码解析: 
 
   
   
   
   
 
 
 
 
 
 
 
 
0 
90 
180 
270 
/*下面宏定义的是图像的旋转角度*/ 
//#define DISP_ORIENTATION 
//#define DISP_ORIENTATION 
//#define DISP_ORIENTATION 
#define DISP_ORIENTATION 
#define Set_Cs        GPIO_SetBits(GPIOC, GPIO_Pin_6);    //CS=1; 
#define Clr_Cs        GPIO_ResetBits(GPIOC, GPIO_Pin_6);  //CS=0; 
 
#define Set_Rs        GPIO_SetBits(GPIOC, GPIO_Pin_7);    //RS=1; 
#define Clr_Rs        GPIO_ResetBits(GPIOC, GPIO_Pin_7);  //RS=0; 
 
#define Set_nWr       GPIO_SetBits(GPIOC, GPIO_Pin_1);    //WR=1; 
#define Clr_nWr       GPIO_ResetBits(GPIOC, GPIO_Pin_1);  //WR=0; 
 
#define Set_nRd       GPIO_SetBits(GPIOC, GPIO_Pin_2);    //RD=1; 
#define Clr_nRd       GPIO_ResetBits(GPIOC, GPIO_Pin_2);  // RD=0; 
/* 写命令函数 */ 
__inline void LCD_WriteIndex(uint16_t index) 
{ 
Clr_Rs;              //RS=0 
Set_nRd;             //RD=0 
LCD_Delay(0);        //延时 
GPIOB->ODR = index; /*写命令 */ 
LCD_Delay(0);        //延时 
Clr_nWr;             //WR=0   
Set_nWr;             //WR=1 
 
 
8 
} 
/* 写数据函数 */ 
__inline void LCD_WriteData(uint16_t data) 
{ 
Set_Rs;               //RS=1 
LCD_Delay(0);         //延时 
GPIOB->ODR = data;   /*写数据*/ 
LCD_Delay(0);        //延时 
Clr_nWr;             //WR=0 
Set_nWr;             //WR=1 
} 
/* 读数据函数 */ 
__inline uint16_t LCD_ReadData(void) 
{ 
uint16_t value; 
Set_Rs; 
版本 V2.2,2015 年 5 月 19 日