Dependencies:   mbed

Committer:
Sim
Date:
Thu Dec 03 17:18:33 2009 +0000
Revision:
0:279a3320c2c0

        

Who changed what in which revision?

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