Chen Shuochen / Battleship
Revision:
50:bbb91c37f550
Parent:
48:af12980ac515
--- a/N5110.h	Mon Mar 19 13:44:23 2018 +0000
+++ b/N5110.h	Mon May 06 09:54:02 2019 +0000
@@ -1,20 +1,20 @@
 #ifndef N5110_H
 #define N5110_H
-
+ 
 #include "mbed.h"
-
+ 
 // number of pixels on display
 #define WIDTH 84
 #define HEIGHT 48
 #define BANKS 6
-
+ 
 /// Fill types for 2D shapes
 enum FillType {
     FILL_TRANSPARENT, ///< Transparent with outline
     FILL_BLACK,       ///< Filled black
     FILL_WHITE,       ///< Filled white (no outline)
 };
-
+ 
 /** N5110 Class
 @brief Library for interfacing with Nokia 5110 LCD display (https://www.sparkfun.com/products/10168) using the hardware SPI on the mbed.
 @brief The display is powered from a GPIO pin meaning it can be controlled via software.  The LED backlight is also software-controllable (via PWM pin).
@@ -22,17 +22,17 @@
 @brief The library also implements a screen buffer so that individual pixels on the display (84 x 48) can be set, cleared and read.
 @brief The library can print primitive shapes (lines, circles, rectangles)
 @brief Acknowledgements to Chris Yan's Nokia_5110 Library.
-
+ 
 @brief Revision 1.3
-
+ 
 @author Craig A. Evans
 @date   7th February 2017
-
+ 
 @code
-
+ 
 #include "mbed.h"
 #include "N5110.h"
-
+ 
 //      rows,cols
 int sprite[8][5] =   {
     { 0,0,1,0,0 },
@@ -44,12 +44,12 @@
     { 1,1,0,1,1 },
     { 1,1,0,1,1 },
 };
-
+ 
 //    VCC,SCE,RST,D/C,MOSI,SCLK,LED
 //N5110 lcd(p7,p8,p9,p10,p11,p13,p21);  // LPC1768 - pwr from GPIO
 N5110 lcd(p8,p9,p10,p11,p13,p21);  // LPC1768 - powered from +3V3 - JP1 in 2/3 position
 //N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);  // K64F - pwr from 3V3
-
+ 
 int main()
 {
     // first need to initialise display
@@ -58,23 +58,23 @@
     // change set contrast in range 0.0 to 1.0
     // 0.4 appears to be a good starting point
     lcd.setContrast(0.4);
-
+ 
     while(1) {
-
+ 
         // these are default settings so not strictly needed
         lcd.normalMode();      // normal colour mode
         lcd.setBrightness(0.5); // put LED backlight on 50%
-
+ 
         lcd.clear();
         // x origin, y origin, rows, cols, sprite
         lcd.drawSprite(20,6,8,5,(int *)sprite);
         lcd.refresh();
         wait(5.0);
-
+ 
         lcd.clear(); // clear buffer at start of every loop
         // can directly print strings at specified co-ordinates (must be less than 84 pixels to fit on display)
         lcd.printString("Hello, World!",0,0);
-
+ 
         char buffer[14];  // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
         // so can display a string of a maximum 14 characters in length
         // or create formatted strings - ensure they aren't more than 14 characters long
@@ -83,15 +83,15 @@
         // it is important the format specifier ensures the length will fit in the buffer
         if (length <= 14)  // if string will fit on display (assuming printing at x=0)
             lcd.printString(buffer,0,1);           // display on screen
-
+ 
         float pressure = 1012.3;  // same idea with floats
         length = sprintf(buffer,"P = %.2f mb",pressure);
         if (length <= 14)
             lcd.printString(buffer,0,2);
-
+ 
         // can also print individual characters at specified place
         lcd.printChar('X',5,3);
-
+ 
         // draw a line across the display at y = 40 pixels (origin top-left)
         for (int i = 0; i < WIDTH; i++) {
             lcd.setPixel(i,40,true);
@@ -99,51 +99,51 @@
         // need to refresh display after setting pixels or writing strings
         lcd.refresh();
         wait(5.0);
-
+ 
         // can check status of pixel using getPixel(x,y);
         lcd.clear();  // clear buffer
         lcd.setPixel(2,2,true);  // set random pixel in buffer
         lcd.refresh();
         wait(1.0);
-
+ 
         int pixel_to_test = lcd.getPixel(2,2);
-
+ 
         if ( pixel_to_test ) {
             lcd.printString("2,2 is set",0,4);
         }
-
+ 
         // this one shouldn't be set
         lcd.setPixel(3,3,false);  // clear random pixel in buffer
         lcd.refresh();
         pixel_to_test = lcd.getPixel(3,3);
-
+ 
         if ( pixel_to_test == 0 ) {
             lcd.printString("3,3 is clear",0,5);
         }
-
+ 
         lcd.refresh();
         wait(4.0);
-
+ 
         lcd.clear();            // clear buffer
         lcd.inverseMode();      // invert colours
         lcd.setBrightness(1.0); // put LED backlight on full
-
+ 
         float array[84];
-
+ 
         for (int i = 0; i < 84; i++) {
             array[i] = 0.5 + 0.5*sin(i*2*3.14/84);
         }
-
+ 
         // can also plot graphs - 84 elements only
         // values must be in range 0.0 - 1.0
         lcd.plotArray(array);
         lcd.refresh();
         wait(5.0);
-
+ 
         lcd.clear();
         lcd.normalMode();      // normal colour mode back
         lcd.setBrightness(0.5); // put LED backlight on 50%
-
+ 
         // example of drawing lines
         for (int x = 0; x < WIDTH ; x+=10) {
             // x0,y0,x1,y1,type 0-white,1-black,2-dotted
@@ -151,8 +151,8 @@
         }
         lcd.refresh();  // refresh after drawing shapes
         wait(5.0);
-
-
+ 
+ 
         lcd.clear();
         // example of how to draw circles
         lcd.drawCircle(WIDTH/2,HEIGHT/2,20,FILL_BLACK);  // x,y,radius,black fill
@@ -160,7 +160,7 @@
         lcd.drawCircle(WIDTH/2,HEIGHT/2,30,FILL_TRANSPARENT);  // x,y,radius,transparent with outline
         lcd.refresh();  // refresh after drawing shapes
         wait(5.0);
-
+ 
         lcd.clear();
         // example of how to draw rectangles
         //          origin x,y,width,height,type
@@ -169,11 +169,11 @@
         lcd.drawRect(2,2,70,40,FILL_TRANSPARENT);    // transparent, just outline
         lcd.refresh();  // refresh after drawing shapes
         wait(5.0);
-
+ 
     }
 }
-
-
+ 
+ 
 @endcode
 */
 class N5110
@@ -186,10 +186,10 @@
     DigitalOut  *_sce;
     DigitalOut  *_rst;
     DigitalOut  *_dc;
-
+ 
 // variables
     unsigned char buffer[84][6];  // screen buffer - the 6 is for the banks - each one is 8 bits;
-
+ 
 public:
     /** Create a N5110 object connected to the specified pins
     *
@@ -209,7 +209,7 @@
           PinName const mosiPin,
           PinName const sclkPin,
           PinName const ledPin);
-
+ 
     /** Create a N5110 object connected to the specified pins (Vcc to +3V3)
     *
     * @param sce  Pin connected to chip enable (pin 3)
@@ -226,32 +226,32 @@
           PinName const mosiPin,
           PinName const sclkPin,
           PinName const ledPin);
-
+ 
     /**
      * Free allocated memory when object goes out of scope
      */
     ~N5110();
-
+ 
     /** Initialise display
     *
     *   Powers up the display and turns on backlight (50% brightness default).
     *   Sets the display up in horizontal addressing mode and with normal video mode.
     */
     void init();
-
+ 
     /** Turn off
     *
     *   Powers down the display and turns of the backlight.
     *   Needs to be reinitialised before being re-used.
     */
     void turnOff();
-
+ 
     /** Clear
     *
     *   Clears the screen buffer.
     */
     void clear();
-
+ 
     /** Set screen constrast
     *   @param constrast - float in range 0.0 to 1.0 (0.40 to 0.60 is usually a good value)
     */
@@ -261,19 +261,19 @@
     *  Black on white
     */
     void normalMode();
-
+ 
     /** Turn on inverse video mode (default)
     *  White on black
     */
     void inverseMode();
-
+ 
     /** Set Brightness
     *
     *   Sets brightness of LED backlight.
     *   @param brightness - float in range 0.0 to 1.0
     */
     void setBrightness(float const brightness);
-
+ 
     /** Print String
     *
     *   Prints a string of characters to the screen buffer. String is cut-off after the 83rd pixel.
@@ -283,7 +283,7 @@
     void printString(char const         *str,
                      unsigned int const  x,
                      unsigned int const  y);
-
+ 
     /** Print Character
     *
     *   Sends a character to the screen buffer.  Printed at the specified location. Character is cut-off after the 83rd pixel.
@@ -294,7 +294,7 @@
     void printChar(char const         c,
                    unsigned int const x,
                    unsigned int const y);
-
+ 
     /**
     * @brief Set a Pixel
     *
@@ -308,7 +308,7 @@
     void setPixel(unsigned int const x,
                   unsigned int const y,
                   bool const         state = true);
-
+ 
     /**
     *  @brief Clear a Pixel
     *
@@ -322,7 +322,7 @@
     void clearPixel(unsigned int const x,
                     unsigned int const y)
     __attribute__((deprecated("Use setPixel(x,y,false) instead")));
-
+ 
     /** Get a Pixel
     *
     *   This function gets the status of a pixel in the screen buffer.
@@ -334,13 +334,13 @@
     */
     int getPixel(unsigned int const x,
                  unsigned int const y) const;
-
+ 
     /** Refresh display
     *
     *   This functions sends the screen buffer to the display.
     */
     void refresh();
-
+ 
     /** Randomise buffer
     *
     *   This function fills the buffer with random data.  Can be used to test the display.
@@ -349,14 +349,14 @@
     *   TODO: Randomise the seed - maybe using the noise on the AnalogIn pins.
     */
     void randomiseBuffer();
-
+ 
     /** Plot Array
     *
     *   This function plots a one-dimensional array in the buffer.
     *   @param array[] - y values of the plot. Values should be normalised in the range 0.0 to 1.0. First 84 plotted.
     */
     void plotArray(float const array[]);
-
+ 
     /** Draw Circle
     *
     *   This function draws a circle at the specified origin with specified radius in the screen buffer
@@ -371,7 +371,7 @@
                     unsigned int const y0,
                     unsigned int const radius,
                     FillType const     fill);
-
+ 
     /** Draw Line
     *
     *   This function draws a line between the specified points using linear interpolation.
@@ -386,7 +386,7 @@
                   unsigned int const x1,
                   unsigned int const y1,
                   unsigned int const type);
-
+ 
     /** Draw Rectangle
     *
     *   This function draws a rectangle.
@@ -401,7 +401,7 @@
                   unsigned int const width,
                   unsigned int const height,
                   FillType const     fill);
-
+ 
     /** Draw Sprite
     *
     *   This function draws a sprite as defined in a 2D array
@@ -416,8 +416,8 @@
                     int nrows,
                     int ncols,
                     int *sprite);
-
-
+ 
+ 
 private:
 // methods
     void setXYAddress(unsigned int const x,
@@ -431,7 +431,7 @@
     void setTempCoefficient(char tc);  // 0 to 3
     void setBias(char bias);  // 0 to 7
 };
-
+ 
 const unsigned char font5x7[480] = {
     0x00, 0x00, 0x00, 0x00, 0x00,// (space)
     0x00, 0x00, 0x5F, 0x00, 0x00,// !
@@ -530,5 +530,5 @@
     0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
     0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
 };
-
+ 
 #endif
\ No newline at end of file