A basic LCD output test which uses the NXP LPC1768\'s SPI interface to display pixels, characters, and numbers on the Nokia 5110 or Nokia 3310 LCD.
Quick and versatile LCD screen control. Works as a great alternative to serial consoles!
---------
Inverted-color text function makes easy menus and borders
Uses a simple SetXY(char, char) function to draw data-plots or patterns
- Wiring -
LCD's connections from left to right:
1) +3.3v (V_lcd) - mbed's VOUT
2) GND - mbed's GND
3) SCE (chip select) - mbed's p8
4) RST (reset) - mbed's p9
5) DC (data/command) - mbed's p10
6) MOSI - mbed's p11
7) SCLK (serial clock) - mbed's p13
8) +3.3v (V_backlight) - mbed's VOUT
The code for this setup would be...
LcdPins myPins;
myPins.sce = p8;
myPins.rst = p9;
myPins.dc = p10;
myPins.mosi = p11;
myPins.miso = NC;
myPins.sclk = p13;
or more easily...
LcdPins myPins = { p11, NC, p13, p10, p8, p9 };
Init the NokiaLcd class using the above struct...
NokiaLcd myLcd( myPins );
then start the LCD using...
myLcd.InitLcd();
Simple text output is achieved with either of these functions:
void DrawString(char* str);
void DrawChar(char character);
------
Better documentation, pre/post conditions, and extended draw functions are coming soon :)
main.cpp@4:403f1aa3a78b, 2021-10-15 (annotated)
- Committer:
- Fuzball
- Date:
- Fri Oct 15 20:36:21 2021 +0000
- Revision:
- 4:403f1aa3a78b
- Parent:
- 2:e448efb1fa68
commiting :D
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Fuzball | 2:e448efb1fa68 | 1 | // Project: Nokia5110 - Controlling a NK5110 display from an NXP LPC1768 |
Fuzball | 2:e448efb1fa68 | 2 | // File: main.cpp |
Fuzball | 4:403f1aa3a78b | 3 | // Author: Krissi Yan |
Fuzball | 4:403f1aa3a78b | 4 | // Created: January, 2016 |
Fuzball | 2:e448efb1fa68 | 5 | // Revised: |
Fuzball | 2:e448efb1fa68 | 6 | // Desc: A basic LCD output test which uses the NXP LPC1768's SPI interface to |
Fuzball | 2:e448efb1fa68 | 7 | // display pixels, characters, and numbers on the Nokia 5110 LCD. |
Fuzball | 2:e448efb1fa68 | 8 | // Created using a sparkfun breakout board with integrated Phillips 8544 driver |
Fuzball | 2:e448efb1fa68 | 9 | // for 48x84 LCDs. |
Fuzball | 2:e448efb1fa68 | 10 | |
Fuzball | 2:e448efb1fa68 | 11 | #include "mbed.h" |
Fuzball | 2:e448efb1fa68 | 12 | #include "NOKIA_5110.h" |
Fuzball | 2:e448efb1fa68 | 13 | |
Fuzball | 2:e448efb1fa68 | 14 | int main() |
Fuzball | 2:e448efb1fa68 | 15 | { |
Fuzball | 2:e448efb1fa68 | 16 | // Init the data structures and NokiaLcd class |
Fuzball | 2:e448efb1fa68 | 17 | LcdPins myPins; |
Fuzball | 2:e448efb1fa68 | 18 | myPins.sce = p8; |
Fuzball | 2:e448efb1fa68 | 19 | myPins.rst = p9; |
Fuzball | 2:e448efb1fa68 | 20 | myPins.dc = p10; |
Fuzball | 2:e448efb1fa68 | 21 | myPins.mosi = p11; |
Fuzball | 2:e448efb1fa68 | 22 | myPins.miso = NC; |
Fuzball | 2:e448efb1fa68 | 23 | myPins.sclk = p13; |
Fuzball | 2:e448efb1fa68 | 24 | |
Fuzball | 2:e448efb1fa68 | 25 | NokiaLcd myLcd( myPins ); |
Fuzball | 2:e448efb1fa68 | 26 | |
Fuzball | 2:e448efb1fa68 | 27 | // Start the LCD |
Fuzball | 2:e448efb1fa68 | 28 | myLcd.InitLcd(); |
Fuzball | 2:e448efb1fa68 | 29 | |
Fuzball | 2:e448efb1fa68 | 30 | // Draw a test pattern on the LCD and stall for 15 seconds |
Fuzball | 4:403f1aa3a78b | 31 | myLcd.TestLcd( 0xF0 ); |
Fuzball | 2:e448efb1fa68 | 32 | wait( 15 ); |
Fuzball | 2:e448efb1fa68 | 33 | |
Fuzball | 2:e448efb1fa68 | 34 | // Turn off the LCD and enter an endless loop |
Fuzball | 2:e448efb1fa68 | 35 | myLcd.ShutdownLcd(); |
Fuzball | 2:e448efb1fa68 | 36 | while( 1 ) |
Fuzball | 2:e448efb1fa68 | 37 | { |
Fuzball | 2:e448efb1fa68 | 38 | //dance |
Fuzball | 2:e448efb1fa68 | 39 | } |
Fuzball |
1:e25ab356dc9b | 40 | } |