Richard Parker / EALCD
Committer:
richardparker
Date:
Thu Feb 11 12:21:18 2010 +0000
Revision:
0:839ecbf5cb2a
Child:
1:f04bcaea1d60

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
richardparker 0:839ecbf5cb2a 1 // Copyright 2010 Richard Parker
richardparker 0:839ecbf5cb2a 2
richardparker 0:839ecbf5cb2a 3 #ifndef MBED_EALCD_H
richardparker 0:839ecbf5cb2a 4 #define MBED_EALCD_H
richardparker 0:839ecbf5cb2a 5
richardparker 0:839ecbf5cb2a 6 #include "mbed.h"
richardparker 0:839ecbf5cb2a 7
richardparker 0:839ecbf5cb2a 8 #include "../graphics/EAPen.h"
richardparker 0:839ecbf5cb2a 9 #include "../graphics/EABrush.h"
richardparker 0:839ecbf5cb2a 10 #include "../graphics/EAFont.h"
richardparker 0:839ecbf5cb2a 11 #include "../widgets/EAImage.h"
richardparker 0:839ecbf5cb2a 12
richardparker 0:839ecbf5cb2a 13 class EATouch;
richardparker 0:839ecbf5cb2a 14 class EAImage;
richardparker 0:839ecbf5cb2a 15
richardparker 0:839ecbf5cb2a 16 /**
richardparker 0:839ecbf5cb2a 17 * Class encapsulating the EA LCD.
richardparker 0:839ecbf5cb2a 18 * @author Richard Parker
richardparker 0:839ecbf5cb2a 19 */
richardparker 0:839ecbf5cb2a 20 class EALCD
richardparker 0:839ecbf5cb2a 21 {
richardparker 0:839ecbf5cb2a 22 public:
richardparker 0:839ecbf5cb2a 23 friend EATouch;
richardparker 0:839ecbf5cb2a 24 friend EAImage;
richardparker 0:839ecbf5cb2a 25
richardparker 0:839ecbf5cb2a 26 EALCD( PinName LED_PWM,
richardparker 0:839ecbf5cb2a 27 PinName LCD_RS,
richardparker 0:839ecbf5cb2a 28 PinName LCD_SO,
richardparker 0:839ecbf5cb2a 29 PinName LCD_SI,
richardparker 0:839ecbf5cb2a 30 PinName LCD_SCL,
richardparker 0:839ecbf5cb2a 31 PinName LCD_CS,
richardparker 0:839ecbf5cb2a 32 PinName TCH_CS);
richardparker 0:839ecbf5cb2a 33 ~EALCD();
richardparker 0:839ecbf5cb2a 34
richardparker 0:839ecbf5cb2a 35 /**
richardparker 0:839ecbf5cb2a 36 * Sets the brightness of the display by adjusting the backlight power.
richardparker 0:839ecbf5cb2a 37 * @param percentage A value between 0.0 - 1.0 (fully off - fully on).
richardparker 0:839ecbf5cb2a 38 */
richardparker 0:839ecbf5cb2a 39 void setBrightness(float percentage);
richardparker 0:839ecbf5cb2a 40
richardparker 0:839ecbf5cb2a 41 void clearScreen();
richardparker 0:839ecbf5cb2a 42 void drawPoint(short x, short y);
richardparker 0:839ecbf5cb2a 43 void drawLine(short x0, short y0, short x0, short y0);
richardparker 0:839ecbf5cb2a 44 void drawFilledRect(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 45 void drawRect(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 46 void drawEllipse(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 47 void drawFilledEllipse(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 48 void drawImage(unsigned short x, unsigned short y, EAImage& img);
richardparker 0:839ecbf5cb2a 49 void drawText(unsigned short x, unsigned short y, char* text);
richardparker 0:839ecbf5cb2a 50
richardparker 0:839ecbf5cb2a 51 inline unsigned short width() const { return 320; }
richardparker 0:839ecbf5cb2a 52 inline unsigned short height() const { return 240; }
richardparker 0:839ecbf5cb2a 53
richardparker 0:839ecbf5cb2a 54 inline void setPen(const EAPen& pen) { _pen = pen; }
richardparker 0:839ecbf5cb2a 55 inline const EAPen& pen() { return _pen; }
richardparker 0:839ecbf5cb2a 56
richardparker 0:839ecbf5cb2a 57 inline void setBrush(const EABrush& brush) { _brush = brush; }
richardparker 0:839ecbf5cb2a 58 inline const EABrush& brush() { return _brush; }
richardparker 0:839ecbf5cb2a 59
richardparker 0:839ecbf5cb2a 60 inline void setFont(const EAFont& font) { _font = font; }
richardparker 0:839ecbf5cb2a 61 inline const EAFont& font() { return _font; }
richardparker 0:839ecbf5cb2a 62
richardparker 0:839ecbf5cb2a 63 protected:
richardparker 0:839ecbf5cb2a 64 void _getTouch(unsigned short& x, unsigned short& y, unsigned short& z1, unsigned short& z2);
richardparker 0:839ecbf5cb2a 65
richardparker 0:839ecbf5cb2a 66 private:
richardparker 0:839ecbf5cb2a 67 /**
richardparker 0:839ecbf5cb2a 68 * PWM control for the backlight.
richardparker 0:839ecbf5cb2a 69 */
richardparker 0:839ecbf5cb2a 70 PwmOut _backlight;
richardparker 0:839ecbf5cb2a 71
richardparker 0:839ecbf5cb2a 72 /**
richardparker 0:839ecbf5cb2a 73 * 4 wire spi interface for spi comms.
richardparker 0:839ecbf5cb2a 74 */
richardparker 0:839ecbf5cb2a 75 SPI _comm;
richardparker 0:839ecbf5cb2a 76 DigitalOut _rs;
richardparker 0:839ecbf5cb2a 77 DigitalOut _cs;
richardparker 0:839ecbf5cb2a 78
richardparker 0:839ecbf5cb2a 79 /**
richardparker 0:839ecbf5cb2a 80 * Chip select for the touch screen.
richardparker 0:839ecbf5cb2a 81 */
richardparker 0:839ecbf5cb2a 82 DigitalOut _tch_cs;
richardparker 0:839ecbf5cb2a 83
richardparker 0:839ecbf5cb2a 84 /**
richardparker 0:839ecbf5cb2a 85 * Graphic helper to store the current pen.
richardparker 0:839ecbf5cb2a 86 */
richardparker 0:839ecbf5cb2a 87 EAPen _pen;
richardparker 0:839ecbf5cb2a 88
richardparker 0:839ecbf5cb2a 89 /**
richardparker 0:839ecbf5cb2a 90 * Graphic helper to store the current brush.
richardparker 0:839ecbf5cb2a 91 */
richardparker 0:839ecbf5cb2a 92 EABrush _brush;
richardparker 0:839ecbf5cb2a 93
richardparker 0:839ecbf5cb2a 94 /**
richardparker 0:839ecbf5cb2a 95 * Graphic helper to store the current font.
richardparker 0:839ecbf5cb2a 96 */
richardparker 0:839ecbf5cb2a 97 EAFont _font;
richardparker 0:839ecbf5cb2a 98
richardparker 0:839ecbf5cb2a 99 void _swap(short& i, short& j);
richardparker 0:839ecbf5cb2a 100
richardparker 0:839ecbf5cb2a 101 void _writeToDisplay(unsigned short data);
richardparker 0:839ecbf5cb2a 102 void _writeToRegister(unsigned short addr, unsigned short data);
richardparker 0:839ecbf5cb2a 103
richardparker 0:839ecbf5cb2a 104 void _initialise();
richardparker 0:839ecbf5cb2a 105
richardparker 0:839ecbf5cb2a 106 void _moveTo(short x, short y);
richardparker 0:839ecbf5cb2a 107 void _window(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 108
richardparker 0:839ecbf5cb2a 109 void _drawPoint(short x, short y, unsigned short c);
richardparker 0:839ecbf5cb2a 110 void _drawLine(short x0, short y0, short x0, short y0, unsigned short c);
richardparker 0:839ecbf5cb2a 111 void _drawEllipse(short cX, short cY, unsigned short w, unsigned short h, bool filled);
richardparker 0:839ecbf5cb2a 112 void _draw4EllipsePoints(short cX, short cY, short x, short y, bool filled);
richardparker 0:839ecbf5cb2a 113
richardparker 0:839ecbf5cb2a 114 };
richardparker 0:839ecbf5cb2a 115
richardparker 0:839ecbf5cb2a 116 #endif