SG12864A

Dependents:   SG12864A_TestProgram

Committer:
shintamainjp
Date:
Tue Jul 20 07:23:15 2010 +0000
Revision:
3:86e7fba29623
Parent:
2:91c03e41c927
Child:
4:200d1ea4e76e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:238f2d048222 1 /**
shintamainjp 0:238f2d048222 2 * SG12864A Graphics LCD module driver class (Version 0.0.1)
shintamainjp 0:238f2d048222 3 *
shintamainjp 0:238f2d048222 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:238f2d048222 5 * http://shinta.main.jp/
shintamainjp 0:238f2d048222 6 */
shintamainjp 0:238f2d048222 7
shintamainjp 0:238f2d048222 8 #ifndef _SG12864A_H_
shintamainjp 0:238f2d048222 9 #define _SG12864A_H_
shintamainjp 0:238f2d048222 10
shintamainjp 0:238f2d048222 11 #include "mbed.h"
shintamainjp 0:238f2d048222 12
shintamainjp 1:aacd73a4e7ee 13 /**
shintamainjp 1:aacd73a4e7ee 14 */
shintamainjp 0:238f2d048222 15 class SG12864A {
shintamainjp 0:238f2d048222 16 public:
shintamainjp 0:238f2d048222 17 SG12864A(
shintamainjp 0:238f2d048222 18 PinName di,
shintamainjp 0:238f2d048222 19 PinName rw,
shintamainjp 0:238f2d048222 20 PinName en,
shintamainjp 0:238f2d048222 21 PinName db0,
shintamainjp 0:238f2d048222 22 PinName db1,
shintamainjp 0:238f2d048222 23 PinName db2,
shintamainjp 0:238f2d048222 24 PinName db3,
shintamainjp 0:238f2d048222 25 PinName db4,
shintamainjp 0:238f2d048222 26 PinName db5,
shintamainjp 0:238f2d048222 27 PinName db6,
shintamainjp 0:238f2d048222 28 PinName db7,
shintamainjp 0:238f2d048222 29 PinName cs1,
shintamainjp 0:238f2d048222 30 PinName cs2,
shintamainjp 0:238f2d048222 31 PinName res);
shintamainjp 0:238f2d048222 32 ~SG12864A();
shintamainjp 0:238f2d048222 33 enum Target {
shintamainjp 0:238f2d048222 34 CS1,
shintamainjp 0:238f2d048222 35 CS2
shintamainjp 0:238f2d048222 36 };
shintamainjp 3:86e7fba29623 37
shintamainjp 3:86e7fba29623 38 /*
shintamainjp 3:86e7fba29623 39 * High Level Interfaces. (Abstracted)
shintamainjp 3:86e7fba29623 40 */
shintamainjp 1:aacd73a4e7ee 41 void bufferPush(void);
shintamainjp 1:aacd73a4e7ee 42 void bufferPull(void);
shintamainjp 3:86e7fba29623 43 void bufferClear(bool reverse = false);
shintamainjp 3:86e7fba29623 44 void bufferDrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false);
shintamainjp 3:86e7fba29623 45 void bufferDrawBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false);
shintamainjp 3:86e7fba29623 46 void bufferFillBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false);
shintamainjp 3:86e7fba29623 47 void bufferDrawString(uint8_t x, uint8_t y, char * str, bool reverse = false);
shintamainjp 3:86e7fba29623 48 void bufferDrawChar(uint8_t x, uint8_t y, char c, bool reverse = false);
shintamainjp 3:86e7fba29623 49 void bufferDrawCheckbox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool state, bool reverse = false);
shintamainjp 3:86e7fba29623 50 void bufferDrawProgressbar(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, int min, int max, int value, bool horizontal = true, bool reverse = false);
shintamainjp 1:aacd73a4e7ee 51
shintamainjp 3:86e7fba29623 52 /*
shintamainjp 3:86e7fba29623 53 * High Level Interfaces.
shintamainjp 3:86e7fba29623 54 */
shintamainjp 0:238f2d048222 55 void reset(void);
shintamainjp 0:238f2d048222 56 void clear(void);
shintamainjp 2:91c03e41c927 57
shintamainjp 3:86e7fba29623 58 /*
shintamainjp 3:86e7fba29623 59 * Middle Level Interfaces.
shintamainjp 3:86e7fba29623 60 */
shintamainjp 0:238f2d048222 61 void setDisplayOnOff(Target t, bool on);
shintamainjp 0:238f2d048222 62 void setDisplayStartLine(Target t, uint8_t displayStartLine);
shintamainjp 0:238f2d048222 63 void setPageAddress(Target t, uint8_t addr);
shintamainjp 0:238f2d048222 64 void setColumnAddress(Target t, uint8_t addr);
shintamainjp 0:238f2d048222 65 void readStatus(Target t, uint8_t *c);
shintamainjp 0:238f2d048222 66 void writeData(Target t, uint8_t c);
shintamainjp 0:238f2d048222 67 void readData(Target t, uint8_t *c);
shintamainjp 1:aacd73a4e7ee 68 static const int PIXEL_X = 128;
shintamainjp 1:aacd73a4e7ee 69 static const int PIXEL_Y = 64;
shintamainjp 2:91c03e41c927 70 static const uint8_t FONT_X = 5;
shintamainjp 2:91c03e41c927 71 static const uint8_t FONT_Y = 7;
shintamainjp 0:238f2d048222 72 private:
shintamainjp 0:238f2d048222 73 static const int PAGES = 8;
shintamainjp 0:238f2d048222 74 static const int COLUMNS = 64;
shintamainjp 2:91c03e41c927 75 static const uint16_t FONT_MIN_CODE = 0x20;
shintamainjp 2:91c03e41c927 76 static const uint16_t FONT_MAX_CODE = 0x7F;
shintamainjp 2:91c03e41c927 77 static const uint8_t font5x7_data[];
shintamainjp 1:aacd73a4e7ee 78 uint8_t buffer[PAGES * COLUMNS * 2];
shintamainjp 0:238f2d048222 79 DigitalOut ioDI;
shintamainjp 0:238f2d048222 80 DigitalOut ioRW;
shintamainjp 0:238f2d048222 81 DigitalOut ioEN;
shintamainjp 0:238f2d048222 82 BusInOut ioDB;
shintamainjp 0:238f2d048222 83 DigitalOut ioCS1;
shintamainjp 0:238f2d048222 84 DigitalOut ioCS2;
shintamainjp 0:238f2d048222 85 DigitalOut ioRES;
shintamainjp 0:238f2d048222 86 enum Mode {
shintamainjp 0:238f2d048222 87 Data,
shintamainjp 0:238f2d048222 88 Instruction
shintamainjp 0:238f2d048222 89 };
shintamainjp 3:86e7fba29623 90
shintamainjp 3:86e7fba29623 91 /*
shintamainjp 3:86e7fba29623 92 * Low Level Interfaces.
shintamainjp 3:86e7fba29623 93 */
shintamainjp 0:238f2d048222 94 void setDirectionToRead();
shintamainjp 0:238f2d048222 95 void setDirectionToWrite();
shintamainjp 0:238f2d048222 96 void write(Target t, Mode m, uint8_t c);
shintamainjp 0:238f2d048222 97 void read(Target t, Mode m, uint8_t *c);
shintamainjp 0:238f2d048222 98 void reset(bool b);
shintamainjp 0:238f2d048222 99 };
shintamainjp 0:238f2d048222 100
shintamainjp 0:238f2d048222 101 #endif