您好,欢迎光临本网站![请登录][注册会员]  
文件名称: ili932x系列驱动程序
  所属分类: 嵌入式
  开发工具:
  文件大小: 7kb
  下载次数: 0
  上传时间: 2011-04-09
  提 供 者: gaop*****
 详细说明: /****************************************************************************** * 文件名称:ili932x.c * 摘 要:支持ILI9320和ILI9325驱动IC控制的QVGA显示屏,使用16位并行传输 到头文件中配置 屏幕使用方向和驱动IC类型 注意:16位数据线色彩分布>> BGR(565) *重要说明! 在.h文件中,#define Immediately时是立即显示当前画面 而如果#define Delay,则只有在执行了LCD_WR_REG(0x0007,0x0173); 之后才会显示,执行一次LCD_WR_REG(0x0007,0x0173)后,所有写入数 据都立即显示。 #define Delay一般用在开机画面的显示,防止显示出全屏图像的刷新 过程 ******************************************************************************/ #include "stm32f10x_lib.h" #include "ili932x.h& quot; #include "spi_flash.h" /**************************************************************** 函数名:Lcd配置函数 功能:配置所有和Lcd相关的GPIO和时钟 引脚分配为: PE——16Bit数据总线 PD15——Lcd_rst PD14——Lcd_rd* PD13——Lcd_wr PD12——Lcd_rs* PD11——Lcd_cs PB5——Lcd_blaklight 背光靠场效应管驱动背光模块 *****************************************************************/ void Lcd_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /*开启相应时钟 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE); /*所有Lcd引脚配置为推挽输出*/ /*16位数据*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure); /*控制脚*/ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_Init(GPIOD, &GPIO_InitStructure); /*背光控制*/ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3; GPIO_Init(GPIOA, &GPIO_InitStructure); } /********************************************** 函数名:Lcd初始化函数 功能:初始化Lcd 入口参数:无 返回值:无 ***********************************************/ void Lcd_Initialize(void) { Lcd_Light_ON; DataToWrite(0xffff);//数据线全高 Set_nWr; Set_Cs; Set_Rs; Set_nRd; Set_Rst; Set_Rst; Delay_nms(1); Clr_Rst; Delay_nms(1); Set_Rst; Delay_nms(1); #ifdef ILI9325 LCD_WR_REG(0x00e3,0x3008); LCD_WR_REG(0x00e7,0x0012); LCD_WR_REG(0x00ef,0x1231);//Set the internal vcore voltage LCD_WR_REG(0x0001,0x0100);//S #endif #ifdef ILI9320 LCD_WR_REG(0x00e5,0x8000); LCD_WR_REG(0x0000,0x0001); LCD_WR_REG(0x0001,0x0100);//S Delay_nms(10); #endif LCD_WR_REG(0x0002,0x0700);//Line inversion #if ID_AM==000 LCD_WR_REG(0x0003,0x0000);//屏幕旋转控制 TFM=0,TRI=0,SWAP=1,16 bits system interface swap RGB to BRG,此处ORG和HWM 为0 #elif ID_AM==001 LCD_WR_REG(0x0003,0x0008); #elif ID_AM==010 LCD_WR_REG(0x0003,0x0010); #elif ID_AM==011 LCD_WR_REG(0x0003,0x0018); #elif ID_AM==100 LCD_WR_REG(0x0003,0x0020); #elif ID_AM==101 LCD_WR_REG(0x0003,0x0028); #elif ID_AM==110 LCD_WR_REG(0x0003,0x0030); #elif ID_AM==111 LCD_WR_REG(0x0003,0x0038); #endif LCD_WR_REG(0x0004,0x0000); LCD_WR_REG(0x0008,0x0207); LCD_WR_REG(0x0009,0x0000); LCD_WR_REG(0x000a,0x0000); LCD_WR_REG(0x000c,0x0001);//此处配置接口类型 16位 system接口 LCD_WR_REG(0x000d,0x0000); LCD_WR_REG(0x000f,0x0000); //电源配置 LCD_WR_REG(0x0010,0x0000); LCD_WR_REG(0x0011,0x0000); LCD_WR_REG(0x0012,0x0000); LCD_WR_REG(0x0013,0x0000); Delay_nms(200); LCD_WR_REG(0x0010,0x17b0); LCD_WR_REG(0x0011,0x0137); Delay_nms(50); LCD_WR_REG(0x0012,0x0139); Delay_nms(50); LCD_WR_REG(0x0013,0x1700); LCD_WR_REG(0x0029,0x000c); //LCD_WR_REG(0x002b,0x000d); Delay_nms(50); #if ID_AM==000 LCD_WR_REG(0x0020,0x00ef);//GRAM水平起始位置 LCD_WR_REG(0x0021,0x013f); #elif ID_AM==001 LCD_WR_REG(0x0020,0x00ef); LCD_WR_REG(0x0021,0x013f); #elif ID_AM==010 LCD_WR_REG(0x0020,0x0000); LCD_WR_REG(0x0021,0x013f); #elif ID_AM==011 LCD_WR_REG(0x0020,0x0000); LCD_WR_REG(0x0021,0x013f); #elif ID_AM==100 LCD_WR_REG(0x0020,0x00ef); LCD_WR_REG(0x0021,0x0000); #elif ID_AM==101 LCD_WR_REG(0x0020,0x00ef); LCD_WR_REG(0x0021,0x0000); #elif ID_AM==110 LCD_WR_REG(0x0020,0x0000); LCD_WR_REG(0x0021,0x0000); #elif ID_AM==111 LCD_WR_REG(0x0020,0x0000); LCD_WR_REG(0x0021,0x0000); #endif LCD_WR_REG(0x0030,0x0000); LCD_WR_REG(0x0031,0x0507); LCD_WR_REG(0x0032,0x0104); LCD_WR_REG(0x0035,0x0105); LCD_WR_REG(0x0036,0x0404); LCD_WR_REG(0x0037,0x0603); LCD_WR_REG(0x0038,0x0004); LCD_WR_REG(0x0039,0x0007); LCD_WR_REG(0x003c,0x0501); LCD_WR_REG(0x003d,0x0404); LCD_WR_REG(0x0050,0x0000);//水平 GRAM起始位置 LCD_WR_REG(0x0051,0x00ef);//水平GRAM终止位置 LCD_WR_REG(0x0052,0x0000);//垂直GRAM起始位置 LCD_WR_REG(0x0053,0x013f);//垂直GRAM终止位置 #ifdef ILI9325 LCD_WR_REG(0x0060,0xa700);//G #endif #ifdef ILI9320 LCD_WR_REG(0x0060,0x2700);//G #endif LCD_WR_REG(0x0061,0x0001);//Enables the grayscale inversion of the image by setting REV=1.?????????????????????????????? LCD_WR_REG(0x006a,0x0000);//不使用卷曲功能 LCD_WR_REG(0x0080,0x0000); LCD_WR_REG(0x0081,0x0000); LCD_WR_REG(0x0082,0x0000); LCD_WR_REG(0x0083,0x0000); LCD_WR_REG(0x0084,0x0000); LCD_WR_REG(0x0085,0x0000); LCD_WR_REG(0x0090,0x0010); LCD_WR_REG(0x0092,0x0000); LCD_WR_REG(0x0093,0x0003); LCD_WR_REG(0x0095,0x0110); LCD_WR_REG(0x0097,0x0000); LCD_WR_REG(0x0098,0x0000); //显示画面写入 0x0130是不显示当前画面 //0x0173是显示当前画面 LCD_WR_REG(0x0007,0x0130); #ifdef Immediately LCD_WR_REG(0x0007,0x0173); #endif //第一个像素的读取数据是无效值,这里事先读取一次,舍去无效值 } /**************************************/ #ifndef __ILI932X_H #define __ILI932X_H //定义驱动IC是ILI9320还是ILI9325 #define ILI9325 //ILI9325 //屏幕旋转定义 数字按照 ID[1:0]AM 按照PDF中的配置定义 #define ID_AM 110 //屏幕开始时显示方式,注意:当IDelay时显示第一幅画面是逐像素刷新的 //此时必须手动在刷新结束后加上 LCD_WR_REG(0x0007,0x0173);才能显示 //当Immediately时没有被注释掉是不需要此过程 #define Delay//Display Delay//Immediately //硬件相关的子函数 #define nWrPin 0x2000 #define CsPin 0x800 #define RsPin 0x1000 #define nRdPin 0x4000 #define RstPin 0x8000 #define Lcd_Light_ON GPIO_SetBits(GPIOA,GPIO_Pin_3); #define Lcd_Light_OFF GPIO_ResetBits(GPIOA,GPIO_Pin_3); #define DataToWrite(PORTE) (*((volatile unsigned long *) 0x4001180C) = PORTE) #define Set_nWr (*((volatile unsigned long *) 0x40011410) = nWrPin) #define Clr_nWr (*((volatile unsigned long *) 0x40011414) = nWrPin) #define Set_Cs (*((volatile unsigned long *) 0x40011410) = CsPin) #define Clr_Cs (*((volatile unsigned long *) 0x40011414) = CsPin) #define Set_Rs (*((volatile unsigned long *) 0x40011410) = RsPin) #define Clr_Rs (*((volatile unsigned long *) 0x40011414) = RsPin) #define Set_nRd (*((volatile unsigned long *) 0x40011410) = nRdPin) #define Clr_nRd (*((volatile unsigned long *) 0x40011414) = nRdPin) #define Set_Rst (*((volatile unsigned long *) 0x40011410) = RstPin) #define Clr_Rst (*((volatile unsigned long *) 0x40011414) = RstPin) ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: ILI9320 ILI9325 驱动程序
 输入关键字,在本站1000多万海量源码库中尽情搜索: