Sim mbed
/
SPILCDsample
AD-12864-SPI class
spilcd.h@0:344e039b2cdb, 2009-12-04 (annotated)
- Committer:
- Sim
- Date:
- Fri Dec 04 17:50:44 2009 +0000
- Revision:
- 0:344e039b2cdb
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sim | 0:344e039b2cdb | 1 | // AD-12684-SPI control class |
Sim | 0:344e039b2cdb | 2 | // version 0.1 |
Sim | 0:344e039b2cdb | 3 | // created by Sim (http://mbed.org/users/Sim/) |
Sim | 0:344e039b2cdb | 4 | // |
Sim | 0:344e039b2cdb | 5 | // About AD-12864-SPI, see http://www.aitendo.co.jp/product/1622 . |
Sim | 0:344e039b2cdb | 6 | |
Sim | 0:344e039b2cdb | 7 | #ifndef __SPILCD_H__ |
Sim | 0:344e039b2cdb | 8 | #define __SPILCD_H__ |
Sim | 0:344e039b2cdb | 9 | |
Sim | 0:344e039b2cdb | 10 | #include "mbed.h" |
Sim | 0:344e039b2cdb | 11 | |
Sim | 0:344e039b2cdb | 12 | class SPILCD { |
Sim | 0:344e039b2cdb | 13 | private: |
Sim | 0:344e039b2cdb | 14 | DigitalOut cs, rst, a0; |
Sim | 0:344e039b2cdb | 15 | SPI spi; |
Sim | 0:344e039b2cdb | 16 | |
Sim | 0:344e039b2cdb | 17 | // boot up sequence |
Sim | 0:344e039b2cdb | 18 | void init(){ |
Sim | 0:344e039b2cdb | 19 | spi.format(8,0); // nazo |
Sim | 0:344e039b2cdb | 20 | spi.frequency(20000000); // modify later |
Sim | 0:344e039b2cdb | 21 | |
Sim | 0:344e039b2cdb | 22 | // reset |
Sim | 0:344e039b2cdb | 23 | wait_ms(200); |
Sim | 0:344e039b2cdb | 24 | rst = 0; |
Sim | 0:344e039b2cdb | 25 | wait_ms(200); |
Sim | 0:344e039b2cdb | 26 | rst = 1; |
Sim | 0:344e039b2cdb | 27 | |
Sim | 0:344e039b2cdb | 28 | // initialize sequence |
Sim | 0:344e039b2cdb | 29 | regwrite(0xaf); // display on (see 2.4.1) |
Sim | 0:344e039b2cdb | 30 | regwrite(0x2f); // power control set (see 2.4.16) |
Sim | 0:344e039b2cdb | 31 | regwrite(0x81); // set electronic volume mode (see 2.4.18) |
Sim | 0:344e039b2cdb | 32 | // regwrite(0x1f); // electronic volume data 00-3f |
Sim | 0:344e039b2cdb | 33 | regwrite(0x00); // electronic volume data 00-3f ... control your own value |
Sim | 0:344e039b2cdb | 34 | regwrite(0x27); // V5 Volatge Regulator Internal Resister Ratio Set (see 2.4.17) |
Sim | 0:344e039b2cdb | 35 | regwrite(0xa2); // LCD Bias Set ... 1/9 bias (see 2.4.11) |
Sim | 0:344e039b2cdb | 36 | regwrite(0xc8); // Common Output Mode Select ... Reverse (see 2.4.15) |
Sim | 0:344e039b2cdb | 37 | regwrite(0xa0); // ADC Select ... Normal (see 2.4.8) |
Sim | 0:344e039b2cdb | 38 | regwrite(0xa4); // Display All Points ON/OFF ... normal (see 2.4.10) |
Sim | 0:344e039b2cdb | 39 | regwrite(0xa6); // Display Normal/Reverse ... normal (see 2.4.9) |
Sim | 0:344e039b2cdb | 40 | regwrite(0xac); // Static Indicator ... off (see 2.4.19) |
Sim | 0:344e039b2cdb | 41 | regwrite(0x00); // off |
Sim | 0:344e039b2cdb | 42 | regwrite(0x40); // Display Strat Line Set ... 0 (see 2.4.2) |
Sim | 0:344e039b2cdb | 43 | regwrite(0xe0); // Write Mode Set |
Sim | 0:344e039b2cdb | 44 | } |
Sim | 0:344e039b2cdb | 45 | |
Sim | 0:344e039b2cdb | 46 | // write command |
Sim | 0:344e039b2cdb | 47 | void regwrite(unsigned char c){ |
Sim | 0:344e039b2cdb | 48 | cs = a0 = 0; |
Sim | 0:344e039b2cdb | 49 | spi.write(c); |
Sim | 0:344e039b2cdb | 50 | cs = 1; |
Sim | 0:344e039b2cdb | 51 | } |
Sim | 0:344e039b2cdb | 52 | |
Sim | 0:344e039b2cdb | 53 | public: |
Sim | 0:344e039b2cdb | 54 | |
Sim | 0:344e039b2cdb | 55 | // constructor |
Sim | 0:344e039b2cdb | 56 | SPILCD(PinName cs_pin, PinName rst_pin, PinName a0_pin, PinName mosi_pin, PinName miso_pin, PinName sclk_pin) |
Sim | 0:344e039b2cdb | 57 | : cs(cs_pin), rst(rst_pin), a0(a0_pin), spi(mosi_pin, miso_pin, sclk_pin) { |
Sim | 0:344e039b2cdb | 58 | |
Sim | 0:344e039b2cdb | 59 | init(); |
Sim | 0:344e039b2cdb | 60 | cls(); |
Sim | 0:344e039b2cdb | 61 | } |
Sim | 0:344e039b2cdb | 62 | |
Sim | 0:344e039b2cdb | 63 | // wipe all screen |
Sim | 0:344e039b2cdb | 64 | void cls(void){ |
Sim | 0:344e039b2cdb | 65 | int x, y; |
Sim | 0:344e039b2cdb | 66 | for(y = 0; y < 8; y++){ |
Sim | 0:344e039b2cdb | 67 | locate(0, y); |
Sim | 0:344e039b2cdb | 68 | for(x = 0; x < 128; x++) write(0x00); |
Sim | 0:344e039b2cdb | 69 | } |
Sim | 0:344e039b2cdb | 70 | } |
Sim | 0:344e039b2cdb | 71 | |
Sim | 0:344e039b2cdb | 72 | // move position to (x, 8 * y) |
Sim | 0:344e039b2cdb | 73 | void locate(int x, int y){ |
Sim | 0:344e039b2cdb | 74 | regwrite(0xb0 | (y & 0x0f)); // Page Address Set (see 2.4.3) |
Sim | 0:344e039b2cdb | 75 | regwrite(0x10 | (x >> 4 & 0x0f)); // Column Address Set (see 2.4.4) |
Sim | 0:344e039b2cdb | 76 | regwrite(x & 0x0f); |
Sim | 0:344e039b2cdb | 77 | } |
Sim | 0:344e039b2cdb | 78 | |
Sim | 0:344e039b2cdb | 79 | // write data |
Sim | 0:344e039b2cdb | 80 | void write(unsigned char c){ |
Sim | 0:344e039b2cdb | 81 | cs = 0; |
Sim | 0:344e039b2cdb | 82 | a0 = 1; |
Sim | 0:344e039b2cdb | 83 | spi.write(c); |
Sim | 0:344e039b2cdb | 84 | cs = 1; |
Sim | 0:344e039b2cdb | 85 | } |
Sim | 0:344e039b2cdb | 86 | |
Sim | 0:344e039b2cdb | 87 | }; |
Sim | 0:344e039b2cdb | 88 | |
Sim | 0:344e039b2cdb | 89 | #endif |