精华内容
下载资源
问答
  • 读取了个把星期也读取出正确的ID号,最终放弃了读取,考虑是不是液晶屏根本没有输出功能。在使用SPI驱动以后,也没有显示白屏或者任何可以让人...SPI相关头文件定义: /* DCX ~ PD4 */ //--SDO /* SDA ~ PD5 */...

    读取了个把星期也没读取出正确的ID号,最终放弃了读取,考虑是不是液晶屏根本没有输出功能。在使用SPI驱动以后,也没有显示白屏或者任何可以让人感觉驱动正确的现象。最终也放弃了在SPI上搞出个现象。转而使用RGB协议直驱,但还是没有结果,最后还是使用SPI初始化后,再使用RGB驱动一次,发现有一次闪屏。于是乎有以下结论:SPI驱动时序没有错,屏不能读取数据。

    SPI的驱动函数段:

    SPI相关头文件定义:

      /* DCX    ~ PD4  */ //--SDO
      /* SDA    ~ PD5  */
      /* SCL    ~ PD6  */
      /* CSB    ~ PD7  */
      /* RESET  ~ PD8  */
    #define Lcd_DCX_Out(x) {x? GPIO_SetBits(GPIOD, GPIO_Pin_4):GPIO_ResetBits(GPIOD, GPIO_Pin_4);}  //DCX数据命令线

    #define Lcd_SDA_Out(x) {x? GPIO_SetBits(GPIOD, GPIO_Pin_5):GPIO_ResetBits(GPIOD, GPIO_Pin_5);}  //SPI数据线

    #define Lcd_SCL_Out(x) {x? GPIO_SetBits(GPIOD, GPIO_Pin_6):GPIO_ResetBits(GPIOD, GPIO_Pin_6);}  //SPI时钟线

    #define Lcd_CSB_Out(x) {x? GPIO_SetBits(GPIOD, GPIO_Pin_7):GPIO_ResetBits(GPIOD, GPIO_Pin_7);}  //片选信号

    #define Lcd_RST_Out(x) {x? GPIO_SetBits(GPIOD, GPIO_Pin_8):GPIO_ResetBits(GPIOD, GPIO_Pin_8);}  //复位信号 

    #define Lcd_SDA_Read() GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_5)

    SPI源文件定义:

    //SPI_IO口初始化
    void Lcd_Spi_GPIO_Init(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
      
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);    
      /* DCX    ~ PD4  */
      /* SDA    ~ PD5  */
      /* SCL    ~ PD6  */
      /* CSB    ~ PD7  */
      /* RESET  ~ PD8  */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
      
      Lcd_DCX_Out(1);
      Lcd_CSB_Out(1);
      Lcd_SCL_Out(1);
      Lcd_SDA_Out(1);
      Lcd_RST_Out(1);
    }

    /****************************************************************/
    void Lcd_Spi_Senddata(uint8_t dat)
    {
      uint8_t i;
      
      for(i=0; i<8; i++)
      {
        Lcd_SCL_Out(0);    
        if(dat&0x80)
        {
          Lcd_SDA_Out(1);
        }
        else
        {
          Lcd_SDA_Out(0);
        }     
        Lcd_SCL_Out(1);
        dat <<= 1;
      }
    }


    void Lcd_Spi_Writecmd(uint8_t cmd)
    {
      Lcd_CSB_Out(0);
      Lcd_DCX_Out(0);
      
      Lcd_Spi_Senddata(cmd);
      
      Lcd_CSB_Out(1);
    }

    /***************************************************************/
    void Lcd_Spi_Writedata(uint8_t data)
    {
      Lcd_CSB_Out(0);
      Lcd_DCX_Out(1);
      
      Lcd_Spi_Senddata(data);
      
      Lcd_CSB_Out(1);
    }

    /**********************LCD***************************/
    void Lcd_Spi_Init(void)
    {
      Lcd_Reset();

      //***************************************************************//LCD SETING
      Lcd_Spi_Writecmd(0x11);
      delay_ms(120);
      
      //PAGE0 1
      Lcd_Spi_Writecmd(0xFF); 
      Lcd_Spi_Writedata(0x77);
      Lcd_Spi_Writedata(0x01);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x10);

      Lcd_Spi_Writecmd(0xC0);//Display Line Setting 
      Lcd_Spi_Writedata(0x3B);
      Lcd_Spi_Writedata(0x00);

      Lcd_Spi_Writecmd(0xC1);//Porch Control   
      Lcd_Spi_Writedata(0x0D);
      Lcd_Spi_Writedata(0x02);

      Lcd_Spi_Writecmd(0xC2);// Inversion set
      Lcd_Spi_Writedata(0x37);//31 2-DOT 37-Column
      Lcd_Spi_Writedata(0x05);

      Lcd_Spi_Writecmd(0xC3); //SET RGB MODE
      Lcd_Spi_Writedata(0x02); //00-DE MODE ,80-HV MODE     PCLK N
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);

      Lcd_Spi_Writecmd(0xB0);    
      Lcd_Spi_Writedata(0x00); //Positive Voltage Gamma Control
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x18);
      Lcd_Spi_Writedata(0x0E);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x06);
      Lcd_Spi_Writedata(0x07);
      Lcd_Spi_Writedata(0x08);
      Lcd_Spi_Writedata(0x07);
      Lcd_Spi_Writedata(0x22);
      Lcd_Spi_Writedata(0x04);
      Lcd_Spi_Writedata(0x12);
      Lcd_Spi_Writedata(0x0F);
      Lcd_Spi_Writedata(0xAA);
      Lcd_Spi_Writedata(0x31);
      Lcd_Spi_Writedata(0x18);


      Lcd_Spi_Writecmd(0xB1);   
      Lcd_Spi_Writedata(0x00); //Negative Voltage Gamma Control
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x19);
      Lcd_Spi_Writedata(0x0E);
      Lcd_Spi_Writedata(0x12);
      Lcd_Spi_Writedata(0x07);
      Lcd_Spi_Writedata(0x08);
      Lcd_Spi_Writedata(0x08);
      Lcd_Spi_Writedata(0x08);
      Lcd_Spi_Writedata(0x22);
      Lcd_Spi_Writedata(0x04);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0xA9);
      Lcd_Spi_Writedata(0x32);
      Lcd_Spi_Writedata(0x18);

      //*******power set********//
      //PAGE2
      Lcd_Spi_Writecmd(0xFF);    
      Lcd_Spi_Writedata(0x77);
      Lcd_Spi_Writedata(0x01);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x11);

      Lcd_Spi_Writecmd(0xB0);//Vop Amplitude setting
      Lcd_Spi_Writedata(0x60); //Vop=4.7375v

      Lcd_Spi_Writecmd(0xB1); //VCOM amplitude setting 
      Lcd_Spi_Writedata(0x26); //VCOM=32

      Lcd_Spi_Writecmd(0xB2); //VGH Voltage setting  
      Lcd_Spi_Writedata(0x07); //VGH=15v

      Lcd_Spi_Writecmd(0xB3); //TEST Command Setting  
      Lcd_Spi_Writedata(0x80);

      Lcd_Spi_Writecmd(0xB5); //VGL Voltage setting   
      Lcd_Spi_Writedata(0x49); //VGL=-10.17v

      Lcd_Spi_Writecmd(0xB7);//Power Control 1    
      Lcd_Spi_Writedata(0x85);

      Lcd_Spi_Writecmd(0xB8); //Power Control 2  
      Lcd_Spi_Writedata(0x21); //AVDD=6.6 & AVCL=-4.6

      Lcd_Spi_Writecmd(0xC1);//Source pre_drive timing set1    
      Lcd_Spi_Writedata(0x78);

      Lcd_Spi_Writecmd(0xC2);//Source EQ2 Setting    
      Lcd_Spi_Writedata(0x78);
      //*********GIP SET*************//
      Lcd_Spi_Writecmd(0xE0);    
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x1B);
      Lcd_Spi_Writedata(0x02);

      Lcd_Spi_Writecmd(0xE1);   
      Lcd_Spi_Writedata(0x08);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x07);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x44);
      Lcd_Spi_Writedata(0x44);

      Lcd_Spi_Writecmd(0xE2);   
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x44);
      Lcd_Spi_Writedata(0x44);
      Lcd_Spi_Writedata(0xED);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0xEC);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);

      Lcd_Spi_Writecmd(0xE3);    
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x11);

      Lcd_Spi_Writecmd(0xE4);    
      Lcd_Spi_Writedata(0x44);
      Lcd_Spi_Writedata(0x44);

      Lcd_Spi_Writecmd(0xE5);    
      Lcd_Spi_Writedata(0x0A);
      Lcd_Spi_Writedata(0xE9);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x0C);
      Lcd_Spi_Writedata(0xEB);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x0E);
      Lcd_Spi_Writedata(0xED);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x10);
      Lcd_Spi_Writedata(0xEF);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);

      Lcd_Spi_Writecmd(0xE6);    
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x11);
      Lcd_Spi_Writedata(0x11);

      Lcd_Spi_Writecmd(0xE7);    
      Lcd_Spi_Writedata(0x44);
      Lcd_Spi_Writedata(0x44);

      Lcd_Spi_Writecmd(0xE8);   
      Lcd_Spi_Writedata(0x09);
      Lcd_Spi_Writedata(0xE8);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x0B);
      Lcd_Spi_Writedata(0xEA);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x0D);
      Lcd_Spi_Writedata(0xEC);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
      Lcd_Spi_Writedata(0x0F);
      Lcd_Spi_Writedata(0xEE);
      Lcd_Spi_Writedata(0xD8);
      Lcd_Spi_Writedata(0xA0);
       
      Lcd_Spi_Writecmd(0xEB);   
      Lcd_Spi_Writedata(0x02);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0xE4);
      Lcd_Spi_Writedata(0xE4);
      Lcd_Spi_Writedata(0x88);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x40);

      Lcd_Spi_Writecmd(0xEC);    
      Lcd_Spi_Writedata(0x3C);
      Lcd_Spi_Writedata(0x00);

      Lcd_Spi_Writecmd(0xED);    
      Lcd_Spi_Writedata(0xAB);
      Lcd_Spi_Writedata(0x89);
      Lcd_Spi_Writedata(0x76);
      Lcd_Spi_Writedata(0x54);
      Lcd_Spi_Writedata(0x02);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0xFF);
      Lcd_Spi_Writedata(0x20);
      Lcd_Spi_Writedata(0x45);
      Lcd_Spi_Writedata(0x67);
      Lcd_Spi_Writedata(0x98);
      Lcd_Spi_Writedata(0xBA);

      //-----------VAP & VAN---------------
      Lcd_Spi_Writecmd(0xFF);    
      Lcd_Spi_Writedata(0x77);
      Lcd_Spi_Writedata(0x01);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x13);

      Lcd_Spi_Writecmd(0xE5);    
      Lcd_Spi_Writedata(0xE4);
       
      Lcd_Spi_Writecmd(0xFF);//page     
      Lcd_Spi_Writedata(0x77);
      Lcd_Spi_Writedata(0x01);   
      Lcd_Spi_Writedata(0x00);
      Lcd_Spi_Writedata(0x00);   
      Lcd_Spi_Writedata(0x00);
        
      Lcd_Spi_Writecmd(0x36); 
      Lcd_Spi_Writedata(0x00); //10-180

      Lcd_Spi_Writecmd(0x3A); 
      Lcd_Spi_Writedata(0x70); //RGB888 24bit

      //Display on
      Lcd_Spi_Writecmd(0x29);                     
      delay_ms(25);
    }

    使用以上函数,可以初始化屏幕,但屏幕并不会有任何显示。这点和之前的MCU接口的TFT、LCD不一样。也不知道其他RGB屏是不是也是这个样。

    下面需要使用RGB的数据协议,但ST7701S的手册上关于RGB的时序只有以下:

    以上是DE模式的时序图,但除了时序图基本上就没有啥了,按照这个时序图,简单的写了一个时序。

    时序是错误的,除了能闪一下屏就没啥现象了,所以暂时不贴代码了。下一章调试出结果后继续。

     

     

    展开全文
  • 自己写的dll的简介

    2009-12-12 10:17:40
    头文件和引入库,DLL的使用就跟普通静态库的使用啥区别,只除了DLL要和EXE一起发布。 显示调用与隐式调用的优缺点 显示调用使用复杂,但能更加有效地使用内存,因为DLL是在EXE运行时(run time)加载,必须...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 86 5.8 NULL可以合法地用作函数指针吗? 86 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 87 5.10 但是如果NULL的值改变了,比如在...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 86 5.8 NULL可以合法地用作函数指针吗? 86 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 87 5.10 但是如果NULL的值改变了,比如在...
  •  5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 5.8 NULL可以合法地用作函数指针吗? 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10但是如果NULL的值改变了,比如在使用非零...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么?  5.8 NULL可以合法地用作函数指针吗?  5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢?  5.10但是如果NULL的值改变了,比如在使用非...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 5.8 NULL可以合法地用作函数指针吗? 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10但是如果NULL的值改变了,比如在使用非零...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 57 5.8 NULL可以合法地用作函数指针吗? 57 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 58 5.10 但是如果NULL的值改变了,比如在...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 57 5.8 NULL可以合法地用作函数指针吗? 57 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 58 5.10 但是如果NULL的值改变了,比如在...
  • o 3.17 什么容易的显示枚举值符号的方法? * 4. 表达式 o 4.1 为什么这样的代码: a[i] = i++; 不能工作? o 4.2 使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ * i++); 返回 49?不管按什么顺序...
  • 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而变量 都放在private 里。 #ifndef WIDGET_H #define WIDGET_H #...
  •  5.7 我的编译器提供的头文件定义的NULL为0L。为什么?  5.8 NULL可以合法地用作函数指针吗?  5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢?  5.10 但是如果NULL的值改变了,比如在使用非...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 5.8 NULL可以合法地用作函数指针吗? 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10 但是如果NULL的值改变了,比如在使用非零内部空...
  • 5.7 我的编译器提供的头文件定义的NULL为0L。为什么? 5.8 NULL可以合法地用作函数指针吗? 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10 但是如果NULL的值改变了,比如在使用非零内部空...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    2.17 什么容易的显示枚举值符号的方法? . . . . . . . . . . . . . . . 11 3 表达式13 3.1 为什么这样的代码: a[i] = i++; 不能工作? . . . . . . . . . . . . 13 3.2 使用我的编译器,下面的代码int i=7; printf...
  • 关,如果没有定义这个宏,系统调用 drivers/nand/nand.c 中的 nand_init();否则调用自己在 本文件中的 nand_init()函数,本例使用后者。fs2410.c代码如下: #if defined(CONFIG_CMD_NAND) typedef enum { NFCE_...
  • PT80-NEAT开发指南v1.1

    2014-06-24 18:38:34
    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................
  • Tinyxml 源代码(VC6 & VS2005)

    热门讨论 2009-08-12 15:57:04
    对是保留还是压缩空格这一问题人们还达成共识。举个例子,假设‘_’代表一个空格,对于"Hello____world",HTML和某些XML解析器会解释成"Hello_world",它们压缩掉了一些空格。而有些XML解析器却不会这样,它们会...
  • 不光占去了大量的空间(光一个Form就300K之大),而且使软件可见,根本什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。  我们首先应该让我们的...
  • 如果你同名函数需要注册到Lua, 你必须显示的给定函数的签名. 这可以让C++知道你指定的是哪一个函数. 例如, 如果你两个函数, int f(const char*) 和 void f(int). module(L) [ def("f", (int(*)(const char*)) &f...
  • 大多数用户,并不想这些, 只想像IE的Webbrower那样简单调用,因为IE的webbroiwer兼容性已经越来越不行了, 很多时候显示一个网页,会报js错误,或是报找不到项目之类的(但在标准IE中运行这问题) 另外一些人,想实现...
  • 然后会显示 Windows CPU 运行表(大概是这个叫法...),但还是看不懂。所以我后面修改了代码,把27、28行都改成了将那两个变量赋值为常数2,而不是即时计算。 顺便改了一下74行,把pcText换成了pChar (74行这里是...
  • 然后会显示 Windows CPU 运行表(大概是这个叫法...),但还是看不懂。所以我后面修改了代码,把27、28行都改成了将那两个变量赋值为常数2,而不是即时计算。 顺便改了一下74行,把pcText换成了pChar (74行这里是...
  • 在实现函数方面,还是在Bmp.cpp与其头文件中,为了让师姐能够容易地找到各个函数的所在,我已经在函数的定义前加上它的中文功能了,相信应该很容易找到。 至于函数过程的注释,由于老师没有要求在作业中需要写出来,...
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    我的机器上,VC产生0 errors 0 warnings, 而lint程序产生了如下8条警告信息,有些还是用处的提示,这里就不一一分析了. test.cpp(12): error 783: (Info -- Line does not end with new-line) test.cpp(7): ...
  • windows编程资料大全

    2008-10-26 13:55:44
    面对众多的计算机高手,考虑许久,终于还是决定出来献丑一下,文章内尽量使用最简洁易懂的词汇及例子来介绍,希望能够对一些初学与进阶者有所帮助。 关于进程的隐藏,98下的例子数不胜数。WinNT/Win2K下的隐藏方法,...
  • 新手学习C++入门资料

    2008-12-28 23:58:50
    按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

有头文件还是显示没定义