LCD1602 Support

There is an optional driver for I2C LCD1602 displays. The LCD1602 is a 2 row by 16 character text LCD display.

LCD1602 support using an AiP31068L driver is in extra/rp_common/lcd1602.fs, which can be compiled either to RAM or to flash as needed. There is a demo program which uses it in extra/rp_common/lcd1602_demo.fs.

LCD1602 support using a PCF8574 I/O expander is in extra/rp_common/lcd1602_pcf8574.fs, which can be compiled either to RAM or to flash as needed. There is a demo program which uses it in extra/rp_common/lcd1602_pcf8574_demo.fs.

lcd1602

Configuring the LCD1602 using an AiP31068L driver is in the form of two steps. The first step is configuring the I2C bus, for which a convenience word init-lcd-i2c is provided; if the user manually configures the I2C bus or previously has used it to access another device, the user must manually call lcd-i2c-device! to set the I2C bus to use with the LCD1602 and then activate-lcd-i2c. The second step is initializing the LCD1602 device, which is done through calling init-lcd. These steps must be carried out before using the LCD1602 device.

The lcd1602 module contains the following words:

init-lcd-i2c

( pin1 pin2 i2c-device – )

Configure the I2C bus i2c-device to use GPIO’s pin1 and pin2 and set it up to communicate with the LCD1602 device on that bus.

init-lcd

( – )

Initialize the LCD1602 device. The I2C bus must be set up to communicate with the LCD1602 device first.

lcd-i2c-device!

( i2c-device – )

Manually set the I2C bus i2c-device to use with the LCD1602 without initializing the I2C bus itself.

activate-lcd-i2c

( – )

Manually set the I2C bus configured with init-lcd-i2c or lcd-i2c-device! to communicate with the LCD1602 device. This is necessary if the I2C bus has been configured manually or if another device has been previously used on the I2C bus.

clear-display

( – )

Clear the LCD1602 display.

put-text

( row col c-addr bytes – )

Write the specified string to the LCD1602 display at the specified row and column.

lcd1602-pcf8574

The lcd1602-pcf8574 module contains the following words:

LCD1602_PCF8574_I2C_ADDR

( – i2c-addr )

The default I2C address for LCD1602 PCF8574-based displays, $27. A common alternate address is $3F.

<lcd1602-pcf8574>

( – class )

The <lcd1602-pcf8574> class is the class for I2C LCD1602 PCF8574-based displays.

The <lcd1602-pcf8574> class includes the following constructor:

new

( pin0 pin1 columns rows oled? i2c-addr i2c-device lcd1602-pcf8574 – )

This constructor initializes an I2C LCD1602 display using a PCF8574 interface with the SDA and SCK pins specified as GPIO pins pin0 and pin1 (it does not matter which is which), columns columns, rows rows, the I2C address i2c-addr, the I2C device index i2c-device (note that this must match the I2C device index for pins pin0 and pin1), and the <lcd1602-pcf8574> instance being initialized, lcd1602-pcf8574.

LCD1602 devices might be LCD or OLED based; pass false or true as oled? to select the correct cursor movements.

The <lcd1602-pcf8574> class includes the following methoda:

put-text

( row col c-addr u lcd1602-pcf8574 – )

Display the text string at the specified row and column.

set-cursor

( row col lcd1602-pcf8574 – )

Move the cursor to the specified location.

set-text

( c-addr u lcd1602-pcf8574 – )

Display the text string at the current cursor position.

home

( lcd1602-pcf8574 – )

Clear display and move the cursor to 0,0.

clear

( lcd1602-pcf8574 – )

Clear display and move the cursor to 0,0.

display!

( flag lcd1602-pcf8574 – )

Enable display if true.

backlight!

( flag lcd1602-pcf8574 – )

Enable backlight if true.

cursor!

( flag lcd1602-pcf8574 – )

Show underline cursor if true.

autoscroll!

( flag lcd1602-pcf8574 – )

Right-justify text from cursor if true. Left-justify if false.

scroll-display-left

( lcd1602-pcf8574 – )

Move text left 1 position.

scroll-display-right

( lcd1602-pcf8574 – )

Move text right 1 position.

left-to-right

( lcd1602-pcf8574 – )

Configure left-to-right script.

right-to-left

( lcd1602-pcf8574 – )

Configure right-to-left script.