Bus pirate, 5110 LCD interfacing

20140902_114615

The Bus Pirate has to be one of the handiest debugging platforms ever created. It makes it really easy to ensure you know how something works before placing it in your final design. I recently decided to use some of the old refurbished 5110 LCD modules in a design, here’s a quick guide to get these units working with the Bus Pirate. The table below gives a brief hookup overview:

 

LCD Bus Pirate Wire Purpose
LED Not Connected Not Connected Not used for test
SCLK CLK White SPI Clock
DN/MOSI MOSI Green Slave data in
D/C AUX0 Yellow 1 Data or command, Data high, command low
RST AUX1 Yellow 1 Reset pin, Active high, reset low
SCE CS Blue SPI chip select
GND GND Black Ground connection
VCC +3.3V Red Power supply

I used the AUX0 pin for the data/command control and the AUX1 pin for RST control, to switch between these modes you thus have to use the c and k commands. For example, after setting up the Bus Pirate in SPI mode using the default settings, you can use the following commands to reset the LCD:

Wka%A

This will turn on the power supply, switch to AUX1, set the pin low, wait 1mS and set it high again. Now we want to initialize the LCD, you can use the following command:

ca[0x21 0xBF 0x12 0x20 0x0c]

Each byte in the command above has a specific purpose, outlined below:

  • Enable the LCD and set extended operating mode
  • Set the control voltage
  • Set the bias
  • Switch back to normal operating mode
  • Enable normal display mode

We’re ready to go now, to set one LCD block to full you can use the following:

cA[0xFF:5]a

Or clear the LCD by writing all nulls and resetting the cursors (this LCD doesn’t have a reset command unfortunately):

cA[0x00:504]a
ca[0x80]
ca[0x40]

The unit doesn’t have a built in character set meaning you will have to supply your own. I found this one on the web which works fairly well:

0x00 0x00 0x00 0x00 0x00 // 20  
0x00 0x00 0x5f 0x00 0x00 // 21 !
0x00 0x07 0x00 0x07 0x00 // 22 "
0x14 0x7f 0x14 0x7f 0x14 // 23 #
0x24 0x2a 0x7f 0x2a 0x12 // 24 $
0x23 0x13 0x08 0x64 0x62 // 25 %
0x36 0x49 0x55 0x22 0x50 // 26 &
0x00 0x05 0x03 0x00 0x00 // 27 '
0x00 0x1c 0x22 0x41 0x00 // 28 (
0x00 0x41 0x22 0x1c 0x00 // 29 )
0x14 0x08 0x3e 0x08 0x14 // 2a *
0x08 0x08 0x3e 0x08 0x08 // 2b +
0x00 0x50 0x30 0x00 0x00 // 2c ,
0x08 0x08 0x08 0x08 0x08 // 2d -
0x00 0x60 0x60 0x00 0x00 // 2e .
0x20 0x10 0x08 0x04 0x02 // 2f /
0x3e 0x51 0x49 0x45 0x3e // 30 0
0x00 0x42 0x7f 0x40 0x00 // 31 1
0x42 0x61 0x51 0x49 0x46 // 32 2
0x21 0x41 0x45 0x4b 0x31 // 33 3
0x18 0x14 0x12 0x7f 0x10 // 34 4
0x27 0x45 0x45 0x45 0x39 // 35 5
0x3c 0x4a 0x49 0x49 0x30 // 36 6
0x01 0x71 0x09 0x05 0x03 // 37 7
0x36 0x49 0x49 0x49 0x36 // 38 8
0x06 0x49 0x49 0x29 0x1e // 39 9
0x00 0x36 0x36 0x00 0x00 // 3a :
0x00 0x56 0x36 0x00 0x00 // 3b ;
0x08 0x14 0x22 0x41 0x00 // 3c <
0x14 0x14 0x14 0x14 0x14 // 3d =
0x00 0x41 0x22 0x14 0x08 // 3e >
0x02 0x01 0x51 0x09 0x06 // 3f ?
0x32 0x49 0x79 0x41 0x3e // 40 @
0x7e 0x11 0x11 0x11 0x7e // 41 A
0x7f 0x49 0x49 0x49 0x36 // 42 B
0x3e 0x41 0x41 0x41 0x22 // 43 C
0x7f 0x41 0x41 0x22 0x1c // 44 D
0x7f 0x49 0x49 0x49 0x41 // 45 E
0x7f 0x09 0x09 0x09 0x01 // 46 F
0x3e 0x41 0x49 0x49 0x7a // 47 G
0x7f 0x08 0x08 0x08 0x7f // 48 H
0x00 0x41 0x7f 0x41 0x00 // 49 I
0x20 0x40 0x41 0x3f 0x01 // 4a J
0x7f 0x08 0x14 0x22 0x41 // 4b K
0x7f 0x40 0x40 0x40 0x40 // 4c L
0x7f 0x02 0x0c 0x02 0x7f // 4d M
0x7f 0x04 0x08 0x10 0x7f // 4e N
0x3e 0x41 0x41 0x41 0x3e // 4f O
0x7f 0x09 0x09 0x09 0x06 // 50 P
0x3e 0x41 0x51 0x21 0x5e // 51 Q
0x7f 0x09 0x19 0x29 0x46 // 52 R
0x46 0x49 0x49 0x49 0x31 // 53 S
0x01 0x01 0x7f 0x01 0x01 // 54 T
0x3f 0x40 0x40 0x40 0x3f // 55 U
0x1f 0x20 0x40 0x20 0x1f // 56 V
0x3f 0x40 0x38 0x40 0x3f // 57 W
0x63 0x14 0x08 0x14 0x63 // 58 0x
0x07 0x08 0x70 0x08 0x07 // 59 Y
0x61 0x51 0x49 0x45 0x43 // 5a Z
0x00 0x7f 0x41 0x41 0x00 // 5b [
0x02 0x04 0x08 0x10 0x20 // 5c ¥
0x00 0x41 0x41 0x7f 0x00 // 5d ]
0x04 0x02 0x01 0x02 0x04 // 5e ^
0x40 0x40 0x40 0x40 0x40 // 5f _
0x00 0x01 0x02 0x04 0x00 // 60 `
0x20 0x54 0x54 0x54 0x78 // 61 a
0x7f 0x48 0x44 0x44 0x38 // 62 b
0x38 0x44 0x44 0x44 0x20 // 63 c
0x38 0x44 0x44 0x48 0x7f // 64 d
0x38 0x54 0x54 0x54 0x18 // 65 e
0x08 0x7e 0x09 0x01 0x02 // 66 f
0x0c 0x52 0x52 0x52 0x3e // 67 g
0x7f 0x08 0x04 0x04 0x78 // 68 h
0x00 0x44 0x7d 0x40 0x00 // 69 i
0x20 0x40 0x44 0x3d 0x00 // 6a j
0x7f 0x10 0x28 0x44 0x00 // 6b k
0x00 0x41 0x7f 0x40 0x00 // 6c l
0x7c 0x04 0x18 0x04 0x78 // 6d m
0x7c 0x08 0x04 0x04 0x78 // 6e n
0x38 0x44 0x44 0x44 0x38 // 6f o
0x7c 0x14 0x14 0x14 0x08 // 70 p
0x08 0x14 0x14 0x18 0x7c // 71 q
0x7c 0x08 0x04 0x04 0x08 // 72 r
0x48 0x54 0x54 0x54 0x20 // 73 s
0x04 0x3f 0x44 0x40 0x20 // 74 t
0x3c 0x40 0x40 0x20 0x7c // 75 u
0x1c 0x20 0x40 0x20 0x1c // 76 v
0x3c 0x40 0x30 0x40 0x3c // 77 w
0x44 0x28 0x10 0x28 0x44 // 78 0x
0x0c 0x50 0x50 0x50 0x3c // 79 y
0x44 0x64 0x54 0x4c 0x44 // 7a z
0x00 0x08 0x36 0x41 0x00 // 7b {
0x00 0x00 0x7f 0x00 0x00 // 7c |
0x00 0x41 0x36 0x08 0x00 // 7d }
0x10 0x08 0x08 0x10 0x08 // 7e ←
0x78 0x46 0x41 0x46 0x78 // 7f →

To set the message “TEST” on the LCD you would thus need to do:

cA[0x01 0x01 0x7f 0x01 0x01]a
cA[0x7f 0x49 0x49 0x49 0x41]a
cA[0x46 0x49 0x49 0x49 0x31]a
cA[0x01 0x01 0x7f 0x01 0x01]a

I’d recommend grabbing the data-sheet and jumping into the table of commands, the rest is mostly meaningless details. Happy hacking.

Advertisements

~ by s3c on 2014/09/02.

2 Responses to “Bus pirate, 5110 LCD interfacing”

  1. Hi,

    Nice post !

    Instead of using the Bus Pirate command-line interface, you could also use the binary mode. Have a look at the libbuspirate on Sourceforge (https://sourceforge.net/projects/libbuspirate/). It allows you to control the Bus Pirate using C. There is a complete example based on the Nokia 5110 in the source code repository.

    Cheers,
    Bruno

  2. That’s pretty slick, thanks for the link.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: