Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: LV7_LCDtest LV7_Grupa5_Tim003_Zadatak1 lv7_Grupa5_Tim008_zad1 LV7_PAI_Grupa5_tim10_Zadatak1 ... more
Revision 34:626b873e6362, committed 2017-03-01
- Comitter:
- eencae
- Date:
- Wed Mar 01 14:41:31 2017 +0000
- Parent:
- 30:11986573659e
- Parent:
- 29:5bc91bd44c77
- Commit message:
- Re-merge
Changed in this revision
| N5110.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/N5110.cpp Wed Feb 08 19:50:56 2017 +0000
+++ b/N5110.cpp Wed Mar 01 14:41:31 2017 +0000
@@ -4,29 +4,40 @@
// overloaded constructor includes power pin - LCD Vcc connected to GPIO pin
// this constructor works fine with LPC1768 - enough current sourced from GPIO
// to power LCD. Doesn't work well with K64F.
-N5110::N5110(PinName pwrPin, PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin)
+N5110::N5110(PinName const pwrPin,
+ PinName const scePin,
+ PinName const rstPin,
+ PinName const dcPin,
+ PinName const mosiPin,
+ PinName const sclkPin,
+ PinName const ledPin)
{
- spi = new SPI(mosiPin,NC,sclkPin); // create new SPI instance and initialise
// set up pins as required
- led = new PwmOut(ledPin);
- pwr = new DigitalOut(pwrPin);
- sce = new DigitalOut(scePin);
- rst = new DigitalOut(rstPin);
- dc = new DigitalOut(dcPin);
+ _spi = new SPI(mosiPin,NC,sclkPin); // create new SPI instance and initialise
+ _led = new PwmOut(ledPin);
+ _pwr = new DigitalOut(pwrPin);
+ _sce = new DigitalOut(scePin);
+ _rst = new DigitalOut(rstPin);
+ _dc = new DigitalOut(dcPin);
}
// overloaded constructor does not include power pin - LCD Vcc must be tied to +3V3
// Best to use this with K64F as the GPIO hasn't sufficient output current to reliably
// drive the LCD.
-N5110::N5110(PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin)
+N5110::N5110(PinName const scePin,
+ PinName const rstPin,
+ PinName const dcPin,
+ PinName const mosiPin,
+ PinName const sclkPin,
+ PinName const ledPin)
{
- spi = new SPI(mosiPin,NC,sclkPin); // create new SPI instance and initialise
// set up pins as required
- pwr = NULL; // pwr not needed so null it to be safe
- led = new PwmOut(ledPin);
- sce = new DigitalOut(scePin);
- rst = new DigitalOut(rstPin);
- dc = new DigitalOut(dcPin);
+ _spi = new SPI(mosiPin,NC,sclkPin); // create new SPI instance and initialise
+ _pwr = NULL; // pwr not needed so null it to be safe
+ _led = new PwmOut(ledPin);
+ _sce = new DigitalOut(scePin);
+ _rst = new DigitalOut(rstPin);
+ _dc = new DigitalOut(dcPin);
}
// initialise function - powers up and sends the initialisation commands
@@ -69,8 +80,8 @@
// function to power up the LCD and backlight - only works when using GPIO to power
void N5110::turnOn()
{
- if (pwr != NULL) {
- pwr->write(1); // apply power
+ if (_pwr != NULL) {
+ _pwr->write(1); // apply power
}
}
@@ -91,8 +102,8 @@
wait_ms(10);
// if we are powering the LCD using the GPIO then make it low to turn off
- if (pwr != NULL) {
- pwr->write(0); // turn off power
+ if (_pwr != NULL) {
+ _pwr->write(0); // turn off power
}
}
@@ -106,33 +117,32 @@
if (brightness > 1.0f)
brightness = 1.0f;
// set PWM duty cycle
- led->write(brightness);
+ _led->write(brightness);
}
// pulse the active low reset line
void N5110::reset()
{
- rst->write(0); // reset the LCD
- rst->write(1);
+ _rst->write(0); // reset the LCD
+ _rst->write(1);
}
// function to initialise SPI peripheral
void N5110::initSPI()
{
- spi->format(8,1); // 8 bits, Mode 1 - polarity 0, phase 1 - base value of clock is 0, data captured on falling edge/propagated on rising edge
- spi->frequency(4000000); // maximum of screen is 4 MHz
+ _spi->format(8,1); // 8 bits, Mode 1 - polarity 0, phase 1 - base value of clock is 0, data captured on falling edge/propagated on rising edge
+ _spi->frequency(4000000); // maximum of screen is 4 MHz
}
// send a command to the display
void N5110::sendCommand(unsigned char command)
{
- dc->write(0); // set DC low for command
- sce->write(0); // set CE low to begin frame
- spi->write(command); // send command
- dc->write(1); // turn back to data by default
- sce->write(1); // set CE high to end frame (expected for transmission of single byte)
-
+ _dc->write(0); // set DC low for command
+ _sce->write(0); // set CE low to begin frame
+ _spi->write(command); // send command
+ _dc->write(1); // turn back to data by default
+ _sce->write(1); // set CE high to end frame (expected for transmission of single byte)
}
// send data to the display at the current XY address
@@ -140,26 +150,26 @@
// be the default mode.
void N5110::sendData(unsigned char data)
{
- sce->write(0); // set CE low to begin frame
- spi->write(data);
- sce->write(1); // set CE high to end frame (expected for transmission of single byte)
+ _sce->write(0); // set CE low to begin frame
+ _spi->write(data);
+ _sce->write(1); // set CE high to end frame (expected for transmission of single byte)
}
// this function writes 0 to the 504 bytes to clear the RAM
void N5110::clearRAM()
{
- sce->write(0); //set CE low to begin frame
+ _sce->write(0); //set CE low to begin frame
for(int i = 0; i < WIDTH * HEIGHT; i++) { // 48 x 84 bits = 504 bytes
- spi->write(0x00); // send 0's
+ _spi->write(0x00); // send 0's
}
- sce->write(1); // set CE high to end frame
-
+ _sce->write(1); // set CE high to end frame
}
// function to set the XY address in RAM for subsequenct data write
-void N5110::setXYAddress(int x, int y)
+void N5110::setXYAddress(unsigned int const x,
+ unsigned int const y)
{
- if (x>=0 && x<WIDTH && y>=0 && y<HEIGHT) { // check within range
+ if (x<WIDTH && y<HEIGHT) { // check within range
sendCommand(0x80 | x); // send addresses to display with relevant mask
sendCommand(0x40 | y);
}
@@ -168,25 +178,28 @@
// These functions are used to set, clear and get the value of pixels in the display
// Pixels are addressed in the range of 0 to 47 (y) and 0 to 83 (x). The refresh()
// function must be called after set and clear in order to update the display
-void N5110::setPixel(int x, int y)
+void N5110::setPixel(unsigned int const x,
+ unsigned int const y)
{
- if (x>=0 && x<WIDTH && y>=0 && y<HEIGHT) { // check within range
+ if (x<WIDTH && y<HEIGHT) { // check within range
// calculate bank and shift 1 to required position in the data byte
buffer[x][y/8] |= (1 << y%8);
}
}
-void N5110::clearPixel(int x, int y)
+void N5110::clearPixel(unsigned int const x,
+ unsigned int const y)
{
- if (x>=0 && x<WIDTH && y>=0 && y<HEIGHT) { // check within range
+ if (x<WIDTH && y<HEIGHT) { // check within range
// calculate bank and shift 1 to required position (using bit clear)
buffer[x][y/8] &= ~(1 << y%8);
}
}
-int N5110::getPixel(int x, int y)
+int N5110::getPixel(unsigned int const x,
+ unsigned int const y) const
{
- if (x>=0 && x<WIDTH && y>=0 && y<HEIGHT) { // check within range
+ if (x<WIDTH && y<HEIGHT) { // check within range
// return relevant bank and mask required bit
int pixel = (int) buffer[x][y/8] & (1 << y%8);
@@ -208,14 +221,14 @@
// address auto increments after printing string, so buffer[0][0] will not coincide
// with top-left pixel after priting string
- sce->write(0); //set CE low to begin frame
+ _sce->write(0); //set CE low to begin frame
for(int j = 0; j < BANKS; j++) { // be careful to use correct order (j,i) for horizontal addressing
for(int i = 0; i < WIDTH; i++) {
- spi->write(buffer[i][j]); // send buffer
+ _spi->write(buffer[i][j]); // send buffer
}
}
- sce->write(1); // set CE high to end frame
+ _sce->write(1); // set CE high to end frame
}
@@ -233,9 +246,11 @@
}
// function to print 5x7 font
-void N5110::printChar(char c,int x,int y)
+void N5110::printChar(char const c,
+ unsigned int const x,
+ unsigned int const y)
{
- if (y>=0 && y<BANKS) { // check if printing in range of y banks
+ if (y<BANKS) { // check if printing in range of y banks
for (int i = 0; i < 5 ; i++ ) {
int pixel_x = x+i;
@@ -244,14 +259,16 @@
buffer[pixel_x][y] = font5x7[(c - 32)*5 + i];
// array is offset by 32 relative to ASCII, each character is 5 pixels wide
}
-
+
}
}
// function to print string at specified position
-void N5110::printString(const char * str,int x,int y)
+void N5110::printString(const char *str,
+ unsigned int const x,
+ unsigned int const y)
{
- if (y>=0 && y<BANKS) { // check if printing in range of y banks
+ if (y<BANKS) { // check if printing in range of y banks
int n = 0 ; // counter for number of characters in string
// loop through string and print character
@@ -278,7 +295,7 @@
}
// function to plot array on display
-void N5110::plotArray(float array[])
+void N5110::plotArray(float const array[])
{
for (int i=0; i<WIDTH; i++) { // loop through array
// elements are normalised from 0.0 to 1.0, so multiply
@@ -290,7 +307,10 @@
}
// function to draw circle
-void N5110:: drawCircle(int x0,int y0,int radius,int fill)
+void N5110:: drawCircle(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const radius,
+ unsigned int const fill)
{
// from http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
int x = radius;
@@ -330,7 +350,11 @@
}
-void N5110::drawLine(int x0,int y0,int x1,int y1,int type)
+void N5110::drawLine(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const x1,
+ unsigned int const y1,
+ unsigned int const type)
{
int y_range = y1-y0; // calc range of y and x
int x_range = x1-x0;
@@ -378,7 +402,11 @@
}
-void N5110::drawRect(int x0,int y0,int width,int height,int fill)
+void N5110::drawRect(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const width,
+ unsigned int const height,
+ unsigned int const fill)
{
if (fill == 0) { // transparent, just outline
drawLine(x0,y0,x0+(width-1),y0,1); // top
@@ -391,4 +419,4 @@
drawLine(x0,y,x0+(width-1),y,type); // draw line across screen
}
}
-}
+}
\ No newline at end of file
--- a/N5110.h Wed Feb 08 19:50:56 2017 +0000
+++ b/N5110.h Wed Mar 01 14:41:31 2017 +0000
@@ -93,33 +93,33 @@
// 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); // set random pixel in buffer
lcd.refresh();
- wait(1.0);
-
+ wait(1.0);
+
int pixel_to_test = lcd.getPixel(2,2);
-
+
printf("2,2 Pixel value = %i\n",pixel_to_test);
-
+
if ( pixel_to_test ) {
- lcd.printString("2,2 is set",0,4);
+ lcd.printString("2,2 is set",0,4);
}
-
+
// this one shouldn't be set
pixel_to_test = lcd.getPixel(3,3);
-
+
printf("3,3 Pixel value = %i\n",pixel_to_test);
-
+
if ( pixel_to_test == 0 ) {
- lcd.printString("3,3 is clear",0,5);
+ 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
@@ -135,7 +135,7 @@
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%
@@ -147,8 +147,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,1); // x,y,radius,black fill
@@ -156,7 +156,7 @@
lcd.drawCircle(WIDTH/2,HEIGHT/2,30,0); // 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
@@ -173,291 +173,319 @@
*/
class N5110
{
+private:
+// objects
+ SPI *_spi;
+ PwmOut *_led;
+ DigitalOut *_pwr;
+ 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
-*
-* @param pwr Pin connected to Vcc on the LCD display (pin 1)
-* @param sce Pin connected to chip enable (pin 3)
-* @param rst Pin connected to reset (pin 4)
-* @param dc Pin connected to data/command select (pin 5)
-* @param mosi Pin connected to data input (MOSI) (pin 6)
-* @param sclk Pin connected to serial clock (SCLK) (pin 7)
-* @param led Pin connected to LED backlight (must be PWM) (pin 8)
-*
-*/
-N5110(PinName pwrPin, PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin);
+ /** Create a N5110 object connected to the specified pins
+ *
+ * @param pwr Pin connected to Vcc on the LCD display (pin 1)
+ * @param sce Pin connected to chip enable (pin 3)
+ * @param rst Pin connected to reset (pin 4)
+ * @param dc Pin connected to data/command select (pin 5)
+ * @param mosi Pin connected to data input (MOSI) (pin 6)
+ * @param sclk Pin connected to serial clock (SCLK) (pin 7)
+ * @param led Pin connected to LED backlight (must be PWM) (pin 8)
+ *
+ */
+ N5110(PinName const pwrPin,
+ PinName const scePin,
+ PinName const rstPin,
+ PinName const dcPin,
+ 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)
-* @param rst Pin connected to reset (pin 4)
-* @param dc Pin connected to data/command select (pin 5)
-* @param mosi Pin connected to data input (MOSI) (pin 6)
-* @param sclk Pin connected to serial clock (SCLK) (pin 7)
-* @param led Pin connected to LED backlight (must be PWM) (pin 8)
-*
-*/
-N5110(PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin);
+ /** Create a N5110 object connected to the specified pins (Vcc to +3V3)
+ *
+ * @param sce Pin connected to chip enable (pin 3)
+ * @param rst Pin connected to reset (pin 4)
+ * @param dc Pin connected to data/command select (pin 5)
+ * @param mosi Pin connected to data input (MOSI) (pin 6)
+ * @param sclk Pin connected to serial clock (SCLK) (pin 7)
+ * @param led Pin connected to LED backlight (must be PWM) (pin 8)
+ *
+ */
+ N5110(PinName const scePin,
+ PinName const rstPin,
+ PinName const dcPin,
+ PinName const mosiPin,
+ PinName const sclkPin,
+ PinName const ledPin);
-/** 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();
+ /** 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();
-/** Clear
-*
-* Clears the screen buffer.
-*/
-void clear();
+ /** Turn off
+ *
+ * Powers down the display and turns of the backlight.
+ * Needs to be reinitialised before being re-used.
+ */
+ void turnOff();
-/** Turn on normal video mode (default)
-* Black on white
-*/
-void normalMode();
+ /** Clear
+ *
+ * Clears the screen buffer.
+ */
+ void clear();
-/** Turn on inverse video mode (default)
-* White on black
-*/
-void inverseMode();
+ /** Turn on normal video mode (default)
+ * 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 brightness);
+ /** 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.
-* @param x - the column number (0 to 83)
-* @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
-*/
-void printString(const char * str,int x,int y);
+ /** Print String
+ *
+ * Prints a string of characters to the screen buffer. String is cut-off after the 83rd pixel.
+ * @param x - the column number (0 to 83)
+ * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
+ */
+ 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.
-* @param c - the character to print. Can print ASCII as so printChar('C').
-* @param x - the column number (0 to 83)
-* @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
-*/
-void printChar(char c,int x,int y);
+ /** Print Character
+ *
+ * Sends a character to the screen buffer. Printed at the specified location. Character is cut-off after the 83rd pixel.
+ * @param c - the character to print. Can print ASCII as so printChar('C').
+ * @param x - the column number (0 to 83)
+ * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
+ */
+ void printChar(char const c,
+ unsigned int const x,
+ unsigned int const y);
-/** Set a Pixel
-*
-* This function sets a pixel in the screen buffer.
-* @param x - the x co-ordinate of the pixel (0 to 83)
-* @param y - the y co-ordinate of the pixel (0 to 47)
-*/
-void setPixel(int x, int y);
+ /** Set a Pixel
+ *
+ * This function sets a pixel in the screen buffer.
+ * @param x - the x co-ordinate of the pixel (0 to 83)
+ * @param y - the y co-ordinate of the pixel (0 to 47)
+ */
+ void setPixel(unsigned int const x,
+ unsigned int const y);
-/** Clear a Pixel
-*
-* This function clears pixel in the screen buffer
-* @param x - the x co-ordinate of the pixel (0 to 83)
-* @param y - the y co-ordinate of the pixel (0 to 47)
-*/
-void clearPixel(int x, int y);
+ /** Clear a Pixel
+ *
+ * This function clears pixel in the screen buffer
+ * @param x - the x co-ordinate of the pixel (0 to 83)
+ * @param y - the y co-ordinate of the pixel (0 to 47)
+ */
+ void clearPixel(unsigned int const x,
+ unsigned int const y);
-/** Get a Pixel
-*
-* This function gets the status of a pixel in the screen buffer.
-* @param x - the x co-ordinate of the pixel (0 to 83)
-* @param y - the y co-ordinate of the pixel (0 to 47)
-* @returns
-* 0 - pixel is clear
-* 1 - pixel is set
-*/
-int getPixel(int x, int y);
+ /** Get a Pixel
+ *
+ * This function gets the status of a pixel in the screen buffer.
+ * @param x - the x co-ordinate of the pixel (0 to 83)
+ * @param y - the y co-ordinate of the pixel (0 to 47)
+ * @returns
+ * 0 - pixel is clear
+ * 1 - pixel is set
+ */
+ int getPixel(unsigned int const x,
+ unsigned int const y) const;
-/** Refresh display
-*
-* This functions sends the screen buffer to the display.
-*/
-void refresh();
+ /** 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.
+ * A call to refresh() must be made to update the display to reflect the change in pixels.
+ * The seed is not set and so the generated pattern will probably be the same each time.
+ * TODO: Randomise the seed - maybe using the noise on the AnalogIn pins.
+ */
+ void randomiseBuffer();
-/** Randomise buffer
-*
-* This function fills the buffer with random data. Can be used to test the display.
-* A call to refresh() must be made to update the display to reflect the change in pixels.
-* The seed is not set and so the generated pattern will probably be the same each time.
-* 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[]);
-/** 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 array[]);
+ /** Draw Circle
+ *
+ * This function draws a circle at the specified origin with specified radius in the screen buffer
+ * Uses the midpoint circle algorithm.
+ * @see http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
+ * @param x0 - x-coordinate of centre
+ * @param y0 - y-coordinate of centre
+ * @param radius - radius of circle in pixels
+ * @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
+ */
+ void drawCircle(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const radius,
+ unsigned int const fill);
-/** Draw Circle
-*
-* This function draws a circle at the specified origin with specified radius in the screen buffer
-* Uses the midpoint circle algorithm.
-* @see http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
-* @param x0 - x-coordinate of centre
-* @param y0 - y-coordinate of centre
-* @param radius - radius of circle in pixels
-* @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
-*/
-void drawCircle(int x0,int y0,int radius,int fill);
+ /** Draw Line
+ *
+ * This function draws a line between the specified points using linear interpolation.
+ * @param x0 - x-coordinate of first point
+ * @param y0 - y-coordinate of first point
+ * @param x1 - x-coordinate of last point
+ * @param y1 - y-coordinate of last point
+ * @param type - 0 white,1 black,2 dotted
+ */
+ void drawLine(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const x1,
+ unsigned int const y1,
+ unsigned int const type);
-/** Draw Line
-*
-* This function draws a line between the specified points using linear interpolation.
-* @param x0 - x-coordinate of first point
-* @param y0 - y-coordinate of first point
-* @param x1 - x-coordinate of last point
-* @param y1 - y-coordinate of last point
-* @param type - 0 white,1 black,2 dotted
-*/
-void drawLine(int x0,int y0,int x1,int y1,int type);
-
-/** Draw Rectangle
-*
-* This function draws a rectangle.
-* @param x0 - x-coordinate of origin (top-left)
-* @param y0 - y-coordinate of origin (top-left)
-* @param width - width of rectangle
-* @param height - height of rectangle
-* @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
-*/
-void drawRect(int x0,int y0,int width,int height,int fill);
+ /** Draw Rectangle
+ *
+ * This function draws a rectangle.
+ * @param x0 - x-coordinate of origin (top-left)
+ * @param y0 - y-coordinate of origin (top-left)
+ * @param width - width of rectangle
+ * @param height - height of rectangle
+ * @param fill - 0 transparent (w/outline), 1 filled black, 2 filled white (wo/outline)
+ */
+ void drawRect(unsigned int const x0,
+ unsigned int const y0,
+ unsigned int const width,
+ unsigned int const height,
+ unsigned int const fill);
private:
-
-// objects
-SPI* spi;
-PwmOut* led;
-DigitalOut* pwr;
-DigitalOut* sce;
-DigitalOut* rst;
-DigitalOut* dc;
-
// methods
-void setXYAddress(int x, int y);
-void initSPI();
-void turnOn();
-void reset();
-void clearRAM();
-void sendCommand(unsigned char command);
-void sendData(unsigned char data);
-
-// variables
-unsigned char buffer[84][6]; // screen buffer - the 6 is for the banks - each one is 8 bits;
-
+ void setXYAddress(unsigned int const x,
+ unsigned int const y);
+ void initSPI();
+ void turnOn();
+ void reset();
+ void clearRAM();
+ void sendCommand(unsigned char command);
+ void sendData(unsigned char data);
};
const unsigned char font5x7[480] = {
-0x00, 0x00, 0x00, 0x00, 0x00,// (space)
-0x00, 0x00, 0x5F, 0x00, 0x00,// !
-0x00, 0x07, 0x00, 0x07, 0x00,// "
-0x14, 0x7F, 0x14, 0x7F, 0x14,// #
-0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
-0x23, 0x13, 0x08, 0x64, 0x62,// %
-0x36, 0x49, 0x55, 0x22, 0x50,// &
-0x00, 0x05, 0x03, 0x00, 0x00,// '
-0x00, 0x1C, 0x22, 0x41, 0x00,// (
-0x00, 0x41, 0x22, 0x1C, 0x00,// )
-0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
-0x08, 0x08, 0x3E, 0x08, 0x08,// +
-0x00, 0x50, 0x30, 0x00, 0x00,// ,
-0x08, 0x08, 0x08, 0x08, 0x08,// -
-0x00, 0x60, 0x60, 0x00, 0x00,// .
-0x20, 0x10, 0x08, 0x04, 0x02,// /
-0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
-0x00, 0x42, 0x7F, 0x40, 0x00,// 1
-0x42, 0x61, 0x51, 0x49, 0x46,// 2
-0x21, 0x41, 0x45, 0x4B, 0x31,// 3
-0x18, 0x14, 0x12, 0x7F, 0x10,// 4
-0x27, 0x45, 0x45, 0x45, 0x39,// 5
-0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
-0x01, 0x71, 0x09, 0x05, 0x03,// 7
-0x36, 0x49, 0x49, 0x49, 0x36,// 8
-0x06, 0x49, 0x49, 0x29, 0x1E,// 9
-0x00, 0x36, 0x36, 0x00, 0x00,// :
-0x00, 0x56, 0x36, 0x00, 0x00,// ;
-0x00, 0x08, 0x14, 0x22, 0x41,// <
-0x14, 0x14, 0x14, 0x14, 0x14,// =
-0x41, 0x22, 0x14, 0x08, 0x00,// >
-0x02, 0x01, 0x51, 0x09, 0x06,// ?
-0x32, 0x49, 0x79, 0x41, 0x3E,// @
-0x7E, 0x11, 0x11, 0x11, 0x7E,// A
-0x7F, 0x49, 0x49, 0x49, 0x36,// B
-0x3E, 0x41, 0x41, 0x41, 0x22,// C
-0x7F, 0x41, 0x41, 0x22, 0x1C,// D
-0x7F, 0x49, 0x49, 0x49, 0x41,// E
-0x7F, 0x09, 0x09, 0x01, 0x01,// F
-0x3E, 0x41, 0x41, 0x51, 0x32,// G
-0x7F, 0x08, 0x08, 0x08, 0x7F,// H
-0x00, 0x41, 0x7F, 0x41, 0x00,// I
-0x20, 0x40, 0x41, 0x3F, 0x01,// J
-0x7F, 0x08, 0x14, 0x22, 0x41,// K
-0x7F, 0x40, 0x40, 0x40, 0x40,// L
-0x7F, 0x02, 0x04, 0x02, 0x7F,// M
-0x7F, 0x04, 0x08, 0x10, 0x7F,// N
-0x3E, 0x41, 0x41, 0x41, 0x3E,// O
-0x7F, 0x09, 0x09, 0x09, 0x06,// P
-0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
-0x7F, 0x09, 0x19, 0x29, 0x46,// R
-0x46, 0x49, 0x49, 0x49, 0x31,// S
-0x01, 0x01, 0x7F, 0x01, 0x01,// T
-0x3F, 0x40, 0x40, 0x40, 0x3F,// U
-0x1F, 0x20, 0x40, 0x20, 0x1F,// V
-0x7F, 0x20, 0x18, 0x20, 0x7F,// W
-0x63, 0x14, 0x08, 0x14, 0x63,// X
-0x03, 0x04, 0x78, 0x04, 0x03,// Y
-0x61, 0x51, 0x49, 0x45, 0x43,// Z
-0x00, 0x00, 0x7F, 0x41, 0x41,// [
-0x02, 0x04, 0x08, 0x10, 0x20,// "\"
-0x41, 0x41, 0x7F, 0x00, 0x00,// ]
-0x04, 0x02, 0x01, 0x02, 0x04,// ^
-0x40, 0x40, 0x40, 0x40, 0x40,// _
-0x00, 0x01, 0x02, 0x04, 0x00,// `
-0x20, 0x54, 0x54, 0x54, 0x78,// a
-0x7F, 0x48, 0x44, 0x44, 0x38,// b
-0x38, 0x44, 0x44, 0x44, 0x20,// c
-0x38, 0x44, 0x44, 0x48, 0x7F,// d
-0x38, 0x54, 0x54, 0x54, 0x18,// e
-0x08, 0x7E, 0x09, 0x01, 0x02,// f
-0x08, 0x14, 0x54, 0x54, 0x3C,// g
-0x7F, 0x08, 0x04, 0x04, 0x78,// h
-0x00, 0x44, 0x7D, 0x40, 0x00,// i
-0x20, 0x40, 0x44, 0x3D, 0x00,// j
-0x00, 0x7F, 0x10, 0x28, 0x44,// k
-0x00, 0x41, 0x7F, 0x40, 0x00,// l
-0x7C, 0x04, 0x18, 0x04, 0x78,// m
-0x7C, 0x08, 0x04, 0x04, 0x78,// n
-0x38, 0x44, 0x44, 0x44, 0x38,// o
-0x7C, 0x14, 0x14, 0x14, 0x08,// p
-0x08, 0x14, 0x14, 0x18, 0x7C,// q
-0x7C, 0x08, 0x04, 0x04, 0x08,// r
-0x48, 0x54, 0x54, 0x54, 0x20,// s
-0x04, 0x3F, 0x44, 0x40, 0x20,// t
-0x3C, 0x40, 0x40, 0x20, 0x7C,// u
-0x1C, 0x20, 0x40, 0x20, 0x1C,// v
-0x3C, 0x40, 0x30, 0x40, 0x3C,// w
-0x44, 0x28, 0x10, 0x28, 0x44,// x
-0x0C, 0x50, 0x50, 0x50, 0x3C,// y
-0x44, 0x64, 0x54, 0x4C, 0x44,// z
-0x00, 0x08, 0x36, 0x41, 0x00,// {
-0x00, 0x00, 0x7F, 0x00, 0x00,// |
-0x00, 0x41, 0x36, 0x08, 0x00,// }
-0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
-0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
+ 0x00, 0x00, 0x00, 0x00, 0x00,// (space)
+ 0x00, 0x00, 0x5F, 0x00, 0x00,// !
+ 0x00, 0x07, 0x00, 0x07, 0x00,// "
+ 0x14, 0x7F, 0x14, 0x7F, 0x14,// #
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
+ 0x23, 0x13, 0x08, 0x64, 0x62,// %
+ 0x36, 0x49, 0x55, 0x22, 0x50,// &
+ 0x00, 0x05, 0x03, 0x00, 0x00,// '
+ 0x00, 0x1C, 0x22, 0x41, 0x00,// (
+ 0x00, 0x41, 0x22, 0x1C, 0x00,// )
+ 0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
+ 0x08, 0x08, 0x3E, 0x08, 0x08,// +
+ 0x00, 0x50, 0x30, 0x00, 0x00,// ,
+ 0x08, 0x08, 0x08, 0x08, 0x08,// -
+ 0x00, 0x60, 0x60, 0x00, 0x00,// .
+ 0x20, 0x10, 0x08, 0x04, 0x02,// /
+ 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
+ 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
+ 0x42, 0x61, 0x51, 0x49, 0x46,// 2
+ 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
+ 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
+ 0x27, 0x45, 0x45, 0x45, 0x39,// 5
+ 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
+ 0x01, 0x71, 0x09, 0x05, 0x03,// 7
+ 0x36, 0x49, 0x49, 0x49, 0x36,// 8
+ 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
+ 0x00, 0x36, 0x36, 0x00, 0x00,// :
+ 0x00, 0x56, 0x36, 0x00, 0x00,// ;
+ 0x00, 0x08, 0x14, 0x22, 0x41,// <
+ 0x14, 0x14, 0x14, 0x14, 0x14,// =
+ 0x41, 0x22, 0x14, 0x08, 0x00,// >
+ 0x02, 0x01, 0x51, 0x09, 0x06,// ?
+ 0x32, 0x49, 0x79, 0x41, 0x3E,// @
+ 0x7E, 0x11, 0x11, 0x11, 0x7E,// A
+ 0x7F, 0x49, 0x49, 0x49, 0x36,// B
+ 0x3E, 0x41, 0x41, 0x41, 0x22,// C
+ 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
+ 0x7F, 0x49, 0x49, 0x49, 0x41,// E
+ 0x7F, 0x09, 0x09, 0x01, 0x01,// F
+ 0x3E, 0x41, 0x41, 0x51, 0x32,// G
+ 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
+ 0x00, 0x41, 0x7F, 0x41, 0x00,// I
+ 0x20, 0x40, 0x41, 0x3F, 0x01,// J
+ 0x7F, 0x08, 0x14, 0x22, 0x41,// K
+ 0x7F, 0x40, 0x40, 0x40, 0x40,// L
+ 0x7F, 0x02, 0x04, 0x02, 0x7F,// M
+ 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
+ 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
+ 0x7F, 0x09, 0x09, 0x09, 0x06,// P
+ 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
+ 0x7F, 0x09, 0x19, 0x29, 0x46,// R
+ 0x46, 0x49, 0x49, 0x49, 0x31,// S
+ 0x01, 0x01, 0x7F, 0x01, 0x01,// T
+ 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
+ 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
+ 0x7F, 0x20, 0x18, 0x20, 0x7F,// W
+ 0x63, 0x14, 0x08, 0x14, 0x63,// X
+ 0x03, 0x04, 0x78, 0x04, 0x03,// Y
+ 0x61, 0x51, 0x49, 0x45, 0x43,// Z
+ 0x00, 0x00, 0x7F, 0x41, 0x41,// [
+ 0x02, 0x04, 0x08, 0x10, 0x20,// "\"
+ 0x41, 0x41, 0x7F, 0x00, 0x00,// ]
+ 0x04, 0x02, 0x01, 0x02, 0x04,// ^
+ 0x40, 0x40, 0x40, 0x40, 0x40,// _
+ 0x00, 0x01, 0x02, 0x04, 0x00,// `
+ 0x20, 0x54, 0x54, 0x54, 0x78,// a
+ 0x7F, 0x48, 0x44, 0x44, 0x38,// b
+ 0x38, 0x44, 0x44, 0x44, 0x20,// c
+ 0x38, 0x44, 0x44, 0x48, 0x7F,// d
+ 0x38, 0x54, 0x54, 0x54, 0x18,// e
+ 0x08, 0x7E, 0x09, 0x01, 0x02,// f
+ 0x08, 0x14, 0x54, 0x54, 0x3C,// g
+ 0x7F, 0x08, 0x04, 0x04, 0x78,// h
+ 0x00, 0x44, 0x7D, 0x40, 0x00,// i
+ 0x20, 0x40, 0x44, 0x3D, 0x00,// j
+ 0x00, 0x7F, 0x10, 0x28, 0x44,// k
+ 0x00, 0x41, 0x7F, 0x40, 0x00,// l
+ 0x7C, 0x04, 0x18, 0x04, 0x78,// m
+ 0x7C, 0x08, 0x04, 0x04, 0x78,// n
+ 0x38, 0x44, 0x44, 0x44, 0x38,// o
+ 0x7C, 0x14, 0x14, 0x14, 0x08,// p
+ 0x08, 0x14, 0x14, 0x18, 0x7C,// q
+ 0x7C, 0x08, 0x04, 0x04, 0x08,// r
+ 0x48, 0x54, 0x54, 0x54, 0x20,// s
+ 0x04, 0x3F, 0x44, 0x40, 0x20,// t
+ 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
+ 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
+ 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
+ 0x44, 0x28, 0x10, 0x28, 0x44,// x
+ 0x0C, 0x50, 0x50, 0x50, 0x3C,// y
+ 0x44, 0x64, 0x54, 0x4C, 0x44,// z
+ 0x00, 0x08, 0x36, 0x41, 0x00,// {
+ 0x00, 0x00, 0x7F, 0x00, 0x00,// |
+ 0x00, 0x41, 0x36, 0x08, 0x00,// }
+ 0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
+ 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
};
-#endif
+#endif
\ No newline at end of file
