Remarks

Pcd8544
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Displays.Pcd8544

The PCD8544 display, also known as a Nokia 5110 LCD, is a single color 84x84 LCD display. Data is sent to the display via SPI. The also typically also include an led backlight controlled via a single pin.

These displays have excellent visibility in daylight, even without the backlight, making them a good choice for builds with low-power restrictions and require visibility is bright light or daylight.

Purchasing

Code Example

MicroGraphics graphics;

public override Task Initialize()
{
    Resolver.Log.Info("Initializing...");

    var config = new Meadow.Hardware.SpiClockConfiguration(Pcd8544.DEFAULT_SPEED, Meadow.Hardware.SpiClockConfiguration.Mode.Mode0);

    var display = new Pcd8544
    (
        spiBus: Device.CreateSpiBus(Device.Pins.SCK, Device.Pins.MOSI, Device.Pins.MISO, config),
        chipSelectPin: Device.Pins.D01,
        dcPin: Device.Pins.D00,
        resetPin: Device.Pins.D02
    );

    graphics = new MicroGraphics(display);

    return base.Initialize();
}

public override Task Run()
{
    graphics.Clear(true);
    graphics.CurrentFont = new Font8x12();
    graphics.DrawText(0, 0, "PCD8544");
    graphics.DrawRectangle(5, 14, 30, 10, true);

    graphics.Show();

    return base.Run();
}

Sample project(s) available on GitHub

Wiring Example

To wire a PCD8544 to your Meadow board, connect the following:

PCD8544 Meadow Pin
GND GND
LIGHT GND
VCC 3V3
CLK SCK
DIN MOSI
DC D00
CE D01
RST D02

Characteristic Locus
Inheritance System.Object > Pcd8544
Namespace Meadow.Foundation.Displays
Assembly Pcd8544.dll

Syntax

public class Pcd8544 : IGraphicsDisplay

Constructors

Pcd8544(ISpiBus, IDigitalOutputPort, IDigitalOutputPort, IDigitalOutputPort)

Create a new Pcd8544 display object

Declaration
public Pcd8544(ISpiBus spiBus, IDigitalOutputPort chipSelectPort, IDigitalOutputPort dataCommandPort, IDigitalOutputPort resetPort)

Parameters

Type Name Description
ISpiBus spiBus

SPI bus connected to display

IDigitalOutputPort chipSelectPort

Chip select output port

IDigitalOutputPort dataCommandPort

Data command output port

IDigitalOutputPort resetPort

Reset output port

Pcd8544(ISpiBus, IPin, IPin, IPin)

Create a Pcd8544 object

Declaration
public Pcd8544(ISpiBus spiBus, IPin chipSelectPin, IPin dcPin, IPin resetPin)

Parameters

Type Name Description
ISpiBus spiBus

SPI bus connected to display

IPin chipSelectPin

Chip select pin

IPin dcPin

Data command pin

IPin resetPin

Reset pin

Fields

commandBuffer

Buffer to hold internal command data to be sent over the SPI bus

Declaration
protected Memory<byte> commandBuffer

Field Value

Type Description
Memory<System.Byte>

DEFAULT_SPEED

Default SPI bus speed

Declaration
public static Frequency DEFAULT_SPEED

Field Value

Type Description
Frequency

imageBuffer

Buffer to hold display data

Declaration
protected Buffer1bpp imageBuffer

Field Value

Type Description
Buffer1bpp

Properties

ColorMode

Display color mode

Declaration
public ColorMode ColorMode { get; }

Property Value

Type Description
ColorMode

Height

Height of display in pixels

Declaration
public int Height { get; }

Property Value

Type Description
System.Int32

IsDisplayInverted

Is the display inverted

Declaration
public bool IsDisplayInverted { get; }

Property Value

Type Description
System.Boolean

PixelBuffer

The buffer the holds the pixel data for the display

Declaration
public IPixelBuffer PixelBuffer { get; }

Property Value

Type Description
IPixelBuffer

SupportedColorModes

The Color mode supported by the display

Declaration
public ColorMode SupportedColorModes { get; }

Property Value

Type Description
ColorMode

Width

Width of display in pixels

Declaration
public int Width { get; }

Property Value

Type Description
System.Int32

Methods

Clear(Boolean)

Clear the display

Declaration
public void Clear(bool updateDisplay = false)

Parameters

Type Name Description
System.Boolean updateDisplay

If true, it will force a display update

Remarks

Clears the internal memory buffer

DrawPixel(Int32, Int32, Color)

Draw pixel at location

Declaration
public void DrawPixel(int x, int y, Color color)

Parameters

Type Name Description
System.Int32 x

x position in pixels

System.Int32 y

y position in pixels

Color color

any value other than black will make the pixel visible

DrawPixel(Int32, Int32, Boolean)

Draw pixel at location

Declaration
public void DrawPixel(int x, int y, bool enabled)

Parameters

Type Name Description
System.Int32 x

x position in pixels

System.Int32 y

y position in pixels

System.Boolean enabled

True = turn on pixel, false = turn off pixel

Fill(Color, Boolean)

Fill with color

Declaration
public void Fill(Color fillColor, bool updateDisplay = false)

Parameters

Type Name Description
Color fillColor

color - converted to on/off

System.Boolean updateDisplay

should refresh display

Fill(Int32, Int32, Int32, Int32, Color)

Fill region with color

Declaration
public void Fill(int x, int y, int width, int height, Color fillColor)

Parameters

Type Name Description
System.Int32 x

x position

System.Int32 y

y position

System.Int32 width

width of region

System.Int32 height

height of region

Color fillColor

color - converted to on/off

InvertDisplay(Boolean)

Invert the entire display

Declaration
public void InvertDisplay(bool inverse)

Parameters

Type Name Description
System.Boolean inverse

Invert if true, normal if false

InvertPixel(Int32, Int32)

Invert pixel at a location

Declaration
public void InvertPixel(int x, int y)

Parameters

Type Name Description
System.Int32 x

x position in pixels

System.Int32 y

y position in pixels

Show()

Update the display

Declaration
public void Show()

Show(Int32, Int32, Int32, Int32)

Update a region of the display Currently always does a full screen update for this display

Declaration
public void Show(int left, int top, int right, int bottom)

Parameters

Type Name Description
System.Int32 left

The left position in pixels

System.Int32 top

The top position in pixels

System.Int32 right

The right position in pixels

System.Int32 bottom

The bottom position in pixels

WriteBuffer(Int32, Int32, IPixelBuffer)

Draw buffer at location

Declaration
public void WriteBuffer(int x, int y, IPixelBuffer displayBuffer)

Parameters

Type Name Description
System.Int32 x

x position in pixels

System.Int32 y

y position in pixels

IPixelBuffer displayBuffer

buffer to draw