基于 ESP32 的 LCD 模块(ST7789)开发

基于 ESP32 的 LCD 模块开发

硬件连接

ESP32-DEVKIT-CLCD 引脚备注
GPIO 25
GPIO 23SDA数据
GPIO 19SCL时钟
GPIO 22CS使能
GPIO 21DC数据/命令选择
GPIO 18RES重置
GPIO 5BLK控制背光

以上引脚定义也是 ESP-IDFSPI 例程中所使用的引脚定义。

在这里插入图片描述

通信协议

协议:SPI

通信芯片: ST7789V

初始化命令

DRAM_ATTR static const uint8_t LCD_ORIENTATION_VALUES[]={
    0x00,   // PORTRAIT
    0xC0,   // PORTRAIT_INVERTED
    0x70,   // LANDSCAPE
    0xA0    // LANDSCAPE_INVERTED
};

static const char *LCD_ORIENTATION_TAGS[]={
    "PORTRAIT",           // 纵向
    "PORTRAIT_INVERTED",  // 纵向(颠倒)
    "LANDSCAPE",          // 横向
    "LANDSCAPE_INVERTED"  // 横向(颠倒)
};

#define LCD_WIDTH       240 // LCD 宽度像素
#define LCD_HEIGHT      240 // LCD 高度像素
#define  VIEW_ORIENTATION   0 // LCD 方向 取值范围 0-3

typedef struct {
    uint8_t cmd;
    uint8_t data[16];
    uint8_t databytes;
} lcd_init_cmd_t;

DRAM_ATTR static const lcd_init_cmd_t LCD_INIT_CMDS[]={
    //
    {0x36, {LCD_ORIENTATION_VALUES[VIEW_ORIENTATION]}, 1},
    /* Interface Pixel Format, 16bits/pixel for RGB/MCU interface */
    {0x3A, {0x05}, 1},
    /* Porch Setting */
    {0xB2, {0x0c, 0x0c, 0x00, 0x33, 0x33}, 5},
    /* Gate Control, Vgh=13.65V, Vgl=-10.43V */
    {0xB7, {0x35}, 1},
    /* VCOM Setting, VCOM=1.35V */
    {0xBB, {0x32}, 1},
    /* VDV and VRH Command Enable, enable=1 */
    {0xC2, {0x01}, 1},
    /* VRH Set, Vap=4.4+... */
    {0xC3, {0x15}, 1},
    /* VDV Set, VDV=0 */
    {0xC4, {0x20}, 1},
    /* Frame Rate Control, 60Hz, inversion=0 */
    {0xC6, {0x0f}, 1},
    /* Power Control 1, AVDD=6.8V, AVCL=-4.8V, VDDS=2.3V */
    {0xD0, {0xA4, 0xA1}, 1},
    /* Positive Voltage Gamma Control */
    {0xE0, {0xD0,0x08,0x0E,0x09,0x09,0x05,0x31,0x33,0x48,0x17,0x14,0x15,0x31,0x34}, 14},
    /* Negative Voltage Gamma Control */
    {0xE1, {0xD0,0x08,0x0E,0x09,0x09,0x15,0x31,0x33,0x48,0x17,0x14,0x15,0x31,0x34}, 14},
    /* Sleep Out */
    {0x11, {0}, 0x80},
    /* Display On */
    {0x29, {0}, 0x80},
    {0, {0}, 0xff}
};

其他

其他的代码基本上可以直接采用网上的例程。但是在写颜色填充时,发现必须要对16bit的颜色数据取反后才可以正确的显示颜色。猜测是配置表出问题了。如果有哪位知道,请于下方留言,不胜感激。

/**
 * @brief  填充颜色
 * 
 * @param  spi              Param doc
 * @param  start_x          Param doc
 * @param  start_y          Param doc
 * @param  end_x            Param doc
 * @param  end_y            Param doc
 * @param  color            Param doc
 */
void lcd_fill(spi_device_handle_t spi,uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t end_y,uint16_t color){
    uint16_t i,j;
    uint8_t data[2];
    data[0]=(~color)>>8;
    data[1]=~color;
	lcd_set_address(spi,start_x,start_y,end_x,end_y);//设置显示范围
	for(i=start_y;i<end_y;i++)
	{				   	 	
		for(j=start_x;j<end_x;j++)
		{
			lcd_data(spi,data,2);
		}
	} 		
}

备注

ESP32 DEV-KIT 开发板引脚图

在这里插入图片描述

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在ESP32S3上驱动ST7789 LCD显示屏,你可以按照以下步骤进行操作: 1. 首先,你需要连接ESP32S3和ST7789显示屏。根据引用中的链接和引用中提到的驱动名称,你可以找到具体的引脚连接图和驱动程序。 2. 确保你的ESP32S3开发板上已经安装了适当的开发环境,例如Arduino IDE。根据引用中提到的信息,你可以使用Arduino IDE来进行测试。 3. 下载并安装ST7789驱动库。你可以在Arduino IDE的库管理器中搜索"ST7789",然后选择适合你的库进行安装。 4. 在你的Arduino IDE中打开一个新的项目,并导入ST7789库。你可以在库管理器中搜索并选择安装的库。 5. 在你的代码中包含ST7789库的头文件,并初始化SPI连接和ST7789对象。根据库的文档和示例,你可以设置显示屏的分辨率、引脚连接和其他必要的参数。 6. 编写代码以显示你想要在屏幕上显示的内容。ST7789库应该提供了一些函数来方便你在屏幕上绘制图形、显示文本等操作。 7. 上传代码到ESP32S3开发板并运行。确保你的开发板与计算机正确连接,并选择正确的开发板和端口。根据库的示例和文档,你应该能够看到你的代码在ST7789显示屏上正常运行。 请注意,以上步骤仅提供了一个基本的指导,具体的驱动过程可能因为硬件和软件环境的差异而有所不同。确保阅读并遵循ST7789库的文档和示例,以便获得更详细的指导和支持。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [使用ESP32驱动ST7789,效果很好的IPS显示屏](https://blog.csdn.net/u012388993/article/details/120605961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ESP32-S3 lvgl-v8-st7789](https://download.csdn.net/download/weixin_53411486/87164695)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值