Remarks
Pcd8544 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
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 |