Richard Parker / EALCD
Committer:
richardparker
Date:
Mon Apr 26 21:37:54 2010 +0000
Revision:
4:f8f7f4f9c58d
Parent:
3:24fbf4dbd7e5
Child:
5:236b346643e8

        

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