AD-12864-SPI class

Dependencies:   mbed

Committer:
Sim
Date:
Fri Dec 04 17:50:44 2009 +0000
Revision:
0:344e039b2cdb

        

Who changed what in which revision?

UserRevisionLine numberNew 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