OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 16199|回复: 27

3.5寸液晶ili9486L驱动老是白屏,求教

[复制链接]

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-4-15
在线时间
6 小时
发表于 2014-4-29 16:13:42 | 显示全部楼层 |阅读模式
我调一块3.5寸液晶,320*480的,是ili9486L的芯片,使用stm32F103ze,用FSMC、NE1和A16接,网上找了好多初始化例程,始终无法显示,都是白屏,可以读取芯片ID,但是显示是9485,麻烦有调过9486L的大侠帮忙指点一下,或者给点初始化代码,以下是我的初始化代码:
void LCD_Init(void)
{
vu16 temp[4];
GPIO_InitTypeDef GPIO_InitStructure;
FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef  readWriteTiming; 
FSMC_NORSRAMTimingInitTypeDef  writeTiming;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); //使能FSMC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);//使能PORTB,D,E,G以及AFIO复用功能时钟

//PORTG推挽输出
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12; //PG11 推挽输出 复位G12 推挽输出 背光
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOG, &GPIO_InitStructure);

  //PORTD复用推挽输出  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15; //
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure); 
  
//PORTE复用推挽输出  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|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_Mode = GPIO_Mode_AF_PP; //复用推挽输出   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOE, &GPIO_InitStructure); 
 
    // //PORTD复用推挽输出 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_11; // PD7--NE1D11--A16
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure); 

readWriteTiming.FSMC_AddressSetupTime = 0x01; //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns
readWriteTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(ADDHLD)模式A未用到
readWriteTiming.FSMC_DataSetupTime = 0x0f; // 数据保存时间为16个HCLK,因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
readWriteTiming.FSMC_CLKDivision = 0x00;
readWriteTiming.FSMC_DataLatency = 0x00;
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A 

writeTiming.FSMC_AddressSetupTime = 0x00; //地址建立时间(ADDSET)为1个HCLK  
writeTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(A
writeTiming.FSMC_DataSetupTime = 0x03; ////数据保存时间为4个HCLK
writeTiming.FSMC_BusTurnAroundDuration = 0x00;
writeTiming.FSMC_CLKDivision = 0x00;
writeTiming.FSMC_DataLatency = 0x00;
writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A 

 
    FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;//  这里我们使用NE1 ,也就对应BTCR[0],[1]。
    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // 不复用数据地址
    FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM;  //SRAM   
    FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据宽度为16bit   
    FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; 
    FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;   
    FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
    FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //  存储器写使能
    FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;   
    FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; // 读写使用不同的时序
    FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; 
    FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //读写时序
    FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;  //写时序

    FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  //初始化FSMC配置

    FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  // 使能BANK1 

delay_ms(50); // delay 50 ms

//复位信号
LCD_RST = 1;
delay_ms(100); // delay 50 ms
LCD_RST = 0;
delay_ms(100); // delay 50 ms
LCD_RST = 1;
delay_ms(220); // delay 50 ms
LCD_WriteReg(0x36, 0x68); // memory access control MY=0, MX=1, MV=1, BGR=1
LCD_WriteReg(0x3A,0x55);  //Interface Pixel Format  ( DPI[3:0] - DBI[2:0] )    16 bit/pixel, CPU interface format
// DM, RM = 0
LCD_WriteReg(0xB0,0x00);  //Interface Mode Control (SDA_EN 000 VSPL HSPL DPL EPL )ARM--DPL: PCLK polarity set (??data fetched at the rising time, //??data fetched at the falling time)SET DPL=1
LCD_WR_REG(0xB6); //Display Function Control
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x42);
LCD_WR_DATA(0x3B);
LCD_WriteReg(0xB4,0x00); //(000 ZINV 00 DINV[1:0]) Z-INV  DINV 
LCD_WR_REG(0xB1); // frame rate = 50Hz, Horizontal line period = 17clk (what does this mean??)
LCD_WR_DATA(0x80);
LCD_WR_DATA(0x11);
LCD_WriteReg(0xB7, 0x07); // extra

// Power settings
LCD_WR_REG(0xC1); //(0100 0 BT[2:0]) (0000 0 VC[2:0])
LCD_WR_DATA(0x41);
LCD_WR_DATA(0x00);
LCD_WR_REG(0xC5);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x53);
LCD_WR_DATA(0x00);
LCD_WriteReg(0xC2, 0x33); //extra
LCD_WriteReg(0x35, 0x00); // enable tearing effect line
//Gamma Setting_10323
LCD_WR_REG(0xE0);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x1B);
LCD_WR_DATA(0x18);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x0E);
LCD_WR_DATA(0x09);
LCD_WR_DATA(0x47);
LCD_WR_DATA(0x94);
LCD_WR_DATA(0x35);
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x05);
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x00);

//Gamma Setting_10323
LCD_WR_REG(0xE1);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x3A);
LCD_WR_DATA(0x37);
LCD_WR_DATA(0x0B);

LCD_WR_DATA(0x0C);
LCD_WR_DATA(0x05);
LCD_WR_DATA(0x4A);
LCD_WR_DATA(0x24);

LCD_WR_DATA(0x39);
LCD_WR_DATA(0x07);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x04);

LCD_WR_DATA(0x27);
LCD_WR_DATA(0x25);
LCD_WR_DATA(0x00);

LCD_WR_REG(0x11);
delay_ms(120);
LCD_WR_REG(0x29);
LCD_WR_REG(0x002C);   //开始写数据

LCD_LED=1;
LCD_Clear(RED);
}
void LCD_Clear(u16 color)
{
  uint32_t index = 0;

LCD_SetCursor(0x00,0x0000); //设置光标 位置 

LCD_WR_REG(0x002C);   
for(index=0;index<153600;index++) LCD_WR_DATA(color);
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-4-15
在线时间
6 小时
 楼主| 发表于 2014-5-18 16:59:17 | 显示全部楼层
费了好大的劲,终于调好了,以上的代码都是没有问题的,是我们的板子做设计的时候,误把D0和D1颠倒了,结果就导致了读出的ID是9485,让我误认为硬件没有问题,可是其它有用到D0、D1数据线的命令,下到液晶上就都是错的了,导致初始化失败。
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-29 23:02:15 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-29 23:02:28 | 显示全部楼层
建议你先读ID试试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-4-15
在线时间
6 小时
 楼主| 发表于 2014-4-30 08:58:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
ID可以读出来,只是读成9485了,跟厂家说的9486L有所偏差,但是9485的资料很难找到,所以我怀疑9486L的ID应该就是9485了,读出来是正确的。现在就是初始化问题了,我看到网上好多9486的例程都有F0~F8的指令,可是datasheet里面根本都找不到这些指令,估计是移植自其它系列上的,没有删除吧,可是我用了哪些例程,都没有一个可以正常用的,所以想请教下原子大哥有没有调过这款芯片,指点下初始化过程
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-30 15:46:16 | 显示全部楼层
回复【4楼】hanter:
---------------------------------
没用过这款芯片.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-4-30 23:06:28 | 显示全部楼层
我的3.5寸液晶是9486,初始化代码如下,使用正常,你试试。

void LCD_GPIOInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef  FSMC_TimingInitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); //使能FSMC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTD,E时钟

/*===========GPIO - LCD 背光控制========================*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  //PD13 推挽输出 背光
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_13);

/*===========GPIO - LCD 数据总线========================*/  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | 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_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);

/*===========GPIO - LCD 复位=======================*/
/**
 * PE1 -> LCD_RESET
 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);

/*===========GPIO - LCD 控制========================*/
/**
 * PD4(NOE) -> RD , PD5(NWE) -> WR 
 * PD7(NE1) -> CS , PD11(A16) -> D/C 
 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
GPIO_Init(GPIOD, &GPIO_InitStructure); 

FSMC_TimingInitStructure.FSMC_AddressSetupTime = 0x02;
FSMC_TimingInitStructure.FSMC_AddressHoldTime = 0x00;
FSMC_TimingInitStructure.FSMC_DataSetupTime = 0x05;
FSMC_TimingInitStructure.FSMC_BusTurnAroundDuration = 0x00;
FSMC_TimingInitStructure.FSMC_CLKDivision = 0x00;
FSMC_TimingInitStructure.FSMC_DataLatency = 0x00;
FSMC_TimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_B;

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_TimingInitStructure;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_TimingInitStructure;   

FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); 
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 

}

void ili9486_WriteRegister(u16 Command)
{
  *(volatile u16 *) (LCD_CMD)= Command;   
}

void ili9486_WriteData(u16 Data)
{
*(volatile u16 *) (LCD_DATA)= Data; 
}

void Delay(u32 nCount)
{
for(;nCount!=0;nCount--);
}

void ili9486_Reset(void)
{
/*===========LCD 复位=======================*/
GPIO_ResetBits(GPIOE, GPIO_Pin_1);
  Delay(0xfff);    
  GPIO_SetBits(GPIOE, GPIO_Pin_1 );    
Delay(0xfff);
}

void ili9486_Init(void)
{
LCD_GPIOInit();
ili9486_Reset();

ili9486_WriteRegister(0x11);
delay_ms(20);
ili9486_WriteRegister(0xD0);
ili9486_WriteData(0x07);
ili9486_WriteData(0x42);
ili9486_WriteData(0x18);

ili9486_WriteRegister(0xD1);
ili9486_WriteData(0x00);
ili9486_WriteData(0x07);//07
ili9486_WriteData(0x10);

ili9486_WriteRegister(0xD2);
ili9486_WriteData(0x01);
ili9486_WriteData(0x02);

ili9486_WriteRegister(0xC0);
ili9486_WriteData(0x10);
ili9486_WriteData(0x3B);
ili9486_WriteData(0x00);
ili9486_WriteData(0x02);
ili9486_WriteData(0x11);

ili9486_WriteRegister(0xC5);
ili9486_WriteData(0x03);

ili9486_WriteRegister(0xC8);
ili9486_WriteData(0x00);
ili9486_WriteData(0x32);
ili9486_WriteData(0x36);
ili9486_WriteData(0x45);
ili9486_WriteData(0x06);
ili9486_WriteData(0x16);
ili9486_WriteData(0x37);
ili9486_WriteData(0x75);
ili9486_WriteData(0x77);
ili9486_WriteData(0x54);
ili9486_WriteData(0x0C);
ili9486_WriteData(0x00);

ili9486_WriteRegister(0x36);
ili9486_WriteData(0x0A);

ili9486_WriteRegister(0x3A);
ili9486_WriteData(0x55);

ili9486_WriteRegister(0x2A);
ili9486_WriteData(0x00);
ili9486_WriteData(0x00);
ili9486_WriteData(0x01);
ili9486_WriteData(0x3F);

ili9486_WriteRegister(0x2B);
ili9486_WriteData(0x00);
ili9486_WriteData(0x00);
ili9486_WriteData(0x01);
ili9486_WriteData(0xdf);
delay_ms(120);
ili9486_WriteRegister(0x29);

}
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-4-15
在线时间
6 小时
 楼主| 发表于 2014-5-2 17:20:02 | 显示全部楼层
回复【6楼】rgzdb:
---------------------------------
 你好,我试了还是不行,还是白屏,挺头疼的,如果方便的话,能不能加下qq聊下,QQ号私信给你了,有些具体的问题我想请教下,谢谢!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-7-25
在线时间
0 小时
发表于 2014-8-7 17:30:57 | 显示全部楼层
回复【8楼】hanter:
---------------------------------
楼主,lcd上电不初始化是不是 背光灯就会亮的? 我的lcd 上电不会亮。怀疑是不是硬件问题
回复 支持 反对

使用道具 举报

56

主题

167

帖子

4

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2013-10-18
在线时间
59 小时
发表于 2014-8-12 10:14:51 | 显示全部楼层
回复【8楼】hanter:
---------------------------------
楼主能否分享你的ili9486液晶驱动的程序?我正在用,可是一直白屏。读到的ID是正确的9486.
我qq邮箱1036839164@qq.com
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2014-8-8
在线时间
0 小时
发表于 2014-8-14 18:53:43 | 显示全部楼层
回复【6楼】rgzdb:
---------------------------------
程序能够分享一下吗?急需^^^^^^^^^^^^^^^^
玩也是一种学习.
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-8-15 14:46:29 | 显示全部楼层
ILI9486 程序,还有自己总结的ILI9486调整横屏、竖屏的方法。

ILI9486.c

8.31 KB, 下载次数: 1366

ILI9486.h

2.11 KB, 下载次数: 1307

ILI9486 TFT显示方向调整.doc

257.5 KB, 下载次数: 1770

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-15 23:08:34 | 显示全部楼层
回复【12楼】rgzdb:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2011-7-11
在线时间
49 小时
发表于 2015-3-4 19:59:26 | 显示全部楼层
回复【12楼】rgzdb:
---------------------------------
你好,我用的代码显示有点不对,应该是接口模式不一样,能分享你的stm32和屏的连接电路图吗
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2015-3-5 22:44:02 | 显示全部楼层

回复【14楼】 chenyh85 :
---------------------------------

我用的开发板接线图。


ministm32f103ze_sch_原理图.pdf

232.63 KB, 下载次数: 982

回复 支持 反对

使用道具 举报

9

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2011-7-11
在线时间
49 小时
发表于 2015-3-6 12:29:17 | 显示全部楼层

这个FSMC的连接没问题,屏那边,我用的ili9486手册里的16bit MCU模式,



回复 支持 反对

使用道具 举报

9

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2011-7-11
在线时间
49 小时
发表于 2015-3-6 12:29:58 | 显示全部楼层
回复【15楼】rgzdb:
---------------------------------
帮我看看我的连接图,谢谢了!
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2015-3-9 12:01:39 | 显示全部楼层
回复【17楼】chenyh85:
---------------------------------
看图你的屏支持好多种模式,你参考STM32F429I-DISCO开发板的图和代码试试。
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2015-4-25
在线时间
158 小时
发表于 2015-5-19 16:38:10 | 显示全部楼层
回复【12楼】rgzdb:
---------------------------------
你好!我根据你的方法显示横屏了,但是XY轴的值没有改变,X轴还是320,Y轴480,我想请教一下设置哪个参数可以颠倒XY的值啊?
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2015-5-19 17:25:38 | 显示全部楼层
改变横竖屏后调用2A,2B寄存器重新设置分辨率
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2015-4-25
在线时间
158 小时
发表于 2015-5-20 10:21:59 | 显示全部楼层
回复【20楼】rgzdb:
---------------------------------
LCD_WR_REG(0X2A); 
LCD_WR_DATA(Xpos>>8); 
LCD_WR_DATA(Xpos&0XFF);  
LCD_WR_REG(0X2B); 
LCD_WR_DATA(Ypos>>8); 
LCD_WR_DATA(Ypos&0XFF);
我是这样设置的,问一下2A,2B是怎么实现分辨率的设置的?这一点不明白。还有要如何修改呢?
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2015-5-20 15:06:53 | 显示全部楼层
注意看手册,2a和 2b设置扫描范围,ili9486_WriteRegister(0x2A); 
ili9486_WriteData(0x00); //X起点坐标0
ili9486_WriteData(0x00); 
ili9486_WriteData(0x01); //X终点坐标320-1
ili9486_WriteData(0x3F); 

ili9486_WriteRegister(0x2B); 
ili9486_WriteData(0x00); //Y起点坐标0
ili9486_WriteData(0x00); 
ili9486_WriteData(0x01); //Y终点坐标480-1
ili9486_WriteData(0xdf); 

上面是竖屏设置,横屏把XY终点坐标互换就行了。
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2015-4-25
在线时间
158 小时
发表于 2015-5-20 16:13:22 | 显示全部楼层
回复【22楼】rgzdb:
---------------------------------
谢谢啊!解决了
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-11-19
在线时间
0 小时
发表于 2016-12-25 21:37:17 | 显示全部楼层
楼主,请问您有STC51驱动的320*240ILI9486L的程序吗?
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-11-19
在线时间
0 小时
发表于 2016-12-25 21:38:19 | 显示全部楼层
我现在也遇到了,和你差不多的问题,希望能请教您!
回复 支持 反对

使用道具 举报

4

主题

103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3299
金钱
3299
注册时间
2016-7-23
在线时间
269 小时
发表于 2017-9-28 15:12:32 | 显示全部楼层
rgzdb 发表于 2014-8-15 14:46
ILI9486 程序,还有自己总结的ILI9486调整横屏、竖屏的方法。

还是白屏啊
回复 支持 反对

使用道具 举报

3

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2013-12-6
在线时间
24 小时
发表于 2017-11-24 14:40:21 | 显示全部楼层
楼主,能分享一下例程嘛?多谢楼主了。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2018-8-5
在线时间
6 小时
发表于 2018-8-6 12:55:21 | 显示全部楼层
楼主经验非常宝贵,学习了,正好遇到相同问题,可以分享下例程文件吗?谢谢好人!flyingsbc@126.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表