Sim mbed
/
FontTest2
main.cpp@0:279a3320c2c0, 2009-12-03 (annotated)
- Committer:
- Sim
- Date:
- Thu Dec 03 17:18:33 2009 +0000
- Revision:
- 0:279a3320c2c0
Who changed what in which revision?
User | Revision | Line number | New 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 | } |