Kai Liu / Mbed 2 deprecated LPC1114_EBadge

Dependencies:   mbed _24LCXXX

Committer:
allankliu
Date:
Sun Jun 01 00:47:23 2014 +0000
Revision:
0:33994cfad0c2
Child:
2:bb9f154ea2f4
Initial version, reuse code from lpc1114uart, ssd1306, previous code spd2706 and others.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
allankliu 0:33994cfad0c2 1
allankliu 0:33994cfad0c2 2 #include "mbed.h"
allankliu 0:33994cfad0c2 3 #include "ssd1606.h"
allankliu 0:33994cfad0c2 4 #include "image.h"
allankliu 0:33994cfad0c2 5
allankliu 0:33994cfad0c2 6 #include <stdarg.h>
allankliu 0:33994cfad0c2 7
allankliu 0:33994cfad0c2 8 const unsigned char init_data[]={
allankliu 0:33994cfad0c2 9 0x82,0x00,0x00,0x00,0xAA,0x00,0x00,0x00,
allankliu 0:33994cfad0c2 10 0xAA,0xAA,0x00,0x00,0xAA,0xAA,0xAA,0x00,
allankliu 0:33994cfad0c2 11 0x55,0xAA,0xAA,0x00,0x55,0x55,0x55,0x55,
allankliu 0:33994cfad0c2 12 0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55,
allankliu 0:33994cfad0c2 13 0xAA,0xAA,0xAA,0xAA,0x15,0x15,0x15,0x15,
allankliu 0:33994cfad0c2 14 0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x01,
allankliu 0:33994cfad0c2 15 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
allankliu 0:33994cfad0c2 16 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
allankliu 0:33994cfad0c2 17 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
allankliu 0:33994cfad0c2 18 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
allankliu 0:33994cfad0c2 19 0x41,0x45,0xF1,0xFF,0x5F,0x55,0x01,0x00,
allankliu 0:33994cfad0c2 20 0x00,0x00,};
allankliu 0:33994cfad0c2 21
allankliu 0:33994cfad0c2 22
allankliu 0:33994cfad0c2 23 SSD1606::SSD1606(PinName cs, PinName rst, PinName dc, PinName clk, PinName busy, PinName data)
allankliu 0:33994cfad0c2 24 : _spi(data, NC, clk),
allankliu 0:33994cfad0c2 25 _cs(cs),
allankliu 0:33994cfad0c2 26 _reset(rst),
allankliu 0:33994cfad0c2 27 _dc(dc),
allankliu 0:33994cfad0c2 28 _busy(busy),
allankliu 0:33994cfad0c2 29 _cursor_x(0),
allankliu 0:33994cfad0c2 30 _cursor_y(0)
allankliu 0:33994cfad0c2 31 {
allankliu 0:33994cfad0c2 32 }
allankliu 0:33994cfad0c2 33
allankliu 0:33994cfad0c2 34 void SSD1606::reset()
allankliu 0:33994cfad0c2 35 {
allankliu 0:33994cfad0c2 36 _reset = 1;
allankliu 0:33994cfad0c2 37 wait(0.01);
allankliu 0:33994cfad0c2 38 _reset = 0;
allankliu 0:33994cfad0c2 39 wait(0.01);
allankliu 0:33994cfad0c2 40 _reset = 1;
allankliu 0:33994cfad0c2 41 wait(0.01);
allankliu 0:33994cfad0c2 42 }
allankliu 0:33994cfad0c2 43
allankliu 0:33994cfad0c2 44 void SSD1606::initialize()
allankliu 0:33994cfad0c2 45 {
allankliu 0:33994cfad0c2 46 reset();
allankliu 0:33994cfad0c2 47 _send_command(0x10);
allankliu 0:33994cfad0c2 48 _send_data(0x00);
allankliu 0:33994cfad0c2 49 #ifdef MODE3
allankliu 0:33994cfad0c2 50 _send_command(0x11);
allankliu 0:33994cfad0c2 51 _send_data(0x03);
allankliu 0:33994cfad0c2 52 _send_command(0x44);
allankliu 0:33994cfad0c2 53 _send_data(0x00);
allankliu 0:33994cfad0c2 54 _send_data(0x11);
allankliu 0:33994cfad0c2 55 _send_command(0x45);
allankliu 0:33994cfad0c2 56 _send_data(0x00);
allankliu 0:33994cfad0c2 57 _send_data(0xAB);
allankliu 0:33994cfad0c2 58 _send_command(0x4E);
allankliu 0:33994cfad0c2 59 _send_data(0x00);
allankliu 0:33994cfad0c2 60 _send_command(0x4F);
allankliu 0:33994cfad0c2 61 _send_data(0x00);
allankliu 0:33994cfad0c2 62 #endif
allankliu 0:33994cfad0c2 63 #ifdef MODE2
allankliu 0:33994cfad0c2 64 _send_command(0x11);
allankliu 0:33994cfad0c2 65 _send_data(0x02);
allankliu 0:33994cfad0c2 66 _send_command(0x44);
allankliu 0:33994cfad0c2 67 _send_data(0x11);
allankliu 0:33994cfad0c2 68 _send_data(0x00);
allankliu 0:33994cfad0c2 69 _send_command(0x45);
allankliu 0:33994cfad0c2 70 _send_data(0x00);
allankliu 0:33994cfad0c2 71 _send_data(0xAB);
allankliu 0:33994cfad0c2 72 _send_command(0x4E);
allankliu 0:33994cfad0c2 73 _send_data(0x11);
allankliu 0:33994cfad0c2 74 _send_command(0x4F);
allankliu 0:33994cfad0c2 75 _send_data(0x00);
allankliu 0:33994cfad0c2 76 #endif
allankliu 0:33994cfad0c2 77 #ifdef MODE1
allankliu 0:33994cfad0c2 78 _send_command(0x11);
allankliu 0:33994cfad0c2 79 _send_data(0x01);
allankliu 0:33994cfad0c2 80 _send_command(0x44);
allankliu 0:33994cfad0c2 81 _send_data(0x00);
allankliu 0:33994cfad0c2 82 _send_data(0x11);
allankliu 0:33994cfad0c2 83 _send_command(0x45);
allankliu 0:33994cfad0c2 84 _send_data(0xAB);
allankliu 0:33994cfad0c2 85 _send_data(0x00);
allankliu 0:33994cfad0c2 86 _send_command(0x4E);
allankliu 0:33994cfad0c2 87 _send_data(0x00);
allankliu 0:33994cfad0c2 88 _send_command(0x4F);
allankliu 0:33994cfad0c2 89 _send_data(0xAB);
allankliu 0:33994cfad0c2 90 #endif
allankliu 0:33994cfad0c2 91 #ifdef MODE0
allankliu 0:33994cfad0c2 92 _send_command(0x11);
allankliu 0:33994cfad0c2 93 _send_data(0x00);
allankliu 0:33994cfad0c2 94 _send_command(0x44);
allankliu 0:33994cfad0c2 95 _send_data(0x11);
allankliu 0:33994cfad0c2 96 _send_data(0x00);
allankliu 0:33994cfad0c2 97 _send_command(0x45);
allankliu 0:33994cfad0c2 98 _send_data(0xAB);
allankliu 0:33994cfad0c2 99 _send_data(0x00);
allankliu 0:33994cfad0c2 100 _send_command(0x4E);
allankliu 0:33994cfad0c2 101 _send_data(0x11);
allankliu 0:33994cfad0c2 102 _send_command(0x4F);
allankliu 0:33994cfad0c2 103 _send_data(0xAB);
allankliu 0:33994cfad0c2 104 #endif
allankliu 0:33994cfad0c2 105 _send_command(0xF0);
allankliu 0:33994cfad0c2 106 _send_data(0x1F);
allankliu 0:33994cfad0c2 107 _send_command(0x21);
allankliu 0:33994cfad0c2 108 _send_data(0x03);
allankliu 0:33994cfad0c2 109 _send_command(0x2C);
allankliu 0:33994cfad0c2 110 _send_data(0xA0);
allankliu 0:33994cfad0c2 111 _send_command(0x3C);
allankliu 0:33994cfad0c2 112 _send_data(0x63);
allankliu 0:33994cfad0c2 113 _send_command(0x22);
allankliu 0:33994cfad0c2 114 _send_data(0xC4);
allankliu 0:33994cfad0c2 115
allankliu 0:33994cfad0c2 116 set_lut();
allankliu 0:33994cfad0c2 117 }
allankliu 0:33994cfad0c2 118
allankliu 0:33994cfad0c2 119 unsigned char SSD1606::is_busy()
allankliu 0:33994cfad0c2 120 {
allankliu 0:33994cfad0c2 121 return(0);
allankliu 0:33994cfad0c2 122 }
allankliu 0:33994cfad0c2 123
allankliu 0:33994cfad0c2 124 void SSD1606::rom_image(const unsigned char *bitmap)
allankliu 0:33994cfad0c2 125 {
allankliu 0:33994cfad0c2 126 int i;
allankliu 0:33994cfad0c2 127 _send_command(0x24);
allankliu 0:33994cfad0c2 128
allankliu 0:33994cfad0c2 129 for (i=0; i <3096; i++)
allankliu 0:33994cfad0c2 130 _send_data(bitmap[i]);
allankliu 0:33994cfad0c2 131
allankliu 0:33994cfad0c2 132 _send_command(0x20);
allankliu 0:33994cfad0c2 133 wait(0.01);
allankliu 0:33994cfad0c2 134
allankliu 0:33994cfad0c2 135 }
allankliu 0:33994cfad0c2 136
allankliu 0:33994cfad0c2 137 void SSD1606::update()
allankliu 0:33994cfad0c2 138 {
allankliu 0:33994cfad0c2 139 for (int i=0; i<3096; i++)
allankliu 0:33994cfad0c2 140 _send_data(_screen[i]);
allankliu 0:33994cfad0c2 141 }
allankliu 0:33994cfad0c2 142
allankliu 0:33994cfad0c2 143 void SSD1606::off()
allankliu 0:33994cfad0c2 144 {
allankliu 0:33994cfad0c2 145 }
allankliu 0:33994cfad0c2 146
allankliu 0:33994cfad0c2 147 void SSD1606::sleep()
allankliu 0:33994cfad0c2 148 {
allankliu 0:33994cfad0c2 149 _send_command(0x10);
allankliu 0:33994cfad0c2 150 _send_data(0x01);
allankliu 0:33994cfad0c2 151 }
allankliu 0:33994cfad0c2 152
allankliu 0:33994cfad0c2 153 void SSD1606::set_command_between_images()
allankliu 0:33994cfad0c2 154 {
allankliu 0:33994cfad0c2 155 _send_command(0x22);
allankliu 0:33994cfad0c2 156 _send_data(0xC7);
allankliu 0:33994cfad0c2 157 _send_command(0x21);
allankliu 0:33994cfad0c2 158 _send_data(0x03);
allankliu 0:33994cfad0c2 159 }
allankliu 0:33994cfad0c2 160
allankliu 0:33994cfad0c2 161 void SSD1606::clear()
allankliu 0:33994cfad0c2 162 {
allankliu 0:33994cfad0c2 163 for (int i=0; i<3096; i++)
allankliu 0:33994cfad0c2 164 _send_data(0);
allankliu 0:33994cfad0c2 165 _cursor_x = 0;
allankliu 0:33994cfad0c2 166 _cursor_y = 0;
allankliu 0:33994cfad0c2 167 }
allankliu 0:33994cfad0c2 168
allankliu 0:33994cfad0c2 169 void SSD1606::_send_command(unsigned char code)
allankliu 0:33994cfad0c2 170 {
allankliu 0:33994cfad0c2 171 _cs = 1;
allankliu 0:33994cfad0c2 172 _dc = 0;
allankliu 0:33994cfad0c2 173 _cs = 0;
allankliu 0:33994cfad0c2 174 _spi.write(code);
allankliu 0:33994cfad0c2 175 _cs = 1;
allankliu 0:33994cfad0c2 176 }
allankliu 0:33994cfad0c2 177
allankliu 0:33994cfad0c2 178 void SSD1606::_send_data(unsigned char value)
allankliu 0:33994cfad0c2 179 {
allankliu 0:33994cfad0c2 180 _cs = 1;
allankliu 0:33994cfad0c2 181 _dc = 1;
allankliu 0:33994cfad0c2 182 _cs = 0;
allankliu 0:33994cfad0c2 183 _spi.write(value);
allankliu 0:33994cfad0c2 184 _cs = 1;
allankliu 0:33994cfad0c2 185 }
allankliu 0:33994cfad0c2 186
allankliu 0:33994cfad0c2 187 void SSD1606::set_lut(void)
allankliu 0:33994cfad0c2 188 {
allankliu 0:33994cfad0c2 189 unsigned char i;
allankliu 0:33994cfad0c2 190 _send_command(0x32);
allankliu 0:33994cfad0c2 191 for(i=0; i<90; i++)
allankliu 0:33994cfad0c2 192 {
allankliu 0:33994cfad0c2 193 _send_data(init_data[i]);
allankliu 0:33994cfad0c2 194 }
allankliu 0:33994cfad0c2 195 }