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@4:f8f7f4f9c58d, 2010-04-26 (annotated)
- 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?
| 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 | 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 |