找回密码
 立即注册
查看: 91|回复: 3

关于点亮tft屏幕问题。

[复制链接]
  • TA的每日心情

    17 小时前
  • 签到天数: 33 天

    [LV.5]常住居民I

    38

    主题

    243

    回帖

    480

    积分

    中级会员

    积分
    480
    发表于 2024-5-15 00:57:38 | 显示全部楼层 |阅读模式
    官方给的例子里有这样一段代码:


    不是用gpio模拟iic的方式对吧?这个
    void LCD_RegWriteComd(u8 cmd)
    {
            LCD_RS_CLR();                        //point to ID register
            LCD_CS_CLR();
            LCD_BUS_H = 0;
            LCD_BUS_L = cmd;
            LCD_WR_PULSE();
            LCD_RS_SET();                        //point to GRAM
            LCD_CS_SET();
    }


    void LCD_RegWriteData(u8 dat)
    {
    //        LCD_RS_SET();                        //point to GRAM
            LCD_CS_CLR();
            LCD_BUS_H = 0;
            LCD_BUS_L = dat;
            LCD_WR_PULSE();
            LCD_CS_SET();
    }


    红色部分这个算是用什么方式点亮的屏幕呢? 这个既不是iic也不是spi对吧?
    -----------------------------------
    有没有用gpio去模拟iic的方式呢?
    -----------------------------------
    我看网上有类似这样的代码:

            RES=0;
            delay(1000);
            RES=1;
            delay(1000);
            write_i(0xAE); /*display off*/

            之后就都是iic发指令了。
          这个才算是iic吧?
    Untitled.png

        iic两根线 + res一根线。总共需要3根线?
          
    回复 送花

    使用道具 举报

  • TA的每日心情

    17 小时前
  • 签到天数: 33 天

    [LV.5]常住居民I

    38

    主题

    243

    回帖

    480

    积分

    中级会员

    积分
    480
     楼主| 发表于 2024-5-15 01:07:18 | 显示全部楼层
    现在还稀里糊涂的。这个是官网的初始化(先记录下,晚点分析):
    void LCD_Init(void)
    {
            P6n_standard(0xff);
            P2n_standard(0xff);
            P4n_standard(0x2e);

            background = 0x00;
            foreground = 0xffff;

            LCD_RS_SET();
            LCD_CS_SET();
            LCD_BUS_H = 0xFF;
            LCD_BUS_L = 0xFF;
            LCD_WR_SET();

            LCD_RST_SET();
            LCD_delay(150);
            LCD_RST_CLR();
            LCD_delay(150);
            LCD_RST_SET();
            LCD_delay(150);

            //************* ILI9481初始化**********//
            LCD_RegWriteComd(0x11);
            LCD_delay(20);
            LCD_RegWriteComd(0xD0);
            LCD_RegWriteData(0x07);
            LCD_RegWriteData(0x42);
            LCD_RegWriteData(0x18);
           
            LCD_RegWriteComd(0xD1);
            LCD_RegWriteData(0x00);
            LCD_RegWriteData(0x07);//07
            LCD_RegWriteData(0x10);
           
            LCD_RegWriteComd(0xD2);
            LCD_RegWriteData(0x01);
            LCD_RegWriteData(0x02);
           
            LCD_RegWriteComd(0xC0);
            LCD_RegWriteData(0x10);
            LCD_RegWriteData(0x3B);
            LCD_RegWriteData(0x00);
            LCD_RegWriteData(0x02);
            LCD_RegWriteData(0x11);
           
            LCD_RegWriteComd(0xC5);
            LCD_RegWriteData(0x03);
           
            LCD_RegWriteComd(0xC8);
            LCD_RegWriteData(0x00);
            LCD_RegWriteData(0x32);
            LCD_RegWriteData(0x36);
            LCD_RegWriteData(0x45);
            LCD_RegWriteData(0x06);
            LCD_RegWriteData(0x16);
            LCD_RegWriteData(0x37);
            LCD_RegWriteData(0x75);
            LCD_RegWriteData(0x77);
            LCD_RegWriteData(0x54);
            LCD_RegWriteData(0x0C);
            LCD_RegWriteData(0x00);
           
            LCD_RegWriteComd(0x36);
            #if (X_DOTS == 320)
                    LCD_RegWriteData(0x0A);
            #endif
            #if (X_DOTS == 480)
                    LCD_RegWriteData(0x28);
            #endif
           
            LCD_RegWriteComd(0x3A);
            LCD_RegWriteData(0x55);
           
            LCD_RegWriteComd(0x2A);
            LCD_RegWriteData(0x00);
            LCD_RegWriteData(0x00);
    //        LCD_RegWriteData(0x01);
    //        LCD_RegWriteData(0x3F);
            LCD_RegWriteData(((X_DOTS-1)>>8));
            LCD_RegWriteData(((X_DOTS-1)&0xff));
           
            LCD_RegWriteComd(0x2B);
            LCD_RegWriteData(0x00);
            LCD_RegWriteData(0x00);
    //        LCD_RegWriteData(0x01);
    //        LCD_RegWriteData(0xE0);
            LCD_RegWriteData(((Y_DOTS-1)>>8));
            LCD_RegWriteData(((Y_DOTS-1)&0xff));

            LCD_delay(120);
    //        LCD_RegWriteComd(0x21);        //取反显示, 有的屏要取反才是正常显示
            LCD_RegWriteComd(0x29);
            LCD_RegWriteComd(0x2c);

            //设置LCD属性参数
            SetView_V();                //竖屏
            LCD_delay(1);
            LCD_Fill_XY(0,0,X_DOTS,Y_DOTS,0x0000);

    }
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    17 小时前
  • 签到天数: 33 天

    [LV.5]常住居民I

    38

    主题

    243

    回帖

    480

    积分

    中级会员

    积分
    480
     楼主| 发表于 2024-5-17 19:09:23 来自手机 | 显示全部楼层
    用最少的针脚数来完成的话,就用iic.   除了iic占用两根线,还有res. cs .dc。这3个脚的使用在iic写字节时有使用。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    17 小时前
  • 签到天数: 33 天

    [LV.5]常住居民I

    38

    主题

    243

    回帖

    480

    积分

    中级会员

    积分
    480
     楼主| 发表于 2024-5-20 01:46:00 | 显示全部楼层
    这个好像是并行模式
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-29 17:06 , Processed in 0.057870 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表