Richard Parker / EALCD
Committer:
richardparker
Date:
Wed Mar 31 22:22:21 2010 +0000
Revision:
3:24fbf4dbd7e5
Parent:
2:2b860e764545
Child:
4:f8f7f4f9c58d

        

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 1:f04bcaea1d60 41 void noop();
richardparker 1:f04bcaea1d60 42
richardparker 0:839ecbf5cb2a 43 void clearScreen();
richardparker 0:839ecbf5cb2a 44 void drawPoint(short x, short y);
richardparker 0:839ecbf5cb2a 45 void drawLine(short x0, short y0, short x0, short y0);
richardparker 0:839ecbf5cb2a 46 void drawFilledRect(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 47 void drawRect(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 48 void drawEllipse(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 49 void drawFilledEllipse(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 50 void drawImage(unsigned short x, unsigned short y, EAImage& img);
richardparker 0:839ecbf5cb2a 51 void drawText(unsigned short x, unsigned short y, char* text);
richardparker 0:839ecbf5cb2a 52
richardparker 0:839ecbf5cb2a 53 inline unsigned short width() const { return 320; }
richardparker 0:839ecbf5cb2a 54 inline unsigned short height() const { return 240; }
richardparker 0:839ecbf5cb2a 55
richardparker 0:839ecbf5cb2a 56 inline void setPen(const EAPen& pen) { _pen = pen; }
richardparker 0:839ecbf5cb2a 57 inline const EAPen& pen() { return _pen; }
richardparker 0:839ecbf5cb2a 58
richardparker 0:839ecbf5cb2a 59 inline void setBrush(const EABrush& brush) { _brush = brush; }
richardparker 0:839ecbf5cb2a 60 inline const EABrush& brush() { return _brush; }
richardparker 0:839ecbf5cb2a 61
richardparker 0:839ecbf5cb2a 62 inline void setFont(const EAFont& font) { _font = font; }
richardparker 0:839ecbf5cb2a 63 inline const EAFont& font() { return _font; }
richardparker 1:f04bcaea1d60 64
richardparker 3:24fbf4dbd7e5 65 inline float version() const { return 0.4; }
richardparker 0:839ecbf5cb2a 66
richardparker 0:839ecbf5cb2a 67 protected:
richardparker 0:839ecbf5cb2a 68 void _getTouch(unsigned short& x, unsigned short& y, unsigned short& z1, unsigned short& z2);
richardparker 0:839ecbf5cb2a 69
richardparker 0:839ecbf5cb2a 70 private:
richardparker 0:839ecbf5cb2a 71 /**
richardparker 0:839ecbf5cb2a 72 * PWM control for the backlight.
richardparker 0:839ecbf5cb2a 73 */
richardparker 0:839ecbf5cb2a 74 PwmOut _backlight;
richardparker 0:839ecbf5cb2a 75
richardparker 0:839ecbf5cb2a 76 /**
richardparker 0:839ecbf5cb2a 77 * 4 wire spi interface for spi comms.
richardparker 0:839ecbf5cb2a 78 */
richardparker 0:839ecbf5cb2a 79 SPI _comm;
richardparker 0:839ecbf5cb2a 80 DigitalOut _rs;
richardparker 0:839ecbf5cb2a 81 DigitalOut _cs;
richardparker 0:839ecbf5cb2a 82
richardparker 0:839ecbf5cb2a 83 /**
richardparker 0:839ecbf5cb2a 84 * Chip select for the touch screen.
richardparker 0:839ecbf5cb2a 85 */
richardparker 0:839ecbf5cb2a 86 DigitalOut _tch_cs;
richardparker 0:839ecbf5cb2a 87
richardparker 0:839ecbf5cb2a 88 /**
richardparker 0:839ecbf5cb2a 89 * Graphic helper to store the current pen.
richardparker 0:839ecbf5cb2a 90 */
richardparker 0:839ecbf5cb2a 91 EAPen _pen;
richardparker 0:839ecbf5cb2a 92
richardparker 0:839ecbf5cb2a 93 /**
richardparker 0:839ecbf5cb2a 94 * Graphic helper to store the current brush.
richardparker 0:839ecbf5cb2a 95 */
richardparker 0:839ecbf5cb2a 96 EABrush _brush;
richardparker 0:839ecbf5cb2a 97
richardparker 0:839ecbf5cb2a 98 /**
richardparker 0:839ecbf5cb2a 99 * Graphic helper to store the current font.
richardparker 0:839ecbf5cb2a 100 */
richardparker 0:839ecbf5cb2a 101 EAFont _font;
richardparker 0:839ecbf5cb2a 102
richardparker 0:839ecbf5cb2a 103 void _swap(short& i, short& j);
richardparker 0:839ecbf5cb2a 104
richardparker 0:839ecbf5cb2a 105 void _writeToDisplay(unsigned short data);
richardparker 0:839ecbf5cb2a 106 void _writeToRegister(unsigned short addr, unsigned short data);
richardparker 0:839ecbf5cb2a 107
richardparker 0:839ecbf5cb2a 108 void _initialise();
richardparker 0:839ecbf5cb2a 109
richardparker 0:839ecbf5cb2a 110 void _moveTo(short x, short y);
richardparker 0:839ecbf5cb2a 111 void _window(short x, short y, unsigned short w, unsigned short h);
richardparker 0:839ecbf5cb2a 112
richardparker 0:839ecbf5cb2a 113 void _drawPoint(short x, short y, unsigned short c);
richardparker 0:839ecbf5cb2a 114 void _drawLine(short x0, short y0, short x0, short y0, unsigned short c);
richardparker 0:839ecbf5cb2a 115 void _drawEllipse(short cX, short cY, unsigned short w, unsigned short h, bool filled);
richardparker 0:839ecbf5cb2a 116 void _draw4EllipsePoints(short cX, short cY, short x, short y, bool filled);
richardparker 0:839ecbf5cb2a 117
richardparker 0:839ecbf5cb2a 118 };
richardparker 0:839ecbf5cb2a 119
richardparker 0:839ecbf5cb2a 120 #endif