首页 技术服务 STN 更简便容易使用之STN液晶显示器控制接口

更简便容易使用之STN液晶显示器控制接口

华凌拥有相当丰富的字符型液晶显示器模块标准品,依据显示型式有WH0802、WH1202、WH1601、WH1602、WH1604、WH2002、WH2004、WH2402、WH4002等系列的标准品。客户可以用最少的控制脚来达成显示目的,可以让客户端更方便容易选择MCU使用。市面上常见的字符型液晶显示器模块 (Character LCD Module),如果要使用I2C接口时,通常会在模块上外加一个I2C接口转接电路板,除了LCM的厚度增加,生产制造也会多几道工序,进而导致良率下降等风险。如图1所示

 

figure1-thecommon-character-lcd-module figure2-winstar-wh1602-character-lcd-module
图1: T为市面上常见外加一块 I2C 转接电路板的字符型液晶显示模块。 图2: 为华凌 WH1602 的字符型液晶显示器模块,背面不需要转接电路板就可以直接使用 I2C、SPI 接口来控制。



以下介绍华凌字符型液晶显示器模块,在不需要额外转接电路板的情况下,搭配开发板 Arduino Uno就可以直接使用不同的通讯接口控制字符型液晶显示器模块。

  • Winstar WH1602 LCM: 每行可显示16个字,共可显示2行字。
  • Winstar WH2002 LCM: 每行可显示20个字,共可显示2行字。
  • Winstar WH2004 LCM: 每行可显示20个字,共可显示4行字。

这三款LCM内部皆采用RW1063这个LCD控制器 (LCD controller),它提供了I2C、SPI两种串行接口和一个6800并列接口(Parallel interface)。

备注:关于接口的说明可以参考公司网站上的「认识显示接口」

识别 LCM 的脚位

表1 : LCM的脚位说明
编号 脚位名称 说明
No.1 Vss 电源负极输入脚(接地)。
No.2 Vdd 电源正极输入脚(5V)。
No.3 V0 对比控制脚。
No.4 RS 命令/数据选择线。
No.5 RW 只有6800 8/4bit接口有用到,读取/写入选择线。
No.6 E 只有6800 8/4bit接口有用到,致能选择线。
No.7 DB0/SA0 6800 8bit接口时为数据线位0。
I2C接口时为SA0地址设定线。
No.8 DB1/SA1 6800 8bit接口时为数据线位1。
I2C接口时为SA1地址设定线。
No.9 DB2 只有6800 8bit接口有用到,数据线位2。
No.10 DB3 只有6800 8bit接口有用到,数据线位3。
No.11 DB4 只有6800 8/4bit 接口有用到,数据线位4。
No.12 DB5/CSB/CSB 6800 8/4bit 接口时为数据线位5。
I2C和SPI接口时为CSB芯片致能选择线。
No.13 DB6/SDA/SCLK 6800 8/4bit 接口时为数据线位6。
I2C接口时为SDA数据线。
SPI接口时为SCLK频率控制线。
No.14 DB7/SCL/SID 6800 8/4bit 接口时为数据线位7。
I2C接口时为SCL频率控制线。
SPI接口时为SID数据线。
No.15 A+ 背光电源正极输入脚。
No.16 K- 背光电源负极输入脚。
 

关于上表中的 V0,这边是使用 20k Ohm 的可变电阻来调整字符的对比,如果测试使用时,看不文字或者持续显示底影的画面,可以转动这个可变电阻调整对比。

V0 可变电阻连接方式,如下图3所示:

图3 VR可变电阻连接方式示意图
图3:VR可变电阻连接方式示意图。

 

LCM 和开发板 Arduino Uno 接线方式

如图4所示,LCM 四种通讯接口I2C、SPI、6800 8bit/4bit连接 Arduino Uno 的方式。读者可以观察到 I2C 和 SPI 接口只需要少量的 GPIO 脚位控制字符型液晶显示器模块。

其中,I2C接口的接法,是因为Arduino Uno的I2C脚位内部,提供了上拉电阻,所以,没有再额外接上拉电阻到SDA和SCL脚位.如果用户在程序中停用内部的上拉电阻时,必须自行外接一组上拉电阻。

(a)采用I2C接口的接法
 
(b) 采用SPI接口的接法
 
图4 LCM 四种通讯接口连接 Arduino Uno方式-采用I2C接口的接法             
 
             图4 LCM 四种通讯接口连接 Arduino Uno方式-采用SPI接口的接法
 
(c)采用6800-4bit接口的接法
 
(d)采用6800-8bit接口的接法
 
图4 LCM 四种通讯接口连接 Arduino Uno方式-采用6800-4bit接口的接法             
 
             图4 LCM 四种通讯接口连接 Arduino Uno方式-采用6800-8bit接口的接法
 
图4:LCM 四种通讯接口连接 Arduino Uno方式

 

LCM的指令

并不是每个通讯接口都可以使用LCM全部的指令集;采用SPI 接口时,没有RW控制线和MISO脚位,因此,不支持读取的指令。写入方面是透过RS控制线决定是写入命令数据或写入显示数据。

在I2C接口,同样没有RW控制线,所以,也不支持读取的指令。写入方面,没有RS控制线,在写入命令数据或显示数据前,要先发送命令句柄(A0=0),或数据控制码(A0=1),来决定下一个发送的字节是命令数据,还是显示数据。

 

SPI和I2C界面的时序

两张时序图,如图5及图6所示.是以 SPI 接口方式控制 LCM 的时序图。使用者可以观察到 LCM 采用的 SPI ,并非一般 MCU 所提供的典型 SPI 接口,它需要额外一条 RS 信号线,来决定当前送出的字节是命令?还是资料?数据线(SID)的位(BIT7~BIT0)数据,在频率线(SCLK)为低准位时变动;位(BIT7~BIT0)数据,在频率线(SCLK)为高准位时抓取(BIT7~BIT0)。

图5 SPI写入命令的时序
图5:SPI写入命令的时序。
图6 SPI 写入资料的时序
图6:SPI 写入资料的时序。

如图7及图8所示。是以 I2C 接口方式控制 LCM 的时序图,除了芯片选择线(CSB),读者可以观察到I2C接口控制,是每次送出三个字节写入一笔命令数据或显示数据。其中,第二个字节的A0位,会决定第三个字节是命令数据?还是显示数据?

图 7 I2C 写入命令的时序
图7:I2C 写入命令的时序。
图 8 I2C 写入资料的时序
图8:I2C 写入资料的时序。

 

程序代码

根据使用的液晶显示器模块修改程序设定,就可以直接编译并使用。

第一步:设定 LCM 单行最大字符数
例如下面设定单行最多有 16 个字符。

程序代码-第一步-设定 LCM 单行最大字符数

第二步:设定 LCM 最大行数
例如下面设定 LCM 共有 2 行。

程序代码-第二步-设定 LCM 最大行数

第三步:设定 LCM 使用的通讯接口
例如下面设定使用 I2C 的接口。

程序代码-第三步-设定 LCM 使用的通讯接口

第四步:编译并上传程序到Arduino Uno开发板
如图9所示,是三款LCM呈现的画面示意。
当显示对比出现偏淡或偏深的情况时,可调整V0 脚位的可变电阻到适当的对比,如图10所示。

(a) 对比偏淡只看到浅浅的字符 (b) 对比适中 (c) 对比偏深 每个字符有明显的底影
LCM 呈现画面示意图-a-1 LCM 呈现画面示意图-b-1 LCM 呈现画面示意图-c-1
LCM 呈现画面示意图-a-2 LCM 呈现画面示意图-b-2 LCM 呈现画面示意图-c-2
LCM 呈现画面示意图-a-3 LCM 呈现画面示意图-b-3 LCM 呈现画面示意图-c-3
图9:三款 LCM 呈现画面示意图。
 

图10 V0 脚位可调变

图10:V0 脚位可调变。

如果需要索取完整的程序代码,请联络我们

回分类页
go top
close