树莓派 java 驱动 lcd tft spi 1.8寸 ST7735S

结果展示

  1. 显示效果:
    在这里插入图片描述

本人相关视频指导链接

B站视频指导:链接地址
https://www.bilibili.com/video/BV1up4y187i2

接线说明

  1. 以树莓派的BCM引脚模式进行接线,好处是java定义树莓派引脚的时候,直接使用BCM引脚号即可。

  2. 可以使用指令 gpio readall 查看引脚,最靠左右两边的即是BCM模式的引脚读数在这里插入图片描述

  3. 我买的这个屏幕是1.8寸的128x160的屏幕,共8个引脚,与树莓派的连接见上图,以及下方说明
    GND->接地
    blk(屏幕背景灯,这个引脚单独搞出来,可能是给我们控制亮度用的,比如pwm)+VDD -> ST7735S直接接入3.3v是可以的
    SDA -> SPI数据,接MOSI(BCM10)
    SCL -> SPI时钟,接SCLK(BCM11引脚)
    CS -> 千万不能接地,因为后续传指令,传数据,都需要CS低电平变高电平来结束一个读数周期。(BCM5)
    RET -> 复位,低电平转高电平进行复位(BCM23)
    RS(DC) -> 指令控制口(BCM8)

  4. 实际上,买1.3寸的屏幕,有240x240的分辨率,还更便宜。不过1.8寸屏幕既买之,则驱动之。

代码参考说明

  1. 代码,主要是参考shengDay的《树莓派GPIO入门11-驱动液晶屏幕(一)》,这个博主也是用的ST7735S,借鉴意义非常大,讲解的也非常好。
    1. 但是也有一个诡异的地方,为啥我的这个ST7735S的16Bit的色彩,传数据的排序是Blue-Green-Red,而不是Red-Green-Blue呢?如果谁知道的请不吝赐教。
    2. 原来我以为是我java代码写反了,使用作者的代码跑。也是一样的结果,真实的数据排序是Blue-Green-Red
  2. 这篇DevinTT的内容《树莓派使用上spi tft!(fbtft的使用)》,也可以作为参考,但是ST7735S和ST7735R的驱动,应该是有些不同的,我最初就是按这篇内容的搞法,搞半天不灵。
  3. 我的java驱动代码已经提交,关键看这个路径下的代码:com.chenqi.tft.st7735s。github代码地址在这
  4. 关键java代码见下,入参要求为128x160的RGB的bufferedImage:
     /**
     * 画图(16bit的色彩)
     *
     * @param bufferedImage
     * @throws IOException
     */
    public void drawImg16BitColor(BufferedImage bufferedImage) throws IOException {
        System.out.println("start to write Lcd Img");
        init();
        for (int y = 0; y < HEIGHT; y++) {
            for (int x = 0; x < WIDTH; x++) {
                int rgb = bufferedImage.getRGB(x, y);
                int red = (rgb >> 16) & 0xff; //获取红色的色值
                int green = (rgb >> 8) & 0xff;
                int blue = rgb & 0xff;
                red = red * 0x1f / 0xff; //st7735s的红色占5位,即0x1f
                green = green * 0x3f / 0xff; //st7735s的绿色占6位,即0x3f
                blue = blue * 0x1f / 0xff; //st7735s的蓝色占5位,即0x1f
    
                int highBit = 0x00;
                int lowBit = 0x00;
                highBit = highBit | (blue << 3) | (green >> 3);
                lowBit = lowBit | (green << 5) | red ;
                writeEveryPixel16Bit(highBit, lowBit);
            }
        }
    }
    

自我答疑

  1. n天后,偶然看过一些资料,对上边自己提出的一个问题,进行解答。问题是:有一个诡异的地方,为啥我的这个ST7735S的16Bit的色彩,传数据的排序是Blue-Green-Red,而不是Red-Green-Blue呢?如果谁知道的请不吝赐教。
    解答:指令Display inversion on(21h)以及指令Display inversion off(20h),使用来控制色彩的反转的。我这边实验的情况如下,指令Display inversion off(20h)对应BGR,指令Display inversion on(21h)对应RGB。无语,怎么同这个指令的含义是相反的,算了,就这个意思,大家理解一下就行了。
    多说一句,init方法中,对指令的写入,一定要在这个sendCommand(0x29) 代码之前,如以下代码顺序
    
        sendCommand(0x21); //一定要显式指定Display Inversion On,16bit彩色的格式才是rgb。
        //不指定0x21的话,16bit彩色的格式为bgr。这是一个坑点。。特别注意
    
        sendCommand(0x29); //Display On
        sendCommand(0x2C);
    
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 1.8240*320 TFT显示屏是一种小尺彩色显示屏,用于各种嵌入式系统和电子设备中。该显示屏采用SPI通信协议,支持ST7735S驱动芯片。 ST7735S是一款常用的显示屏驱动芯片,具有以下特点和功能: 1.高分辨率:ST7735S支持240*320像素的显示分辨率,能够显示丰富的图像和细节。 2.彩色显示:该芯片支持全彩色显示,可以显示16位或18位的颜色深度,呈现鲜艳、真实的图像。 3.低功耗:ST7735S采用低功耗的设计,能够在不消耗过多电能的情况下进行高质量的显示。 4.多功能:该芯片具有丰富的功能和接口,包括SPI通信接口、GPIO引脚、控制电路等。可以实现图像显示、文本显示、触摸控制等多种功能。 5.易于控制:ST7735S有简单的控制和配置方法,可以通过编程语言或者硬件电路来实现对显示屏的控制。 为了使用1.8240*320 TFT显示屏,我们需要通过SPI通信协议来与ST7735S驱动芯片进行交互。首先,我们需要了解芯片的引脚定义,包括电源引脚、SPI接口引脚、复位引脚等。然后,我们需要编写相应的驱动程序,通过发送指令和数据来控制显示屏的显示内容和操作。最后,我们可以根据需求实现自己想要显示的图像、文本或者其他内容。 总结起来,1.8240*320 TFT显示屏SPI通信ST7735S资料主要包括芯片的特点、功能,以及使用时的引脚连接和驱动程序编写等方面的内容。希望这些信息能够帮助你更好地了解和应用这款显示屏。 ### 回答2: 1.8240*320 TFT显示屏是一种小尺的彩色液晶显示屏,具有240像素(宽)×320像素(高)的分辨率。该显示屏采用SPI通信接口,并集成了ST7735S显示控制芯片。 ST7735S是一款专为嵌入式应用设计的显示控制芯片。它采用SPI串行总线协议与主控设备进行通信,并具有较高的传输速率和可靠性。 该显示屏具有较高的亮度和对比度,且能够显示出清晰、鲜艳的彩色图像。它支持多种颜色模式,如RGB565、RGB666和RGB888等。这些颜色模式可以实现丰富的颜色效果,使显示图像更加生动逼真。 ST7735S显示控制芯片内部集成了帧缓存存储器,能够存储图像数据,并通过SPI接口将数据传输到显示屏上进行显示。它还具有多种的显示模式和控制参数,可以通过编程控制实现清晰的显示效果。 在使用该显示屏时,我们需要将该显示屏与主控设备进行连接,并按照通信协议进行初始化设置。通过SPI通信接口,主控设备可以向ST7735S发送命令和数据,来控制显示屏的刷新、渲染和显示。 总之,1.8240*320 TFT显示屏使用SPI通信接口与ST7735S显示控制芯片进行通信,能够实现高清晰度、高亮度和丰富颜色的图像显示。通过合理的编程控制,可以实现各种图形、文本等显示效果。 ### 回答3: ST7735S是一种1.8240*320分辨率的TFT显示屏,支持SPI通信协议。ST7735S芯片是一款可编程的彩色TFT液晶控制器,适用于移动设备、嵌入式系统和其他需要显示图形和文字的应用。 ST7735S拥有多种特性和功能。首先,它支持分辨率为240*320的彩色显示,可以显示丰富的图像和文本内容。其次,ST7735S采用SPI(串行外设接口)通信协议,在数据传输方面更加简便高效。 在使用ST7735S之前,需要了解其引脚分配和功能。ST7735S具有多个引脚,如电源引脚、SPI通信引脚、控制引脚等。它还有一些特殊的引脚,比如背光控制引脚,用于控制显示屏的背光亮度。 为了正确使用ST7735S,还需要了解其工作原理和通信协议。通过SPI接口,可以向ST7735S发送命令和数据,控制显示屏的功能和内容。可以使用特定的SPI库或驱动程序来实现与ST7735S的通信。 最后,为了更好地使用ST7735S显示屏,还可以查阅相关的资料和文档。ST7735S的厂商可能提供有关初始化、驱动程序和示例代码的资料,这些资料可以帮助用户快速开始使用这款显示屏。 总之,ST7735S是一款功能强大的1.8240*320分辨率TFT显示屏,支持SPI通信协议。通过了解其引脚分配、工作原理和通信协议,以及查阅相关资料,可以更好地使用和驱动这款显示屏。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值