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.
screen/EALCD.h@5:236b346643e8, 2010-04-27 (annotated)
- 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?
| User | Revision | Line number | New 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 |