Home Solutions STN Character LCD Control Interface Guide

STN Character LCD Control Interface Guide

January 19,2023

Introduction

Winstar offers a wide range of standard Character LCD Modules for customer's application. Available standard display types are WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 and WH4002 series. Customer can use the least number of control pins to achieve display, making it easier for choosing a MCU.

The common Character LCD Modules in the market will add a transfer board to support I2C interface as figure 1 shows, which lead to the increase of LCM thickness, more processes in manufacturing and the lower yield rate.
 

The common Character LCD Module with an additional I2C transfer board

Figure 1: The common Character LCD Module in the market which adds a transfer board to support I2C.

Winstar's WH1602 Character LCD Module with built-in I2C and SPI interface

Figure 2: Winstar's WH1602 Character LCD Module supports I2C and SPI interface without an additional transfer board.

 

Without adding a transfer board, Customer just need to connect the development board Arduino Uno and can use different communication interface to control the following Winstar’s Character LCD Modules directly.

  • WINSTAR WH1602 LCM: 16 characters by 2 lines
  • WINSTAR WH2002 LCM: 20 characters by 2 lines
  • WINSTAR WH2004 LCM: 20 characters by 4 lines
 

These three LCM series built in RW1063 LCD controller which supports serial interface (I2C and SPI) and parallel interface (6800)

Note: For more information about display interfaces, please refer to "Getting to Know Display Interfaces" .

Identify the LCM's pin define

Pin No. Symbol Description
No.1 Vss Ground
No.2 Vdd Power supply for logic
No.3 V0 Contrast Adjustment
No.4 RS Command/data selection
No.5 RW Read/Write select signal for interface 6800 8/4bit only
No.6 E Enable signal for interface 6800 8/4bit only
No.7 DB0/SA0 Data bus line 0 for 6800 8bit interface only
SA0 address setting line for I2C interface
No.8 DB1/SA1 Data bus line 1 for 6800 8bit interface only
SA1 address setting line for I2C interface
No.9 DB2 Data bus line 2 for 6800 8bit interface only
No.10 DB3 Data bus line 3 for 6800 8bit interface only
No.11 DB4 Data bus line 4 for 6800 8/4bit interface only
No.12 DB5/CSB/CSB Data bus line 5 for 6800 8/4bit interface only
CSB enable selection lines for I2C & SPI interface
No.13 DB6/SDA/SCLK Data bus line 6 for 6800 8/4bit interface only
SDA data line for I2C interface
SCLK timing for SP Interface
No.14 DB7/SCL/SID Data bus line 7 for 6800 8/4bit interface only
SCL timing line for I2C interface
SID data line for SPI interface
No.15 A+ Power supply for B/L +
No.16 K- Power supply for B/L -
 
Table 1:LCM pin define

 

Regarding V0 in the above table, a 20k Ohm variable resistor is used to adjust the contrast of characters. If the text is invisible or it continues to display the background image during the test, please turn this variable resistor to adjust the contrast.

The connection method of V0 variable resistor as shown in Figure 3:

figure3-v0-variable-resistor-connection-method
 
Figure 3:V0 variable resistor connection method

 

How to connect LCM and development board Arduino Uno

 

The connection methods of four LCM communication interfaces (I2C, SPI, 6800 8bit/4bit) to Arduino Uno as shown in Figure 4. The users can observe that the I2C and SPI interfaces only need a small number of GPIO pins to control the Character LCD modules.

For I2C interface, since Arduino Uno provides the pull-up resistors inside the I2C pins, there are no additional pull-up resistors connected to SDA and SCL pins. If the internal pull-up resistor is disabled in the program, an external pull-up resistor must be connected.

(a) I2C interface connection

I2C interface connection between LCM and Arduino Uno

(b) SPI interface connection

SPI interface connection between LCM and Arduino Uno

(c) 6800-4bit interface connection

6800 4-bit interface connection between LCM and Arduino Uno

(d) 6800-8bit interface connection

6800 8-bit interface connection between LCM and Arduino Uno

Figure 4: Connection methods of four LCM communication interfaces to Arduino Uno.

 

LCM Commands

Not every communication interface can use the full command set of LCM; with SPI interface, there is no RW control line and MISO pins, therefore, the read command is not supported. For writing, through RS control line to determine whether to write command data or display data.

In the I2C interface, there is also no RW control line so there is no support for read commands either. Before writing command data or display data, the command control code (A0=0) or data control code (A0=1) has to be sent to determine whether the next byte to be sent is command data or display data.

SPI and I2C Interface Timing

Two timing diagrams are shown in Figure 5 and Figure 6. It is the timing diagram of controlling the LCM through the SPI interface. The users can observe that the LCM uses an SPI that is not the typical SPI interface provided by a typical MCU, it requires an additional RS signal line to determine whether the current byte being sent is a command? or data? The bit data (BIT7~BIT0) of the data line (SID) changes when the clock line (SCLK) is at low level. The bit (BIT7~BIT0) data is captured when the clock line (SCLK) is high level (BIT7~BIT0).

figure-5-timing-of-spi-write-command

Figure 5:Timing of SPI write command

figure-6-timing-of-spi-write-data

Figure 6:Timing of SPI write data

Figure 7 and 8 show the timing diagram of controlling the LCM through the I2C interface. Except for the chip select bar (CSB), readers can observe that the I2C interface control is to send three bytes each time to write a command data or display data. Among them, the A0 bit of the second byte will determine whether the third byte is command data or display data.

figure7-i2c-timing-of-writing-commands

Figure 7:I2C Timing of writing commands

figure8-i2c-timing-of-writing-data

Figure 8:I2C Timing of writing data

Code

The LCM can be compiled and used directly by modifying the program settings.

Step1: set the maximum number of characters in a single line of LCM.
For example, the following sets a single line to have a maximum of 16 characters.

Step1: set the maximum number of characters in a single line of LCM.

Step2: set the maximum number of lines in the LCM.
For example, the following sets the LCM to have 2 lines.

Step2: set the maximum number of lines in the LCM.

Step3: set the LCM interface.
For example, the following sets I2C interface.

Step3: set the LCM interface.

Step4: compile and upload the program to the Arduino Uno development board.
Figure 9 shows a schematic diagram of the screens of three LCMs.
When the display contrast is light or dark, the variable resistor at the V0 pin can be adjusted to an appropriate contrast, as shown in Figure 10.

(a) Light contrast Only light characters can be seen. (b) Appropriate contrast (c) Dark contrast Each character has an obvious shadow.
figure9-a-1-screens-of-three-lcms figure9-b-1-screens-of-three-lcms figure9-c-1-screens-of-three-lcms
figure9-a-2-screens-of-three-lcms figure9-b-2-screens-of-three-lcms figure9-c-2-screens-of-three-lcms
figure9-a-3-screens-of-three-lcms figure9-b-3-screens-of-three-lcms figure9-c-3-screens-of-three-lcms
Figure 9:a schematic diagram of the screens of three LCMs

 

Figure 10: the V0 pin is adjustable

Figure 10:the V0 pin is adjustable

If you have demand of full demo code, please contact us.

Have questions about display solutions for your business? Contact Us!

Subscribe

Receive emails about news updates from Winstar.

Contact Us

Price/Datasheet/General inquiry

Technical Support

Contact us for any technical information

go top
Contact Us
close

We value your privacy

By clicking "Allow All Cookies", you agree to the storing of cookies on your device to enhance site navigation, analyse site usage, and assist in our marketing and performance efforts. You can find further information this subject in our policy.

We value your privacy

Winstar and certain third parties use cookies on www.winstar.com.tw. The details regarding the types of
cookies, their purpose and the third parties involved are described below and in our Cookie Policy.
Please click on “Allow All” to consent to our usage of cookies in order to have the best possible
experience on our websites. You can also set your preferences or reject cookies (except for strictly
necessary cookies).

Manage Consent Preferences

Always Active
Essential Cookies

These cookies are essential in order to enable you to move around the website and use its
features, such as setting your privacy preferences, logging in or filling in forms.

Analytics Cookies

Also known as “statistics cookies,” these cookies collect information about how you use a website, like which pages you visited and which links you clicked on. See Detail