TFT LCD 9320 驱动

时间:2014-01-30 08:11:41
【文件属性】:

文件名称:TFT LCD 9320 驱动

文件大小:17KB

文件格式:C

更新时间:2014-01-30 08:11:41

TFT LCD 9320

TFT LCD 2.4寸屏 驱动程序 //头文件配置: #include "stm32f10x_lib.h" #include "Lcdili9320.h" #include "Delay_nus.h" #include "Delay_nms.h" #include "spi_flash.h" //底层硬件相关配置----------------- //--------------------------------- /**************************************************************** 函数名:Lcd配置函数 功能:配置所有和Lcd相关的GPIO和时钟 引脚分配为: PE——16Bit数据总线 PD15——Lcd_rst PD14——Lcd_rs PD13——Lcd_wr PD12——Lcd_rd PD11——Lcd_cs PB10——Lcd_blaklight 背光靠场效应管驱动背光模块 *****************************************************************/ void Lcd_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /*开启相应时钟 */ RCC_APB2PeriphClockCmd(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_5; GPIO_Init(GPIOB, &GPIO_InitStructure); } /************************************** 函数名:Lcd所有引脚变高 功能:与Lcd有关的所有引脚全部变高电平 入口参数:无 返回值:无 ***********************************/ void Lcd_AllPin_H(void) { GPIO_SetBits(GPIOE,GPIO_Pin_All);//16位数据线变高 GPIO_SetBits(GPIOD,GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);//控制脚变高 } void Lcd_Data_All_L(void) { GPIO_ResetBits(GPIOE,GPIO_Pin_All); //16位数据线变高 } void Lcd_Rd_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void Lcd_Rd_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_12); } void Lcd_Rst_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_15); } void Lcd_Rst_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_15); } void Lcd_Cs_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_11); } void Lcd_Cs_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_11); } void Lcd_Rs_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_14); } void Lcd_Rs_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_14); } void Lcd_Wr_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_13); } void Lcd_Wr_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_13); } //通用子程序--------------------- //------------------------------ /********************************************** 函数名:Lcd初始化函数 功能:初始化Lcd 入口参数:无 返回值:无 ***********************************************/ void Lcd_Init(void) { Lcd_Light_ON; Lcd_AllPin_H();//所有引脚变高 Lcd_Rst_H(); Delay_nms(1); Lcd_Rst_L(); Delay_nms(1);//10 Lcd_Rst_H(); Delay_nms(1);//50 //开始初始化 LCD_WR_REG(0x00e5,0x8000);//set the internal vcore voltage不知道干什么的????? LCD_WR_REG(0x0000,0x0001);//开启内部OSC Delay_nms(10);//延时10ms等待晶体稳定 LCD_WR_REG(0x0001,0x0100);//SS=1 S极输出移动方向S720到S1. SM=0 【GS=0】 G极扫描方向从上到下(详细DATASHEET) LCD_WR_REG(0x0002,0x0700);//B/C=1 EOR=1 set the line inversion?不知道干什么???? LCD_WR_REG(0x0003,0x1030);//TFM=0,TRI=0,SWAP=1,16位system interface 写GRAM时翻转RGB数据到BRG数据?翻转干什么????? //HWM=0,高速GRAM写操作禁止???????????????????高速写操作是否是激活RBG或其他动态画面显 //示模式??????? AM=0,ID[1.0]=11 AC由左到右又下到上自增 LCD_WR_REG(0x0004,0x0000);//比例缩放设置 LCD_WR_REG(0x0008,0x0202); LCD_WR_REG(0x0009,0x0000); LCD_WR_REG(0x000a,0x0000); LCD_WR_REG(0x000c,0x0001);//system接口 显示静止画面 LCD_WR_REG(0x000d,0x0000); LCD_WR_REG(0x000f,0x0000);//RBG 接口极性设置 DOTCLK ENABLE HSYNC??????????????????????????? LCD_WR_REG(0x0050,0x0000);//水平 GRAM起始位置 LCD_WR_REG(0x0051,0x00ef);//水平GRAM终止位置 LCD_WR_REG(0x0052,0x0000);//垂直GRAM起始位置 LCD_WR_REG(0x0053,0x013f);//垂直GRAM终止位置 LCD_WR_REG(0x0060,0x2700);//G扫描设置 从G1开始 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); /*电源设置*/ 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); Delay_nms(50); LCD_WR_REG(0x0020,0x0000);//GRAM水平起始位置 LCD_WR_REG(0x0021,0x0000);// 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(0x0007,0x0073);//写入0173是显示当前GRAM内容 写入0073是不显示当前 }


网友评论

  • 程序还行 不错
  • 东西不错,就是我自己没用上
  • 应该可以作为参考用吧,运行不起来。
  • 手头无用的显示屏可以用来实验。
  • 没有头文件,程序不完整