STM32f4---TFTLCD显示实验代码(05)

发布者:独行于世最新更新时间:2018-09-29 来源: eefocus关键字:STM32f4  TFTLCD  显示实验 手机看文章 扫描二维码
随时随地手机看文章

   //不同的 LCD驱动器不同的初始化设置

   if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)

//ID 不正确,新增 0X9300判断,因为9341 在未被复位的情况下会被读成9300

  {  

      //尝试9341 ID 的读取    

    LCD_WR_REG(0XD3);          

    lcddev.id=LCD_RD_DATA();  //dummy read    

      lcddev.id=LCD_RD_DATA();    //读到 0X00

       lcddev.id=LCD_RD_DATA();      //读取 93                    

      lcddev.id<<=8;

    lcddev.id|=LCD_RD_DATA();     //读取 41                  

      if(lcddev.id!=0X9341)      //非 9341,尝试是不是6804

    {  

        LCD_WR_REG(0XBF);            

      lcddev.id=LCD_RD_DATA();//dummy read      

        lcddev.id=LCD_RD_DATA();//读回 0X01          

        lcddev.id=LCD_RD_DATA();//读回 0XD0             

         lcddev.id=LCD_RD_DATA();//这里读回 0X68  

      lcddev.id<<=8;

         lcddev.id|=LCD_RD_DATA();//这里读回 0X04     

      if(lcddev.id!=0X6804)    //也不是 6804,尝试看看是不是NT35310

      {  

        LCD_WR_REG(0XD4);          

        lcddev.id=LCD_RD_DATA();  //dummy read   

        lcddev.id=LCD_RD_DATA();  //读回 0X01    

        lcddev.id=LCD_RD_DATA();  //读回 0X53  

        lcddev.id<<=8;    

        lcddev.id|=LCD_RD_DATA();  //这里读回0X10    

        if(lcddev.id!=0X5310)  //也不是NT35310,尝试看看是不是NT35510

        {

          LCD_WR_REG(0XDA00);  

          lcddev.id=LCD_RD_DATA();//读回 0X00    

          LCD_WR_REG(0XDB00);  

          lcddev.id=LCD_RD_DATA();//读回 0X80

          lcddev.id<<=8;  

          LCD_WR_REG(0XDC00);  

          lcddev.id|=LCD_RD_DATA();//读回 0X00    

          if(lcddev.id==0x8000)lcddev.id=0x5510;

//NT35510读回的 ID 是 8000H,为方便区分,我们强制设置为5510

        }

      }

      }     

  }   

  if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510)

{  //如果是这三个 IC,则设置WR时序为最快

    //重新配置写时序控制寄存器的时序                           

    FSMC_Bank1E->BWTR[6]&=~(0XF<<0);  //地址建立时间(ADDSET)清零      

    FSMC_Bank1E->BWTR[6]&=~(0XF<<8);  //数据保存时间清零

    FSMC_Bank1E->BWTR[6]|=3<<0;    //地址建立时间为3个HCLK =18ns  

    FSMC_Bank1E->BWTR[6]|=2<<8;    //数据保存时间为6ns*3 个HCLK=18ns

  }else if(lcddev.id==0X6804||lcddev.id==0XC505)//6804/C505速度上不去,得降低

  {

    //重新配置写时序控制寄存器的时序                           

    FSMC_Bank1E->BWTR[6]&=~(0XF<<0);  //地址建立时间(ADDSET)清零      

    FSMC_Bank1E->BWTR[6]&=~(0XF<<8);  //数据保存时间清零

    FSMC_Bank1E->BWTR[6]|=10<<0;    //地址建立时间为10 个HCLK =60ns  

    FSMC_Bank1E->BWTR[6]|=12<<8;      //数据保存时间为6ns*13个HCLK=78ns

  }

  printf(" LCD ID:%x\r\n",lcddev.id); //打印 LCD ID   

  if(lcddev.id==0X9341)      //9341初始化  

  {  

    ……//9341初始化代码   

  }else if(lcddev.id==0xXXXX)  //其他 LCD 初始化代码

  {          

    ……//其他LCD 驱动 IC,初始化代码    

  }    

  LCD_Display_Dir(0);        //默认为竖屏显示

  LCD_LED=1;         //点亮背光

  LCD_Clear(WHITE);

}

从初始化代码可以看出,LCD 初始化步骤为~在代码中标注:

  GPIO,FSMC 使能。

  GPIO 初始化:GPIO_Init()函数。

  设置引脚复用映射。

  FSMC 初始化:FSMC_NORSRAMInit()函数。

  FSMC 使能:FSMC_NORSRAMCmd()函数。

  不同的 LCD 驱动器的初始化代码。

该函数先对 FSMC 相关 IO 进行初始化,然后是 FSMC 的初始化,这个我们在前面都有介绍,最后根据读到的 LCD  ID,对不同的驱动器执行不同的初始化代码,从上面的代码可以看出,这个初始化函数可以针对十多款不同的驱动 IC执行初始化操作,这样大大提高了整个程序的通用性。大家在以后的学习中应该多使用这样的方式,以提高程序的通用性、兼容性。


关键字:STM32f4  TFTLCD  显示实验 引用地址:STM32f4---TFTLCD显示实验代码(05)

上一篇:STM32f4---TFTLCD显示实验代码(06)
下一篇:STM32f4---TFTLCD显示实验代码(03)

推荐阅读最新更新时间:2024-03-16 16:14

STM32F4更新W25Q16字库源程序
一开始我下载了读取SD卡的程序,但液晶显示屏幕上没反应,于是我就下载了这个关于更新字库的程序,就有反应了。 本实验将实现如下功能:开机的时候先检测W25Q16中是否已经存在字库,如果存在,则按次序显示汉字(三种字体都显示)。如果没有,则检测SD卡和文件系统,并查找SYSTEM文件夹下的FONT文件夹,在该文件夹内查找UNIGBK.BIN、GBK12.FON、GBK16.FON (这几个文件的由来,我们前面已经介绍了)。在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。通过按按键KEY0,可以强制更新字库。同样我们也是用DS0来指示程序正在运行。 需要拷贝到SD卡根目录文件 1,在系统(或字库)更新的时候,必须用到SY
[单片机]
<font color='red'>STM32F4</font>更新W25Q16字库源程序
STM32F4xx_GPIO常用设置
1、初始化时钟:   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE, ENABLE); 2、输出设置:   GPIO_InitTypeDef GPIO_InitStructure;   GPIO_StructInit(&GPIO_InitStructure);   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_9;   GPIO_Init
[单片机]
S3C2440 测试程序(六) LCD显示实验2_触摸小图片切换大图片
实验效果: 点击屏幕中的6副小图片,可将该小图片切换成全屏图片。 1、欲实现小图片,需将原来图片压缩,此处压缩成原来的1/8。代码如下: void Paint_Bmp_Small(int x0,int y0,int h,int l,int k,unsigned char bmp ) { //从 至 为止被显示被压缩了1/k的图片 int x,y; U32 c; int p = 0; h = h/k; l = l/k; for( y = 0 ; y l ; y++ ) // l=240/k { for( x = 0 ; x
[单片机]
第16章 STM32F429必备的HAL库API
16.1 初学者重要提示 对于一些常用的函数,大家一定要熟练的掌握都实现了什么功能,比如HAL_Init,HAL_RCC_OscConfig,HAL_RCC_ClockConfig等。最好的办法是把这些函数的源码读一遍。 16.2 那些是必备的API 这里我们通过一个简单的初始化流程来了解STM32F4的工程模板所必备的库文件和API: 第1步:系统上电复位,进入启动文件startup_stm32f429xx.s,在这个文件里面执行复位中断服务程序。 在复位中断服务程序里面执行函数SystemInit,此函数在文件system_stm32f4xx.c里面。 之后是调用编译器封装好的函数,比如用于MDK的启动文件是调
[单片机]
第16章 <font color='red'>STM32F4</font>29必备的HAL库API
stm32f4 定时捕获
Ⅰ、概述 本文基于上一篇文章“TIM输入波形捕获(脉冲频率)”的基础上进行拓展,上一篇文章主要是捕获波形的频率,本文主要拓展捕获波形的占空比。 笔者实验测试的方法和上一篇文章一样,通过信号发生器产生PWM信号,通过串口发送频率和占空比到上位机(上位机串口助手显示其数值)。(没有信号发生器的朋友可以结合上一篇文章PWM输出做信号源;在同一块板子上也可以使用不同定时器,将PWM输出引脚接在捕获输入引脚) 实验现象:不同频率的实验现象请看上一篇文章(该文章提供的工程笔者也是进行了大量不同频率的测试,误差在几Hz属正常范围)。 1000Hz、20% - 80%占空比现象: 1000Hz、51% - 58%占空比现象: 关于
[单片机]
<font color='red'>stm32f4</font> 定时捕获
STM32F4XX高效驱动篇1-UART
之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下。并奉驱动程序,本程序覆盖uart1-8。 串口驱动,这是在每个单片机中可以说是必备接口。可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口。这样一个高效的驱动是决定您产品优劣的关键因素。本文主要针对STM32F4XX系列芯片做的一个驱动接口层。以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的。 从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大的引脚映射功能,强大的处理能力等,给我留下的深刻的印象。 关于串口的使用方式,个人总结出以下三种: 1) 中断接收,状态查询发送:
[单片机]
STM32学习之:STM32F4XX的三大主体部分
三大模块:电源、IO口、时钟。 一、 首先,我们来看一下电源,下面是电源框图 从上面我们可以看出,电源给内部的三大关键部分供电,一是给ADC供电,这块无需多说,二是电池备份域,VBAT引脚可以连接到一个可选的待机电压由电池供电或由另一个来源,当V DD是断开时保留的备份寄存器的内容和供给的RTC。还一部分主要用来给数字逻辑部分供电,像唤醒逻辑、看门狗、IO等,给内核、内存和数字外设的供电需要在VDD之后加上一个电压调整器。 接下来介绍的就是低功耗模式了 默认情况下,微控制器是在运行模式后,一个系统或一个上电复位。在运行模式的CPU的时钟HCLK和程序代码执行,一些低功耗模式是可用的,以节省电力时,不需要保持运行的中央处理器
[单片机]
STM32F4学习笔记11——CRC循环冗余校验
关于CRC校验有以下几个方面 1.模2除(也就是异或)。 2.多项式与二进制关系(x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0,x的最高幂次为R,转换成对应的二进制数有R+1位。)。 CRC基本原理 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)
[单片机]
<font color='red'>STM32F4</font>学习笔记11——CRC循环冗余校验
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved