Nokia 3510i LCD与SPI通信

在本篇文章中,将探讨如何使用Nokia 3510i LCD显示屏通过SPI通信进行图形显示。首先,需要了解LCD显示屏的基本硬件连接方式,然后通过软件编程实现SPI通信,最后设置合适的颜色模型以获得最佳显示效果。

硬件连接

首先,需要从eBay购买一个带有SD卡插槽的LCD扩展板。该扩展板的引脚布局如下:

GND VCC NC NC NC LCD RESET LCD A0 (R/S) LCD SDA LCD SCK LCD CS SD SCK SD MISO SD MOSI SD CS LED+ LED-

其中,LCD控制器ST7735使用SPI通信,只需要5条数据线,分别是RESET、A0、SDA、SCK和CS。特别需要注意的是A0线,也称为R/S,它指示传输的字节应该被解释为命令还是像素数据。虽然SPI通信最好使用硬件SPI模块(PIC24FJ64GA002上有两组)以获得更快的显示速度,但如果硬件SPI不可用,也可以通过软件实现。

软件编程

下面是一个使用软件实现SPI通信的示例函数:

void write_spi_byte(unsigned char c) { char x; for (x = 0; x < 8; x++) { LCD_SCK = 0; LCD_SDA = 0; if (c & 0x80) LCD_SDA = 1; LCD_SCK = 1; c <<= 1; } }

为了在Microchip C30编译器下编译Adafruit的Arduino库,将其转换为适用于PIC24FJ64GA002的代码,这样LCD就能很好地绘制一些图形了。

SD卡信息显示

使用随附的SD卡插槽和Microchip MDD库,结合自定义的5×7字体,能够在LCD上显示一些SD卡信息。

购买的板子上有一个AMS1117内置稳压器,它期望至少5V供电到VCC,以便能够为LCD和SD卡生成3.3V。起初,错误地将3.3V供电到VCC,结果发现SD卡工作不稳定,而LCD仍然工作良好。如果在这个模块上遇到SD卡问题,请检查是否是这种情况。

颜色模型设置

ST7735控制器支持高达262,144(2^18)种颜色。然而,为了使用262K颜色,每个像素需要通过SPI传输18位数据。由于这会增加复杂性,决定使用65,536种颜色(16位),这样每个像素数据可以通过2次SPI写入来实现。

在16位颜色模式下,LCD期望像素数据以RGB565格式传输。以下是从众所周知的RGB888(24位颜色)格式转换为RGB565的示例:

#define RGB565(r,g,b) ((((r>>3)<<11) | ((g>>2)<<5) | (b>>3)))

值得注意的是,LCD似乎有两种略有不同的变体。如果模块带有黑色标签,每个像素的蓝色和红色字节将会被交换,导致显示错误的颜色。如果模块有红色或绿色标签,每个像素的字节顺序将是正确的。

要解决这个问题,可以改变上述RGB565宏来交换红色和蓝色字节,或者在初始化期间改变MADCTL寄存器的值:

writecommand(ST7735_MADCTL); // R和B字节被交换 // writedata(0xC8); // 正常的RGB顺序 writedata(0xC0);
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485