Aitendo OLED device driver library.

Dependents:   AitendoOLED_TestProgram

Committer:
shintamainjp
Date:
Sun Dec 19 06:20:01 2010 +0000
Revision:
0:5062b7730235
Child:
2:74c60a959299
Initial version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:5062b7730235 1 /**
shintamainjp 0:5062b7730235 2 * =============================================================================
shintamainjp 0:5062b7730235 3 * Aitendo OLED device driver library. (Version 0.0.1)
shintamainjp 0:5062b7730235 4 *
shintamainjp 0:5062b7730235 5 * [The product]
shintamainjp 0:5062b7730235 6 * OLED-2P-095BWNN-SPI : http://www.aitendo.co.jp/product/2099
shintamainjp 0:5062b7730235 7 * ALO-095BWNN-J9 : http://www.aitendo.co.jp/product/1449
shintamainjp 0:5062b7730235 8 *
shintamainjp 0:5062b7730235 9 * [References]
shintamainjp 0:5062b7730235 10 * http://serdisplib.sourceforge.net/ser/doc/Treiber_IC-SSD1332_OLED_96x64_COLOR.pdf
shintamainjp 0:5062b7730235 11 * =============================================================================
shintamainjp 0:5062b7730235 12 * Copyright (c) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:5062b7730235 13 *
shintamainjp 0:5062b7730235 14 * Permission is hereby granted, free of charge, to any person obtaining a copy
shintamainjp 0:5062b7730235 15 * of this software and associated documentation files (the "Software"), to deal
shintamainjp 0:5062b7730235 16 * in the Software without restriction, including without limitation the rights
shintamainjp 0:5062b7730235 17 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
shintamainjp 0:5062b7730235 18 * copies of the Software, and to permit persons to whom the Software is
shintamainjp 0:5062b7730235 19 * furnished to do so, subject to the following conditions:
shintamainjp 0:5062b7730235 20 *
shintamainjp 0:5062b7730235 21 * The above copyright notice and this permission notice shall be included in
shintamainjp 0:5062b7730235 22 * all copies or substantial portions of the Software.
shintamainjp 0:5062b7730235 23 *
shintamainjp 0:5062b7730235 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
shintamainjp 0:5062b7730235 25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
shintamainjp 0:5062b7730235 26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
shintamainjp 0:5062b7730235 27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
shintamainjp 0:5062b7730235 28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
shintamainjp 0:5062b7730235 29 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
shintamainjp 0:5062b7730235 30 * THE SOFTWARE.
shintamainjp 0:5062b7730235 31 * =============================================================================
shintamainjp 0:5062b7730235 32 */
shintamainjp 0:5062b7730235 33 #ifndef AITENDO_OLED_H
shintamainjp 0:5062b7730235 34 #define AITENDO_OLED_H
shintamainjp 0:5062b7730235 35
shintamainjp 0:5062b7730235 36 #include "mbed.h"
shintamainjp 0:5062b7730235 37
shintamainjp 0:5062b7730235 38 /**
shintamainjp 0:5062b7730235 39 * OLED.
shintamainjp 0:5062b7730235 40 */
shintamainjp 0:5062b7730235 41 class AitendoOLED {
shintamainjp 0:5062b7730235 42 public:
shintamainjp 0:5062b7730235 43 /**
shintamainjp 0:5062b7730235 44 * Create.
shintamainjp 0:5062b7730235 45 *
shintamainjp 0:5062b7730235 46 * @param pin_mosi MOSI.
shintamainjp 0:5062b7730235 47 * @param pin miso MISO.
shintamainjp 0:5062b7730235 48 * @param pin_sclk SCLK.
shintamainjp 0:5062b7730235 49 * @param pin_res RES.
shintamainjp 0:5062b7730235 50 * @param pin_cs CS.
shintamainjp 0:5062b7730235 51 * @param pin_dc DC.
shintamainjp 0:5062b7730235 52 */
shintamainjp 0:5062b7730235 53 AitendoOLED(
shintamainjp 0:5062b7730235 54 PinName pin_mosi,
shintamainjp 0:5062b7730235 55 PinName pin_miso,
shintamainjp 0:5062b7730235 56 PinName pin_sclk,
shintamainjp 0:5062b7730235 57 PinName pin_res,
shintamainjp 0:5062b7730235 58 PinName pin_cs,
shintamainjp 0:5062b7730235 59 PinName pin_dc);
shintamainjp 0:5062b7730235 60
shintamainjp 0:5062b7730235 61 /**
shintamainjp 0:5062b7730235 62 * Dispose.
shintamainjp 0:5062b7730235 63 */
shintamainjp 0:5062b7730235 64 ~AitendoOLED();
shintamainjp 0:5062b7730235 65
shintamainjp 0:5062b7730235 66 typedef struct color {
shintamainjp 0:5062b7730235 67 uint8_t r;
shintamainjp 0:5062b7730235 68 uint8_t g;
shintamainjp 0:5062b7730235 69 uint8_t b;
shintamainjp 0:5062b7730235 70 } Color;
shintamainjp 0:5062b7730235 71
shintamainjp 0:5062b7730235 72 /**
shintamainjp 0:5062b7730235 73 * Draw pixel.
shintamainjp 0:5062b7730235 74 *
shintamainjp 0:5062b7730235 75 * @param x X.
shintamainjp 0:5062b7730235 76 * @param y Y.
shintamainjp 0:5062b7730235 77 * @param c Color.
shintamainjp 0:5062b7730235 78 */
shintamainjp 0:5062b7730235 79 void drawPixel(int x, int y, Color c);
shintamainjp 0:5062b7730235 80
shintamainjp 0:5062b7730235 81 /**
shintamainjp 0:5062b7730235 82 * Draw line.
shintamainjp 0:5062b7730235 83 *
shintamainjp 0:5062b7730235 84 * @param x1 X1.
shintamainjp 0:5062b7730235 85 * @param y1 Y1.
shintamainjp 0:5062b7730235 86 * @param x2 X2.
shintamainjp 0:5062b7730235 87 * @param y2 Y2.
shintamainjp 0:5062b7730235 88 * @param c Color.
shintamainjp 0:5062b7730235 89 */
shintamainjp 0:5062b7730235 90 void drawLine(int x1, int y1, int x2, int y2, Color c);
shintamainjp 0:5062b7730235 91
shintamainjp 0:5062b7730235 92 /**
shintamainjp 0:5062b7730235 93 * Fill box.
shintamainjp 0:5062b7730235 94 *
shintamainjp 0:5062b7730235 95 * @param x1 X1.
shintamainjp 0:5062b7730235 96 * @param y1 Y1.
shintamainjp 0:5062b7730235 97 * @param x2 X2.
shintamainjp 0:5062b7730235 98 * @param y2 Y2.
shintamainjp 0:5062b7730235 99 * @param c1 Color1.
shintamainjp 0:5062b7730235 100 * @param c2 Color2.
shintamainjp 0:5062b7730235 101 */
shintamainjp 0:5062b7730235 102 void fillBox(int x1, int y1, int x2, int y2, Color c1, Color c2);
shintamainjp 0:5062b7730235 103
shintamainjp 0:5062b7730235 104 /**
shintamainjp 0:5062b7730235 105 * Copy.
shintamainjp 0:5062b7730235 106 *
shintamainjp 0:5062b7730235 107 * @param x1 X1.
shintamainjp 0:5062b7730235 108 * @param y1 Y1.
shintamainjp 0:5062b7730235 109 * @param x2 X2.
shintamainjp 0:5062b7730235 110 * @param y2 Y2.
shintamainjp 0:5062b7730235 111 * @param nx X of the destination.
shintamainjp 0:5062b7730235 112 * @param ny Y of the destination.
shintamainjp 0:5062b7730235 113 */
shintamainjp 0:5062b7730235 114 void copy(int x1, int y1, int x2, int y2, int nx, int ny);
shintamainjp 0:5062b7730235 115
shintamainjp 0:5062b7730235 116 /**
shintamainjp 0:5062b7730235 117 * Darker.
shintamainjp 0:5062b7730235 118 *
shintamainjp 0:5062b7730235 119 * @param x1 X1.
shintamainjp 0:5062b7730235 120 * @param y1 Y1.
shintamainjp 0:5062b7730235 121 * @param x2 X2.
shintamainjp 0:5062b7730235 122 * @param y2 Y2.
shintamainjp 0:5062b7730235 123 */
shintamainjp 0:5062b7730235 124 void darker(int x1, int y1, int x2, int y2);
shintamainjp 0:5062b7730235 125
shintamainjp 0:5062b7730235 126 /**
shintamainjp 0:5062b7730235 127 * Clear.
shintamainjp 0:5062b7730235 128 *
shintamainjp 0:5062b7730235 129 * @param x1 X1.
shintamainjp 0:5062b7730235 130 * @param y1 Y1.
shintamainjp 0:5062b7730235 131 * @param x2 X2.
shintamainjp 0:5062b7730235 132 * @param y2 Y2.
shintamainjp 0:5062b7730235 133 */
shintamainjp 0:5062b7730235 134 void clear(int x1, int y1, int x2, int y2);
shintamainjp 0:5062b7730235 135 private:
shintamainjp 0:5062b7730235 136 AitendoOLED();
shintamainjp 0:5062b7730235 137
shintamainjp 0:5062b7730235 138 SPI io_spi;
shintamainjp 0:5062b7730235 139 DigitalOut io_res;
shintamainjp 0:5062b7730235 140 DigitalOut io_cs;
shintamainjp 0:5062b7730235 141 DigitalOut io_dc;
shintamainjp 0:5062b7730235 142
shintamainjp 0:5062b7730235 143 /**
shintamainjp 0:5062b7730235 144 * Reset.
shintamainjp 0:5062b7730235 145 */
shintamainjp 0:5062b7730235 146 void reset();
shintamainjp 0:5062b7730235 147
shintamainjp 0:5062b7730235 148 /**
shintamainjp 0:5062b7730235 149 * Write data.
shintamainjp 0:5062b7730235 150 *
shintamainjp 0:5062b7730235 151 * @param data Data.
shintamainjp 0:5062b7730235 152 */
shintamainjp 0:5062b7730235 153 void writeData(uint8_t data);
shintamainjp 0:5062b7730235 154
shintamainjp 0:5062b7730235 155 /**
shintamainjp 0:5062b7730235 156 * Set mode.
shintamainjp 0:5062b7730235 157 *
shintamainjp 0:5062b7730235 158 * @param fillrect Fill the rectangle.
shintamainjp 0:5062b7730235 159 * @param revcopy Reverse copy.
shintamainjp 0:5062b7730235 160 */
shintamainjp 0:5062b7730235 161 void setMode(bool fillrect, bool revcopy);
shintamainjp 0:5062b7730235 162
shintamainjp 0:5062b7730235 163 /**
shintamainjp 0:5062b7730235 164 * Set column address.
shintamainjp 0:5062b7730235 165 *
shintamainjp 0:5062b7730235 166 * @param start Start address. (0-95)
shintamainjp 0:5062b7730235 167 * @param end End address. (0-95)
shintamainjp 0:5062b7730235 168 */
shintamainjp 0:5062b7730235 169 void setColumnAddress(int start, int end);
shintamainjp 0:5062b7730235 170
shintamainjp 0:5062b7730235 171 /**
shintamainjp 0:5062b7730235 172 * Set row address.
shintamainjp 0:5062b7730235 173 *
shintamainjp 0:5062b7730235 174 * @param start Start address. (0-63)
shintamainjp 0:5062b7730235 175 * @param end End address. (0-63)
shintamainjp 0:5062b7730235 176 */
shintamainjp 0:5062b7730235 177 void setRowAddress(int start, int end);
shintamainjp 0:5062b7730235 178
shintamainjp 0:5062b7730235 179 /**
shintamainjp 0:5062b7730235 180 * Set contrast for Color A.
shintamainjp 0:5062b7730235 181 *
shintamainjp 0:5062b7730235 182 * @param contrast Contrast. (Default:0x80)
shintamainjp 0:5062b7730235 183 */
shintamainjp 0:5062b7730235 184 void setContrastForColorA(int contrast);
shintamainjp 0:5062b7730235 185
shintamainjp 0:5062b7730235 186 /**
shintamainjp 0:5062b7730235 187 * Set contrast for Color B.
shintamainjp 0:5062b7730235 188 *
shintamainjp 0:5062b7730235 189 * @param contrast Contrast. (Default:0x80)
shintamainjp 0:5062b7730235 190 */
shintamainjp 0:5062b7730235 191 void setContrastForColorB(int contrast);
shintamainjp 0:5062b7730235 192
shintamainjp 0:5062b7730235 193 /**
shintamainjp 0:5062b7730235 194 * Set contrast for Color C.
shintamainjp 0:5062b7730235 195 *
shintamainjp 0:5062b7730235 196 * @param contrast Contrast. (Default:0x80)
shintamainjp 0:5062b7730235 197 */
shintamainjp 0:5062b7730235 198 void setContrastForColorC(int contrast);
shintamainjp 0:5062b7730235 199
shintamainjp 0:5062b7730235 200 /**
shintamainjp 0:5062b7730235 201 * Set master current control value.
shintamainjp 0:5062b7730235 202 *
shintamainjp 0:5062b7730235 203 * @param current Current value. (0x00-0x0F)
shintamainjp 0:5062b7730235 204 */
shintamainjp 0:5062b7730235 205 void setMasterCurrentControl(int current);
shintamainjp 0:5062b7730235 206
shintamainjp 0:5062b7730235 207 /**
shintamainjp 0:5062b7730235 208 * Set remapping mode and the data format.
shintamainjp 0:5062b7730235 209 *
shintamainjp 0:5062b7730235 210 * @param mode See the document.
shintamainjp 0:5062b7730235 211 */
shintamainjp 0:5062b7730235 212 void setRemapAndDataFormat(int mode);
shintamainjp 0:5062b7730235 213
shintamainjp 0:5062b7730235 214 /**
shintamainjp 0:5062b7730235 215 * Set display start line.
shintamainjp 0:5062b7730235 216 *
shintamainjp 0:5062b7730235 217 * @param line Start line number. (0-63)
shintamainjp 0:5062b7730235 218 */
shintamainjp 0:5062b7730235 219 void setDisplayStartLine(int line);
shintamainjp 0:5062b7730235 220
shintamainjp 0:5062b7730235 221 /**
shintamainjp 0:5062b7730235 222 * Set display offset line.
shintamainjp 0:5062b7730235 223 *
shintamainjp 0:5062b7730235 224 * @param offset Offset line number. (0-63)
shintamainjp 0:5062b7730235 225 */
shintamainjp 0:5062b7730235 226 void setDisplayOffset(int offset);
shintamainjp 0:5062b7730235 227
shintamainjp 0:5062b7730235 228 typedef enum {
shintamainjp 0:5062b7730235 229 NormalDisplay,
shintamainjp 0:5062b7730235 230 EntireDisplayOn,
shintamainjp 0:5062b7730235 231 EntireDisplayOff,
shintamainjp 0:5062b7730235 232 InverseDisplay
shintamainjp 0:5062b7730235 233 } DisplayMode;
shintamainjp 0:5062b7730235 234
shintamainjp 0:5062b7730235 235 /**
shintamainjp 0:5062b7730235 236 * Set display mode.
shintamainjp 0:5062b7730235 237 *
shintamainjp 0:5062b7730235 238 * @param mode Display mode.
shintamainjp 0:5062b7730235 239 */
shintamainjp 0:5062b7730235 240 void setDisplayMode(DisplayMode mode);
shintamainjp 0:5062b7730235 241
shintamainjp 0:5062b7730235 242 /**
shintamainjp 0:5062b7730235 243 * Set multiplex ratio.
shintamainjp 0:5062b7730235 244 *
shintamainjp 0:5062b7730235 245 * @param ratio Ratio.
shintamainjp 0:5062b7730235 246 */
shintamainjp 0:5062b7730235 247 void setMultiplexRatio(int ratio);
shintamainjp 0:5062b7730235 248
shintamainjp 0:5062b7730235 249 /**
shintamainjp 0:5062b7730235 250 * Set display on/off.
shintamainjp 0:5062b7730235 251 *
shintamainjp 0:5062b7730235 252 * @param on On.
shintamainjp 0:5062b7730235 253 */
shintamainjp 0:5062b7730235 254 void setDisplayOnOff(bool on);
shintamainjp 0:5062b7730235 255
shintamainjp 0:5062b7730235 256 typedef struct gray_scale_table {
shintamainjp 0:5062b7730235 257 char data[32];
shintamainjp 0:5062b7730235 258 } gray_scale_table_t;
shintamainjp 0:5062b7730235 259
shintamainjp 0:5062b7730235 260 /**
shintamainjp 0:5062b7730235 261 * Set gray scale table.
shintamainjp 0:5062b7730235 262 *
shintamainjp 0:5062b7730235 263 * @param p A pointer to the look up table.
shintamainjp 0:5062b7730235 264 */
shintamainjp 0:5062b7730235 265 void setGrayScaleTable(gray_scale_table_t *p);
shintamainjp 0:5062b7730235 266
shintamainjp 0:5062b7730235 267 /**
shintamainjp 0:5062b7730235 268 * NOP.
shintamainjp 0:5062b7730235 269 */
shintamainjp 0:5062b7730235 270 void nop();
shintamainjp 0:5062b7730235 271
shintamainjp 0:5062b7730235 272 /**
shintamainjp 0:5062b7730235 273 * Set power saving mode.
shintamainjp 0:5062b7730235 274 *
shintamainjp 0:5062b7730235 275 * @param value Value. (0x00:None, 0x12:power saving)
shintamainjp 0:5062b7730235 276 */
shintamainjp 0:5062b7730235 277 void setPowerSavingMode(int value);
shintamainjp 0:5062b7730235 278
shintamainjp 0:5062b7730235 279 /**
shintamainjp 0:5062b7730235 280 * Set phase period.
shintamainjp 0:5062b7730235 281 *
shintamainjp 0:5062b7730235 282 * @param value Value. (Default:0x74)
shintamainjp 0:5062b7730235 283 */
shintamainjp 0:5062b7730235 284 void setPhasePeriod(int value);
shintamainjp 0:5062b7730235 285
shintamainjp 0:5062b7730235 286 /**
shintamainjp 0:5062b7730235 287 * Set display clock divide ratio.
shintamainjp 0:5062b7730235 288 *
shintamainjp 0:5062b7730235 289 * @param value Value. (Default:0x00)
shintamainjp 0:5062b7730235 290 */
shintamainjp 0:5062b7730235 291 void setDisplayClockDivideRatio(int value);
shintamainjp 0:5062b7730235 292
shintamainjp 0:5062b7730235 293 /**
shintamainjp 0:5062b7730235 294 * Set second pre-charge speed for color A.
shintamainjp 0:5062b7730235 295 *
shintamainjp 0:5062b7730235 296 * @param value Value.
shintamainjp 0:5062b7730235 297 */
shintamainjp 0:5062b7730235 298 void setSecondPreChargeSpeedForColorA(int value);
shintamainjp 0:5062b7730235 299
shintamainjp 0:5062b7730235 300 /**
shintamainjp 0:5062b7730235 301 * Set second pre-charge speed for color B.
shintamainjp 0:5062b7730235 302 *
shintamainjp 0:5062b7730235 303 * @param value Value.
shintamainjp 0:5062b7730235 304 */
shintamainjp 0:5062b7730235 305 void setSecondPreChargeSpeedForColorB(int value);
shintamainjp 0:5062b7730235 306
shintamainjp 0:5062b7730235 307 /**
shintamainjp 0:5062b7730235 308 * Set second pre-charge speed for color C.
shintamainjp 0:5062b7730235 309 *
shintamainjp 0:5062b7730235 310 * @param value Value.
shintamainjp 0:5062b7730235 311 */
shintamainjp 0:5062b7730235 312 void setSecondPreChargeSpeedForColorC(int value);
shintamainjp 0:5062b7730235 313
shintamainjp 0:5062b7730235 314 /**
shintamainjp 0:5062b7730235 315 * Set pre charge level for color A.
shintamainjp 0:5062b7730235 316 *
shintamainjp 0:5062b7730235 317 * @param value The value.
shintamainjp 0:5062b7730235 318 */
shintamainjp 0:5062b7730235 319 void setPreChargeLevelForColorA(int value);
shintamainjp 0:5062b7730235 320
shintamainjp 0:5062b7730235 321 /**
shintamainjp 0:5062b7730235 322 * Set pre charge level for color B.
shintamainjp 0:5062b7730235 323 *
shintamainjp 0:5062b7730235 324 * @param value The value.
shintamainjp 0:5062b7730235 325 */
shintamainjp 0:5062b7730235 326 void setPreChargeLevelForColorB(int value);
shintamainjp 0:5062b7730235 327
shintamainjp 0:5062b7730235 328 /**
shintamainjp 0:5062b7730235 329 * Set pre charge level for color C.
shintamainjp 0:5062b7730235 330 *
shintamainjp 0:5062b7730235 331 * @param value The value.
shintamainjp 0:5062b7730235 332 */
shintamainjp 0:5062b7730235 333 void setPreChargeLevelForColorC(int value);
shintamainjp 0:5062b7730235 334
shintamainjp 0:5062b7730235 335 /**
shintamainjp 0:5062b7730235 336 * Set VCOMH.
shintamainjp 0:5062b7730235 337 *
shintamainjp 0:5062b7730235 338 * @param value VCOMH value. (0x00:0.43 * Vref, 0x3F:0x83 * Vref)
shintamainjp 0:5062b7730235 339 */
shintamainjp 0:5062b7730235 340 void setVCOMH(int value);
shintamainjp 0:5062b7730235 341
shintamainjp 0:5062b7730235 342 /**
shintamainjp 0:5062b7730235 343 * Read the status register.
shintamainjp 0:5062b7730235 344 *
shintamainjp 0:5062b7730235 345 * @return the value.
shintamainjp 0:5062b7730235 346 */
shintamainjp 0:5062b7730235 347 uint8_t readStatusRegister();
shintamainjp 0:5062b7730235 348 };
shintamainjp 0:5062b7730235 349
shintamainjp 0:5062b7730235 350 #endif