探索Nokia LCD模块与微控制器的接口

在成功使用HD44780控制器的标准字符LCD之后,决定从eBay购买一些Nokia LCD模块进行探索。购买的两个LCD模块是用于3510i和5110型号的。这两个模块都内置了控制器,使用的是串行外设接口(SPI)。以下是模块的引脚布局,请注意,引脚分配可能会略有不同。

LCD引脚布局

Nokia 5110和Nokia 3510i的LCD模块的引脚布局如下所示。两者的唯一区别是5110使用的第5脚作为数据/命令选择,而3510i则未使用。

电压差异:5.5V与3V

两个LCD都设计为使用3.3V,但由于内部电压钳位,可以使用5V为SCLK、SDATA、REST、D/C和CS供电,只要为每条线路串联一个电流限制电阻(大约10kΩ)。VCC和LED供电仍应使用3.3V。尝试过使用电压分压器,但并未成功,可能是因为LCD内部电阻和电流消耗的变化。

在上述连接下,只能向LCD写入数据,但不能读取LCD的响应,因为3.3V不足以在PIC中注册为逻辑'1'。幸运的是,对于基本操作来说,读取LCD并不是必需的;所有需要的只是在每次操作后有足够的延迟,以确保LCD准备好接收下一个命令。

选择微控制器

选择了PIC16F88,仅仅因为它在杂物箱里。为了简单起见,决定使用位操作来发送数据,而不是使用PIC内置的SPI模块。尽管这通常意味着代码更复杂,吞吐量更低,但这并不重要,因为所想要的只是让LCD显示一些有用的东西。

LCD内存映射

5110 LCD是单色的,使用PCD8544控制器,分辨率为48行×84列。每列上的8个像素消耗LCD内存映射中的一个字节。填满整个LCD需要504字节。

3510i LCD的分辨率为97×66,可以以256色或4096色运行。由于在小分辨率下256色和4096色之间似乎没有太大区别,选择了256色以简化操作。LCD上的每个像素由单个字节表示,在256色(8位)模式下填满整个LCD需要6402字节。

示例代码:显示测试图案

以下代码展示了如何在Nokia 5110 LCD上显示所有黑色像素。请注意,LCD初始化代码未显示。

void lcd_5110_clear() { for (int i = 0; i < 84; i++) { unsigned char row; for (row = 0; row < 6; row++) { // all black pixels char data = 0xFF; lcd_5110_send(0x40 + row, 0); // Y address lcd_5110_send(0x80 + i, 0); // X address //write to display memory lcd_5110_send(data, 1); } } }

以下代码展示了如何在3510i LCD上显示选定的颜色:

void addset(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) { send(0x2a, 0); //column address set send(x1, 1); send(x2, 1); send(0x2B, 0); //page address set send(y1, 1); send(y2, 1); send(0x2C, 0); //memory write } void LCD_Clear(unsigned int value, unsigned char Color) { unsigned char x, y; addset(0, 0, 97, 66); for (y = 0; y < 67; y++) { for (x = 0; x < 98; x++) { send(Color, 1); } } }

显示文本和图形

到目前为止,只能在LCD上显示测试图案。如果想显示任何有用的文本,需要使用位图字体(和额外的代码)。为3510i LCD选择了8×12的字体,为5110 LCD选择了5×8的字体。字体以及要显示的任何图形将存储在24C64(8KB)I2C EEPROM中。为了编程EEPROM,使用了PonnyProg的I2C版本。请注意,这可能不适用于较新的PC,因为串口可用电流有限,并且永远不会与USB转串口转换器一起工作。在实验中,犯了一个愚蠢的错误,通过470欧姆的电阻添加了一个LED来显示编程期间的活动。这导致编程后数据损坏和验证错误,因为电流消耗过大。将电阻改为2k后效果很好,尽管LED要暗得多。

有了EEPROM来存储字体和图形,5110 LCD现在可以显示文本和一些单色位图了:3510i LCD可以做得更好。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485