tr

Files at this revision

API Documentation at this revision

Comitter:
tangguangmin
Date:
Tue Mar 30 13:47:15 2021 +0000
Parent:
52:1210e39a4748
Commit message:
45

Changed in this revision

N5110.cpp Show annotated file Show diff for this revision Revisions of this file
N5110.h Show annotated file Show diff for this revision Revisions of this file
--- a/N5110.cpp	Thu Mar 18 13:58:10 2021 +0000
+++ b/N5110.cpp	Tue Mar 30 13:47:15 2021 +0000
@@ -461,6 +461,10 @@
                 int ncols,
                 char *pic)
 {
+    if(ncols%8)
+    {
+        ncols = (ncols/8 + 1) * 8;
+    }
     if((nrows - x0) < 84)
         x0 = nrows - 84;
     if((ncols - y0) < 48)
@@ -472,7 +476,7 @@
             char pixels = 0;
             int divisor = ((x0 + m) * ncols + (y0 + n * 8))/8;
             int remainder = ((x0 + m) * ncols + (y0 + n * 8))%8;
-            pixels = ((pic[divisor] << remainder)) + ((pic[divisor+1] >> (8 - remainder)));
+            pixels = ((pic[divisor] >> remainder)) + ((pic[divisor+1] << (8 - remainder)));
             buffer[m][n] = pixels;
         }
     }
--- a/N5110.h	Thu Mar 18 13:58:10 2021 +0000
+++ b/N5110.h	Tue Mar 30 13:47:15 2021 +0000
@@ -39,169 +39,6 @@
     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).
-@brief Can print characters and strings to the display using the included 5x7 font.
-@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 },
-    { 0,1,1,1,0 },
-    { 0,0,1,0,0 },
-    { 0,1,1,1,0 },
-    { 1,1,1,1,1 },
-    { 1,1,1,1,1 },
-    { 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
-    lcd.init();
-
-    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
-        int temperature = 27;
-        int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
-        // 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);
-        }
-        // need to refresh display after setting pixels or writing strings
-        lcd.refresh();
-        wait(5.0);
-
-        for(int i = 0; i < 3; i++) {
-            for(int j = 0; j < 5; j++) {
-                printf("%d,%d = %d\n",i,j,glyph[i][j]);
-            }
-        }
-
-     
-
-        // can check status of pixel using getPixel(x,y);
-        lcd.clear();  // clear buffer
-        lcd.setPixel(2,2);  // 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
-        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
-            lcd.drawLine(0,0,x,HEIGHT,2);
-        }
-        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
-        lcd.drawCircle(WIDTH/2,HEIGHT/2,10,FILL_WHITE);  // x,y,radius,white fill
-        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
-        lcd.drawRect(10,10,50,30,FILL_BLACK);  // filled black rectangle
-        lcd.drawRect(15,15,20,10,FILL_WHITE);  // filled white rectange (no outline)
-        lcd.drawRect(2,2,70,40,FILL_TRANSPARENT);    // transparent, just outline
-        lcd.refresh();  // refresh after drawing shapes
-        wait(5.0);
-
-    }
-}
-
-
-@endcode
-*/
 class N5110
 {
 private: