你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ili9325初始化失败

[复制链接]
jcyq6201 提问时间:2016-6-1 15:17 /
#include"stm32f10x_lib.h"
//#include "lpc11xx.h"
#include "ili9325.h"
//#include "ascii.h"
//#include "w25q16.h"

u16  POINT_COLOR=BLACK;
u16  BACK_COLOR=WHITE;
#define CS_SET GPIO_SetBits(GPIOB,0X2)
#define CS_CLR GPIO_ResetBits(GPIOB,0X2)
#define WR_SET GPIO_SetBits(GPIOB,0X10)
#define WR_CLR GPIO_ResetBits(GPIOB,0X10)
#define RS_SET GPIO_SetBits(GPIOB,0X20)
#define RS_CLR GPIO_ResetBits(GPIOB,0X20)
#define RST_SET GPIO_SetBits(GPIOB,0X40)
#define RST_CLR GPIO_ResetBits(GPIOB,0X40)
#define RD_SET GPIO_SetBits(GPIOB,0X800)
#define RD_CLR GPIO_ResetBits(GPIOB,0X800)
/**************************************************/
/* 函数功能;短暂延时,为LCD初始化时序服务        */
/**************************************************/       
void delay(u32 i)
{
        i=i*10000;
        while(i>0)
        {
                i--;
        }
}
/*******************************************************/
/* 函数功能:初始化LCD                                 */
/*******************************************************/
void LCD_Init(void)
{
     GPIO_InitTypeDef GPIO_InitStructure;                                        //定义一个GPIO结构体变量

        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB,ENABLE);        //使能各个端口时钟,重要!!!
       
        GPIO_InitStructure.GPIO_Pin = 0XFFF2;//GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   //通用输出推挽
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                   //配置端口速度为50M
          GPIO_Init(GPIOB, &GPIO_InitStructure);                                           //根据参数初始化GPIOB寄存器
        GPIO_Write(GPIOB,0XFFF2);
                delay(60);
       
//************* Start Initial Sequence **********//
        LCD_WR_REG_DATA(0x0001, 0x0100);
        LCD_WR_REG_DATA(0x0002, 0x0700);
        LCD_WR_REG_DATA(0x0003, 0x1030);
        LCD_WR_REG_DATA(0x0004, 0x0000);
        LCD_WR_REG_DATA(0x0008, 0x0202);
        LCD_WR_REG_DATA(0x0009, 0x0000);
        LCD_WR_REG_DATA(0x000A, 0x0000);
        LCD_WR_REG_DATA(0x000C, 0x0000);
        LCD_WR_REG_DATA(0x000D, 0x0000);
        LCD_WR_REG_DATA(0x000F, 0x0000);
//*************Power On sequence ****************//
        LCD_WR_REG_DATA(0x0010, 0x0000);
        LCD_WR_REG_DATA(0x0011, 0x0007);
        LCD_WR_REG_DATA(0x0012, 0x0000);
        LCD_WR_REG_DATA(0x0013, 0x0000);
        LCD_WR_REG_DATA(0x0007, 0x0001);
        delay(200);
        LCD_WR_REG_DATA(0x0010, 0x1690);
        LCD_WR_REG_DATA(0x0011, 0x0227);
        delay(250);
        LCD_WR_REG_DATA(0x0012, 0x001A);
        delay(250);
        LCD_WR_REG_DATA(0x0013, 0x1400);
        LCD_WR_REG_DATA(0x0029, 0x0024);
        LCD_WR_REG_DATA(0x002B, 0x000C);
        delay(250);
        LCD_WR_REG_DATA(0x0020, 0x0000);
        LCD_WR_REG_DATA(0x0021, 0x0000);
// ----------- Adjust the Gamma Curve ----------//
        LCD_WR_REG_DATA(0x0030, 0x0000);
        LCD_WR_REG_DATA(0x0031, 0x0707);
        LCD_WR_REG_DATA(0x0032, 0x0307);
        LCD_WR_REG_DATA(0x0035, 0x0200);
        LCD_WR_REG_DATA(0x0036, 0x0008);
        LCD_WR_REG_DATA(0x0037, 0x0004);
        LCD_WR_REG_DATA(0x0038, 0x0000);
        LCD_WR_REG_DATA(0x0039, 0x0707);
        LCD_WR_REG_DATA(0x003C, 0x0002);
        LCD_WR_REG_DATA(0x003D, 0x1D04);
//------------------ Set GRAM area ---------------//
        LCD_WR_REG_DATA(0x0050, 0x0000);
        LCD_WR_REG_DATA(0x0051, 0x00EF);
        LCD_WR_REG_DATA(0x0052, 0x0000);
        LCD_WR_REG_DATA(0x0053, 0x013F);
        LCD_WR_REG_DATA(0x0060, 0xA700);
        LCD_WR_REG_DATA(0x0061, 0x0001);
        LCD_WR_REG_DATA(0x006A, 0x0000);
//-------------- Partial Display Control ---------//
        LCD_WR_REG_DATA(0x0080, 0x0000);
        LCD_WR_REG_DATA(0x0081, 0x0000);
        LCD_WR_REG_DATA(0x0082, 0x0000);
        LCD_WR_REG_DATA(0x0083, 0x0000);
        LCD_WR_REG_DATA(0x0084, 0x0000);
        LCD_WR_REG_DATA(0x0085, 0x0000);
//-------------- Panel Control -------------------//
        LCD_WR_REG_DATA(0x0090, 0x0010);
        LCD_WR_REG_DATA(0x0092, 0x0600);
        LCD_WR_REG_DATA(0x0007, 0x0133); // 开启显示
        delay(260 );                      
}

/******************************************************/
/* 函数功能;先选择寄存器号,再写数据到里面           */
/* 入口参数;REG:寄存器号  VALUE:数据值             */
/* 说明:    该函数是前两个函数的合成,也就是上面两个 */
/*           函数一般的用法就是这样组合。             */
/******************************************************/
void LCD_WR_REG_DATA(u16 REG, u16 VALUE)
{
           LCD_WR_REG(REG);
           LCD_WR_DATA(VALUE);   
}
/****************************************************/
/* 函数功能:确定往哪个寄存器写数                   */
/* 入口参数;reg:选择的寄存器                      */
/* 说明:    寄存器号是16位数,8位连接方式需要写两次*/
/****************************************************/
void LCD_WR_REG(u16 reg)               
{ u16 M;          
  RS_CLR;        //RS=0;
  CS_CLR;        //CS=0;
  M=GPIO_ReadOutputData(GPIOB);
  M&=0X0FF;M|=(reg&0X0FF00);
  GPIO_Write(GPIOB,M);       
   WR_CLR;        //WR=0;
   WR_SET;        //WR=1;
  M=GPIO_ReadOutputData(GPIOB);
  M&=0X0FF;M|=((reg<<8)&0X0FF00);
  GPIO_Write(GPIOB,M);
        WR_CLR;        //WR=0;
        WR_SET;        //WR=1;
        RS_SET;        //RS=1;       
}
/***************************************************/
/* 函数功能;给ILI9325的寄存器写数据               */
/* 入口参数;val:16位数据                         */
/* 说明:    写16位数据,学习板上的LCD采用8位连接,*/
/*           所以,16位数据分两次写进寄存器,先写高*/
/*           位,再写低位。                        */
/* 注意:使用时需要先使用LCD_WR_REG(reg)选择要把数 */
/*       据写到哪个寄存器里面。                    */
/***************************************************/
void LCD_WR_DATA(u16 val)
{          u16 M;          
    RS_SET;  //RS=1;
        CS_CLR;        //CS=0;
  M=GPIO_ReadOutputData(GPIOB);
  M&=0X00FF;M|=(val&0X0FF00);
  GPIO_Write(GPIOB,M);       
   WR_CLR;        //WR=0;
   WR_SET;        //WR=1;
  M=GPIO_ReadOutputData(GPIOB);
  M&=0X00FF;M|=((val<<8)&0X0FF00);
  GPIO_Write(GPIOB,M);                       
        WR_CLR;        //WR=0;
        WR_SET;        //WR=1;
        CS_SET;        //CS=1;         
}
void LCD_Clear(u16 color)
{
  u32 temp;
  LCD_WR_REG_DATA(0x0020,0);//设置X坐标位置
  LCD_WR_REG_DATA(0x0021,0);//设置Y坐标位置
  LCD_WR_REG(0x0022);                                //指向RAM寄存器,准备写数据到RAM
        for(temp=0;temp<76800;temp++)
        {
                LCD_WR_DATA(color);   
        }LCD_WR_REG_DATA(0x0007, 0x0133); // 开启显示*/
}


收藏 评论1 发布时间:2016-6-1 15:17

举报

1个回答
无薪税绵 回答时间:2018-3-5 14:09:14
请先确认硬件是否正常。

下面提供一些 ili9325 的资料(来源于野火开发板)

ILI9325的英文资料
ILI9325DS_ID9325(英文资料).pdf (1.17 MB, 下载次数: 0)

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版