Dependencies:   mbed

Committer:
Sim
Date:
Wed Dec 02 14:55:59 2009 +0000
Revision:
0:f2ec16cdf989

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sim 0:f2ec16cdf989 1 // AD-12864-SPI test program
Sim 0:f2ec16cdf989 2 // About AD-12864-SPI, see http://www.aitendo.co.jp/product/1622.
Sim 0:f2ec16cdf989 3
Sim 0:f2ec16cdf989 4 // Pin allocation
Sim 0:f2ec16cdf989 5 // 1 p21 #CS1 with 10k ohm pull-up
Sim 0:f2ec16cdf989 6 // 2 p22 #RESET with 10k ohm pull-up
Sim 0:f2ec16cdf989 7 // 3 p23 A0 ... 0:command 1:data
Sim 0:f2ec16cdf989 8 // 4 p13 SCK
Sim 0:f2ec16cdf989 9 // 5 p11 MOSI
Sim 0:f2ec16cdf989 10 // 6 Vdd
Sim 0:f2ec16cdf989 11 // 7 Vss
Sim 0:f2ec16cdf989 12 // 8 NC LED_A
Sim 0:f2ec16cdf989 13
Sim 0:f2ec16cdf989 14 #include "mbed.h"
Sim 0:f2ec16cdf989 15 #include "font8.h"
Sim 0:f2ec16cdf989 16
Sim 0:f2ec16cdf989 17 DigitalOut cs(p21);
Sim 0:f2ec16cdf989 18 DigitalOut rst(p22);
Sim 0:f2ec16cdf989 19 DigitalOut a0(p23);
Sim 0:f2ec16cdf989 20 SPI spi(p11, p12, p13); // mosi, miso, sclk
Sim 0:f2ec16cdf989 21
Sim 0:f2ec16cdf989 22 void regwrite(unsigned char c){
Sim 0:f2ec16cdf989 23 cs = a0 = 0;
Sim 0:f2ec16cdf989 24 spi.write(c);
Sim 0:f2ec16cdf989 25 cs = 1;
Sim 0:f2ec16cdf989 26 }
Sim 0:f2ec16cdf989 27
Sim 0:f2ec16cdf989 28 void datawrite(unsigned char c){
Sim 0:f2ec16cdf989 29 cs = 0;
Sim 0:f2ec16cdf989 30 a0 = 1;
Sim 0:f2ec16cdf989 31 spi.write(c);
Sim 0:f2ec16cdf989 32 cs = 1;
Sim 0:f2ec16cdf989 33 }
Sim 0:f2ec16cdf989 34
Sim 0:f2ec16cdf989 35 // set position (x, 8*y)
Sim 0:f2ec16cdf989 36 void locate(int x, int y){
Sim 0:f2ec16cdf989 37 regwrite(0xb0 | (y & 0x0f)); // Page Address Set (see 2.4.3)
Sim 0:f2ec16cdf989 38 regwrite(0x10 | (x >> 4 & 0x0f)); // Column Address Set (see 2.4.4)
Sim 0:f2ec16cdf989 39 regwrite(x & 0x0f);
Sim 0:f2ec16cdf989 40 }
Sim 0:f2ec16cdf989 41
Sim 0:f2ec16cdf989 42 void cls(void){
Sim 0:f2ec16cdf989 43 int x, y;
Sim 0:f2ec16cdf989 44 for(y = 0; y < 8; y++){
Sim 0:f2ec16cdf989 45 locate(0, y);
Sim 0:f2ec16cdf989 46 for(x = 0; x < 128; x++) datawrite(0x00);
Sim 0:f2ec16cdf989 47 }
Sim 0:f2ec16cdf989 48 }
Sim 0:f2ec16cdf989 49
Sim 0:f2ec16cdf989 50 void plot(int x, int y){
Sim 0:f2ec16cdf989 51 locate(x, y >> 3);
Sim 0:f2ec16cdf989 52 datawrite(1 << (y & 7));
Sim 0:f2ec16cdf989 53 }
Sim 0:f2ec16cdf989 54
Sim 0:f2ec16cdf989 55 void init(){
Sim 0:f2ec16cdf989 56 spi.format(8,0); // nazo
Sim 0:f2ec16cdf989 57 spi.frequency(10000000); // modify later
Sim 0:f2ec16cdf989 58
Sim 0:f2ec16cdf989 59 // reset
Sim 0:f2ec16cdf989 60 wait_ms(200);
Sim 0:f2ec16cdf989 61 rst = 0;
Sim 0:f2ec16cdf989 62 wait_ms(200);
Sim 0:f2ec16cdf989 63 rst = 1;
Sim 0:f2ec16cdf989 64
Sim 0:f2ec16cdf989 65 // initialize sequence
Sim 0:f2ec16cdf989 66 regwrite(0xaf); // display on (see 2.4.1)
Sim 0:f2ec16cdf989 67 regwrite(0x2f); // power control set (see 2.4.16)
Sim 0:f2ec16cdf989 68 regwrite(0x81); // set electronic volume mode (see 2.4.18)
Sim 0:f2ec16cdf989 69 // regwrite(0x1f); // electronic volume data 00-3f
Sim 0:f2ec16cdf989 70 regwrite(0x00); // electronic volume data 00-3f
Sim 0:f2ec16cdf989 71 regwrite(0x27); // V5 Volatge Regulator Internal Resister Ratio Set (see 2.4.17)
Sim 0:f2ec16cdf989 72 regwrite(0xa2); // LCD Bias Set ... 1/9 bias (see 2.4.11)
Sim 0:f2ec16cdf989 73 regwrite(0xc8); // Common Output Mode Select ... Reverse (see 2.4.15)
Sim 0:f2ec16cdf989 74 regwrite(0xa0); // ADC Select ... Normal (see 2.4.8)
Sim 0:f2ec16cdf989 75 regwrite(0xa4); // Display All Points ON/OFF ... normal (see 2.4.10)
Sim 0:f2ec16cdf989 76 regwrite(0xa6); // Display Normal/Reverse ... normal (see 2.4.9)
Sim 0:f2ec16cdf989 77 regwrite(0xac); // Static Indicator ... off (see 2.4.19)
Sim 0:f2ec16cdf989 78 regwrite(0x00); // off
Sim 0:f2ec16cdf989 79 regwrite(0x40); // Display Strat Line Set ... 0 (see 2.4.2)
Sim 0:f2ec16cdf989 80 regwrite(0xe0); // Write Mode Set
Sim 0:f2ec16cdf989 81 }
Sim 0:f2ec16cdf989 82
Sim 0:f2ec16cdf989 83 void drawchar(unsigned char c){
Sim 0:f2ec16cdf989 84 const unsigned char *p = &font8[c << 3];
Sim 0:f2ec16cdf989 85 datawrite(p[0]);
Sim 0:f2ec16cdf989 86 datawrite(p[1]);
Sim 0:f2ec16cdf989 87 datawrite(p[2]);
Sim 0:f2ec16cdf989 88 datawrite(p[3]);
Sim 0:f2ec16cdf989 89 datawrite(p[4]);
Sim 0:f2ec16cdf989 90 datawrite(p[5]);
Sim 0:f2ec16cdf989 91 datawrite(p[6]);
Sim 0:f2ec16cdf989 92 datawrite(p[7]);
Sim 0:f2ec16cdf989 93 }
Sim 0:f2ec16cdf989 94
Sim 0:f2ec16cdf989 95 void drawtext(const char *s){
Sim 0:f2ec16cdf989 96 unsigned char c;
Sim 0:f2ec16cdf989 97 while((c = *s++) != '\0') drawchar(c);
Sim 0:f2ec16cdf989 98 }
Sim 0:f2ec16cdf989 99
Sim 0:f2ec16cdf989 100 int main() {
Sim 0:f2ec16cdf989 101 int x, y, c;
Sim 0:f2ec16cdf989 102 char buf[16];
Sim 0:f2ec16cdf989 103
Sim 0:f2ec16cdf989 104 init();
Sim 0:f2ec16cdf989 105 cls();
Sim 0:f2ec16cdf989 106
Sim 0:f2ec16cdf989 107 locate(0, 0);
Sim 0:f2ec16cdf989 108 sprintf(buf, "%08x", 0xdeadbeef);
Sim 0:f2ec16cdf989 109 drawtext(buf);
Sim 0:f2ec16cdf989 110 wait_ms(2000);
Sim 0:f2ec16cdf989 111
Sim 0:f2ec16cdf989 112 c = 0;
Sim 0:f2ec16cdf989 113 while(1) {
Sim 0:f2ec16cdf989 114 for(y = 0; y < 8; y++){
Sim 0:f2ec16cdf989 115 locate(0, y);
Sim 0:f2ec16cdf989 116 for(x = 0; x < 16; x++) drawchar(c++);
Sim 0:f2ec16cdf989 117 }
Sim 0:f2ec16cdf989 118 wait_ms(800);
Sim 0:f2ec16cdf989 119 }
Sim 0:f2ec16cdf989 120 }