STM32单片机ILI9325系列TFT的驱动原理解析.docx

上传人:b****5 文档编号:4664771 上传时间:2022-12-07 格式:DOCX 页数:23 大小:21.12KB
下载 相关 举报
STM32单片机ILI9325系列TFT的驱动原理解析.docx_第1页
第1页 / 共23页
STM32单片机ILI9325系列TFT的驱动原理解析.docx_第2页
第2页 / 共23页
STM32单片机ILI9325系列TFT的驱动原理解析.docx_第3页
第3页 / 共23页
STM32单片机ILI9325系列TFT的驱动原理解析.docx_第4页
第4页 / 共23页
STM32单片机ILI9325系列TFT的驱动原理解析.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

STM32单片机ILI9325系列TFT的驱动原理解析.docx

《STM32单片机ILI9325系列TFT的驱动原理解析.docx》由会员分享,可在线阅读,更多相关《STM32单片机ILI9325系列TFT的驱动原理解析.docx(23页珍藏版)》请在冰豆网上搜索。

STM32单片机ILI9325系列TFT的驱动原理解析.docx

STM32单片机ILI9325系列TFT的驱动原理解析

STM32单片机ILI9325系列TFT的驱动原理解析

为了更好,更深入学习了解ILI9325系列TFT的驱动原理,自己做了一块TFT板子。

为了方便测试,在上面集成了STM32芯片,到时候做实验的时候就焊接STM32测试,如果只是使用,就直接焊接TFT就行了。

板子还在做,先上原理图与PCB。

 

-------------------------等板子回来,再测试,总结继续-------------

--------板子回来了,焊接好了,简单测试了一下!

-----------

---------第二部分---------------ili9320.h------------------代码简单分析------

#ifndef_ILI9320_H_

#define_ILI9320_H_

#include“stm32f10x.h”

#defineDB0_7_RCCRCC_APB2Periph_GPIOB

#defineDB_8_15_RCCRCC_APB2Periph_GPIOC

//-------------------------------------------

#definenCsPin_RCCRCC_APB2Periph_GPIOC

#definenCsPin_PortGPIOC

#definenCsPinGPIO_Pin_11

#defineRsPin_RCCRCC_APB2Periph_GPIOC

#defineRsPin_PortGPIOC

#defineRsPinGPIO_Pin_8

#definenWrPin_RCCRCC_APB2Periph_GPIOC

#definenWrPin_PortGPIOC

#definenWrPinGPIO_Pin_9

#definenRdPin_RCCRCC_APB2Periph_GPIOC

#definenRdPin_PortGPIOC

#definenRdPinGPIO_Pin_10

#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_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIOC,

RCC_APB2PeriphClockCmd(nCsPin_RCC,ENABLE);//控制脚CS------PC11----//

GPIO_InitStructure.GPIO_Pin=nCsPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(nCsPin_Port,

RCC_APB2PeriphClockCmd(RsPin_RCC,ENABLE);//控制脚RS-------PC8---//

GPIO_InitStructure.GPIO_Pin=RsPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(RsPin_Port,

RCC_APB2PeriphClockCmd(nWrPin_RCC,ENABLE);//控制脚WR----PC9--//

GPIO_InitStructure.GPIO_Pin=nWrPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(nWrPin_Port,

RCC_APB2PeriphClockCmd(nRdPin_RCC,ENABLE);//控制脚RD---PC10--//

GPIO_InitStructure.GPIO_Pin=nRdPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(nRdPin_Port,

RCC_APB2PeriphClockCmd(nRstPin_RCC,ENABLE);//控制脚RST---PC12--//

GPIO_InitStructure.GPIO_Pin=nRstPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(nRstPin_Port,

RCC_APB2PeriphClockCmd(LightPin_RCC,ENABLE);//控制脚背光--PB00---//

GPIO_InitStructure.GPIO_Pin=LightPin;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

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;

delayms(200);

LCD_ili9320_WriteData(0xffff);

Set_Rst;Set_nWr;Set_Cs;Set_Rs;Set_nRd;Set_Rst;

delayms(200);

LCD_ili9320_WriteRegister(0x0000,0x0001);//StartOCS

delayms(200);

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.

delayms(5);

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?

PartialDisplay2.

LCD_ili9320_WriteRegister(0x85,0x0000);//RAMAddressEnd?

PartialDisplay2.

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(0x0000,0x0001);//开启内部时钟

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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1