STM32单片机ILI9325系列TFT的驱动原理解析文档格式.docx
- 文档编号:17599677
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:23
- 大小:21.12KB
STM32单片机ILI9325系列TFT的驱动原理解析文档格式.docx
《STM32单片机ILI9325系列TFT的驱动原理解析文档格式.docx》由会员分享,可在线阅读,更多相关《STM32单片机ILI9325系列TFT的驱动原理解析文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
#definenRstPin_RCCRCC_APB2Periph_GPIOC
#definenRstPin_PortGPIOC
#definenRstPinGPIO_Pin_12
#defineLightPin_RCCRCC_APB2Periph_GPIOB
#defineLightPin_PortGPIOB
#defineLightPinGPIO_Pin_0
//-----------------------------------------
#defineSet_nWrnCsPin_Port-》BSRR=nWrPin//GPIO_SetBits(nWrPin_Port,nWrPin)
#defineClr_nWrnCsPin_Port-》BRR=nWrPin//GPIO_ResetBits(nWrPin_Port,nWrPin)
#defineSet_CsnCsPin_Port-》BSRR=nCsPin//GPIO_SetBits(nCsPin_Port,nCsPin)
#defineClr_CsnCsPin_Port-》BRR=nCsPin//GPIO_ResetBits(nCsPin_Port,nCsPin)
#defineSet_RsRsPin_Port-》BSRR=RsPin//GPIO_SetBits(RsPin_Port,RsPin)
#defineClr_RsRsPin_Port-》BRR=RsPin//GPIO_ResetBits(RsPin_Port,RsPin)
#defineSet_nRdnRdPin_Port-》BSRR=nRdPin//GPIO_SetBits(nRdPin_Port,nRdPin)
#defineClr_nRdnRdPin_Port-》BRR=nRdPin//GPIO_ResetBits(nRdPin_Port,nRdPin)
#defineSet_RstnRstPin_Port-》BSRR=nRstPin//GPIO_SetBits(nRstPin_Port,nRstPin)
#defineClr_RstnRstPin_Port-》BRR=nRstPin//GPIO_ResetBits(nRstPin_Port,nRstPin)
#defineSet_LightLightPin_Port-》BSRR=LightPin//GPIO_SetBits(LightPin_Port,LightPin)
#defineClr_LightLightPin_Port-》BRR=LightPin//GPIO_ResetBits(LightPin_Port,LightPin)
//---------------------------------
#defineWhite0xFFFF
#defineBlack0x0000
#defineGrey0xF7DE
#defineBlue0x001F
#defineBlue20x051F
#defineRed0xF800
#defineMagenta0xF81F
#defineGreen0x07E0
#defineCyan0x7FFF
#defineYellow0xFFE0
voidLcd_Configuration(void);
//初始化GPIO
voidLCD_ili9320_IniTIalizTIon(void);
//初始化ILI9320---uCGUI需要使用--1
voidLCD_ili9320_Reset(void);
voidLCD_ili9320_BackLight(u8status);
//背光
voidLCD_ili9320_SetCursor(u16x,u16y);
//设置坐标---uCGUI需要使用--2
voidLCD_ili9320_SetWindows(u16StartX,u16StartY,u16EndX,u16EndY);
//设置窗体
voidLCD_ili9320_DrawPicture(u16StartX,u16StartY,u16EndX,u16EndY,u16*pic);
//画图片
voidLCD_ili9320_SetPoint(u16x,u16y,u16point);
//画点---uCGUI需要使用--3
u16LCD_ili9320_GetPoint(u16x,u16y);
//读取点颜色---uCGUI需要使用--4
voidLCD_ili9320_PutChar(u16x,u16y,u8c,u16charColor,u16bkColor);
//显示字符--需要字体头文件
voidLCD_ili9320_Clear(u16dat);
//清屏
voidLCD_ili9320_Delay(u32nCount);
voidLCD_ili9320_Test(void);
voidLCD_ili9320_WriteData(u16dat);
//写数据
voidLCD_ili9320_WriteIndex(u16idx);
//写地址
u16LCD_ili9320_ReadData(void);
//读数据
u16LCD_ili9320_ReadRegister(u16index);
//读寄存器
voidLCD_ili9320_WriteRegister(u16index,u16dat);
//写寄存器
u16LCD_ili9320_BGR2RGB(u16c);
//转换颜色格式
u16LCD_ili9320_Color565(u32RGB);
//RGB颜色转为16位(565)
voidLCD_ili9320_DrawHLine(uint16_tusX1,uint16_tusY1,uint16_tusX2,uint16_tusColor);
//水平线---uCGUI需要使用--5
voidLCD_ili9320_DrawVLine(uint16_tusX1,uint16_tusY1,uint16_tusY2,uint16_tusColor);
//垂直线---uCGUI需要使用--6
voidLCD_ili9320_FillRect(u16x0,u16y0,u16x1,u16y1,u16color);
//填充矩形---uCGUI需要使用--7
voidLCD_ili9320_Line(u16x0,u16y0,u16x1,u16y1,u16color);
//画任意直线线
voidLCD_ili9320_Circle(u16cx,u16cy,u16r,u16color,u8fill);
//画园
voidLCD_ili9320_Rectangle(u16x0,u16y0,u16x1,u16y1,u16color,u8fill);
//画矩形--填充或者不填充
voidLCD_ili9320_Square(u16x0,u16y0,u16with,u16color,u8fill);
//画正方形--填充或者不填充
voidLCD_ili9320_Text(u16x,u16y,u8*str,u16len,u16Color,u16bkColor);
//简单测试--显示渐变色条
#endif
---------第三部分----------------ili9320.c------代码分析------
#include“ili9320.h”
#include“ili9320_font.h”
voidLcd_ConfiguraTIon(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB“RCC_APB2Periph_GPIOC,ENABLE);
//初始化数据引脚---DB0~~DB7是PB8~~PB15DB8~~DB15是PC0~~PC7----------//
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOC,
RCC_APB2PeriphClockCmd(nCsPin_RCC,ENABLE);
//控制脚CS------PC11----//
GPIO_InitStructure.GPIO_Pin=nCsPin;
GPIO_Init(nCsPin_Port,
RCC_APB2PeriphClockCmd(RsPin_RCC,ENABLE);
//控制脚RS-------PC8---//
GPIO_InitStructure.GPIO_Pin=RsPin;
GPIO_Init(RsPin_Port,
RCC_APB2PeriphClockCmd(nWrPin_RCC,ENABLE);
//控制脚WR----PC9--//
GPIO_InitStructure.GPIO_Pin=nWrPin;
GPIO_Init(nWrPin_Port,
RCC_APB2PeriphClockCmd(nRdPin_RCC,ENABLE);
//控制脚RD---PC10--//
GPIO_InitStructure.GPIO_Pin=nRdPin;
GPIO_Init(nRdPin_Port,
RCC_APB2PeriphClockCmd(nRstPin_RCC,ENABLE);
//控制脚RST---PC12--//
GPIO_InitStructure.GPIO_Pin=nRstPin;
GPIO_Init(nRstPin_Port,
RCC_APB2PeriphClockCmd(LightPin_RCC,ENABLE);
//控制脚背光--PB00---//
GPIO_InitStructure.GPIO_Pin=LightPin;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(LightPin_Port,
}
voiddelayms(intcount)//X1ms
inti,j;
for(i=0;
ifor(j=0;
j《1000;
j++);
voidLCD_ili9320_IniTIaliztion(void)//--功能:
初始化ILI9320控制器
volatileu16i,j,k;
u32DeviceCode=0;
Lcd_Configuration();
LCD_ili9320_BackLight(0);
//关背光
delayms(200);
Clr_Rst;
LCD_ili9320_WriteData(0xffff);
Set_Rst;
Set_nWr;
Set_Cs;
Set_Rs;
Set_nRd;
Set_Rst;
LCD_ili9320_WriteRegister(0x0000,0x0001);
//StartOCS
DeviceCode=LCD_ili9320_ReadRegister(0x0000);
//读控制器型号ILI9320
if(DeviceCode==0x9320||0x9300)
LCD_ili9320_WriteRegister(0x00,0x0000);
LCD_ili9320_WriteRegister(0x01,0x0100);
//驱动器输出控制
LCD_ili9320_WriteRegister(0x02,0x0700);
//LCD驱动波形控制-反转
LCD_ili9320_WriteRegister(0x03,0x1030);
//进入模式--F-
LCD_ili9320_WriteRegister(0x04,0x0000);
//重新调整控制寄存器大小---缩放
LCD_ili9320_WriteRegister(0x08,0x0202);
//DisplayContral2.(0x0207)
LCD_ili9320_WriteRegister(0x09,0x0000);
//DisplayContral3.(0x0000)
LCD_ili9320_WriteRegister(0x0a,0x0000);
//Frame信号输出间隔
LCD_ili9320_WriteRegister(0x0c,(1《《0));
//RGB显示接口控制1--16位
LCD_ili9320_WriteRegister(0x0d,0x0000);
//帧标记的位置
LCD_ili9320_WriteRegister(0x0f,0x0000);
//RGB显示接口控制1
delayms(5);
LCD_ili9320_WriteRegister(0x07,0x0101);
//DisplayContral.
LCD_ili9320_WriteRegister(0x10,(1《《12)|(0《《8)|(1《《7)|(1《《6)|(0《《4));
//PowerControl1.(0x16b0)
LCD_ili9320_WriteRegister(0x11,0x0007);
//PowerControl2.(0x0001)
LCD_ili9320_WriteRegister(0x12,(1《《8)|(1《《4)|(0《《0));
//PowerControl3.(0x0138)
LCD_ili9320_WriteRegister(0x13,0x0b00);
//PowerControl4.
LCD_ili9320_WriteRegister(0x29,0x0000);
//PowerControl7.
LCD_ili9320_WriteRegister(0x2b,(1《《14)|(1《《4));
//帧速率和色彩控制---70
LCD_ili9320_WriteRegister(0x50,0);
//SetXStar240*320
LCD_ili9320_WriteRegister(0x51,239);
//水平GRAM终止位置SetXEnd.
LCD_ili9320_WriteRegister(0x52,0);
//SetYStar
LCD_ili9320_WriteRegister(0x53,319);
//SetYEnd.t.
LCD_ili9320_WriteRegister(0x60,0x2700);
//门扫描控制器
LCD_ili9320_WriteRegister(0x61,0x0001);
//DriverOutputControl.
LCD_ili9320_WriteRegister(0x6a,0x0000);
//VerticalSrcollControl.
LCD_ili9320_WriteRegister(0x80,0x0000);
//局部影像控制器1
LCD_ili9320_WriteRegister(0x81,0x0000);
//局部影像控制器1--起始地址
LCD_ili9320_WriteRegister(0x82,0x0000);
//局部影像控制器1--终止地址
LCD_ili9320_WriteRegister(0x83,0x0000);
//DisplsyPosition?
PartialDisplay2.
LCD_ili9320_WriteRegister(0x84,0x0000);
//RAMAddressStart?
LCD_ili9320_WriteRegister(0x85,0x0000);
//RAMAddressEnd?
LCD_ili9320_WriteRegister(0x90,(0《《7)|(16《《0));
//平板接口控制器1(0x0013)
LCD_ili9320_WriteRegister(0x92,0x0000);
//PanelInterfaceContral2.(0x0000)
LCD_ili9320_WriteRegister(0x93,0x0001);
//PanelInterfaceContral3.
LCD_ili9320_WriteRegister(0x95,0x0110);
//FrameCycleContral.(0x0110)
LCD_ili9320_WriteRegister(0x97,(0《《8));
//
LCD_ili9320_WriteRegister(0x98,0x0000);
//FrameCycleContral.
LCD_ili9320_WriteRegister(0x07,0x0173);
//(0x0173)
elseif(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
LCD_ili9320_WriteRegister(0x00e7,0x0010);
//开启内部时钟
LCD_ili9320_WriteRegister(0x0001,0x0100);
LCD_ili9320_WriteRegister(0x0002,0x0700);
//电源开启
LCD_ili9320_WriteRegister(0x0003,(1《《12)|(3《《4)|(0《《3));
//65K
LCD_ili9320_WriteRegister(0x0004,0x0000);
LCD_ili9320_WriteRegister(0x0008,0x0207);
LCD_ili9320_WriteRegister(0x0009,0x0000);
LCD_ili9320_WriteRegister(0x000a,0x0000);
//displaysetting
LCD_ili9320_WriteRegister(0x000c,0x0001);
//displaysetting
LCD_ili9320_WriteRegister(0x000d,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 单片机 ILI9325 系列 TFT 驱动 原理 解析
