Richard Parker / EALCD
Committer:
richardparker
Date:
Tue Apr 27 23:13:21 2010 +0000
Revision:
5:236b346643e8
Parent:
4:f8f7f4f9c58d
Child:
6:4fe6f365cbeb

        

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