SG12864A
Dependents: SG12864A_TestProgram
Diff: SG12864A.h
- Revision:
- 4:200d1ea4e76e
- Parent:
- 3:86e7fba29623
- Child:
- 5:4d86043f7942
--- a/SG12864A.h Tue Jul 20 07:23:15 2010 +0000 +++ b/SG12864A.h Tue Aug 10 12:36:05 2010 +0000 @@ -3,6 +3,9 @@ * * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) * http://shinta.main.jp/ + * + * See also ... + * http://mbed.org/users/shintamainjp/notebook/sg12864asunlike-display-graphics-lcd-driver/ */ #ifndef _SG12864A_H_ @@ -11,9 +14,29 @@ #include "mbed.h" /** + * SG12864A Graphics LCD module driver class. */ class SG12864A { public: + + /** + * Create. + * + * @param di D-/I (H:Instruction, L:Data) + * @param rw R/W- (H:Read, L:Write) + * @param en Enable signal + * @param db0 Data bus line bit-0. + * @param db1 Data bus line bit-1. + * @param db2 Data bus line bit-2. + * @param db3 Data bus line bit-3. + * @param db4 Data bus line bit-4. + * @param db5 Data bus line bit-5. + * @param db6 Data bus line bit-6. + * @param db7 Data bus line bit-7. + * @param cs1 Chip select signal for IC1. + * @param cs2 Chip select signal for IC2. + * @param res Reset signal. + */ SG12864A( PinName di, PinName rw, @@ -29,42 +52,200 @@ PinName cs1, PinName cs2, PinName res); + /** + * Destroy. + */ ~SG12864A(); + + /** + * Target of a chip. + */ enum Target { CS1, CS2 }; - + /* - * High Level Interfaces. (Abstracted) + * ======================================================= + * High Level Interfaces. + * ======================================================= + */ + + /** + * Push images from a internal buffer. */ void bufferPush(void); + + /** + * Pull images to a internal buffer. + */ void bufferPull(void); + + /** + * Clear a internal buffer images. + * + * @param reverse True if images are reversed. + */ void bufferClear(bool reverse = false); + + /** + * Draw a line to a internal buffer. + * + * @param x1 Starting point at x-axis. + * @param y1 Starting point at y-axis. + * @param x2 Ending point at x-axis. + * @param y2 Ending point at y-axis. + * @param reverse True if images are reversed. + */ void bufferDrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false); + + /** + * Draw a box to a internal buffer. + * + * @param x1 Starting point at x-axis. + * @param y1 Starting point at y-axis. + * @param x2 Ending point at x-axis. + * @param y2 Ending point at y-axis. + * @param reverse True if images are reversed. + */ void bufferDrawBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false); + + /** + * Fill a box to a internal buffer. + * + * @param x1 Starting point at x-axis. + * @param y1 Starting point at y-axis. + * @param x2 Ending point at x-axis. + * @param y2 Ending point at y-axis. + * @param reverse True if images are reversed. + */ void bufferFillBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool reverse = false); + + /** + * Draw a text string to a internal buffer. + * The font size is 5x7 dots. + * + * @param x Starting point at x-axis. + * @param y Starting point at y-axis. + * @param str Text string. (NULL terminate.) + * @param reverse True if images are reversed. + */ void bufferDrawString(uint8_t x, uint8_t y, char * str, bool reverse = false); + + /** + * Draw a character to a internal buffer. + * The font size is 5x7 dots. + * + * @param x Starting point at x-axis. + * @param y Starting point at y-axis. + * @param c A character. + * @param reverse True if images are reversed. + */ void bufferDrawChar(uint8_t x, uint8_t y, char c, bool reverse = false); + + /** + * Draw a checkbox to a internal buffer. + * + * @param x1 Starting point at x-axis. + * @param y1 Starting point at y-axis. + * @param x2 Ending point at x-axis. + * @param y2 Ending point at y-axis. + * @param state True if state is checked. + * @param reverse True if images are reversed. + */ void bufferDrawCheckbox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, bool state, bool reverse = false); - 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); + + /** + * Draw a progressbar to a internal buffer. + * + * @param x1 Starting point at x-axis. + * @param y1 Starting point at y-axis. + * @param x2 Ending point at x-axis. + * @param y2 Ending point at y-axis. + * @param min Minimum value on a scale. + * @param max Maximum value on a scale. + * @param value Current value on a scale. + * @param state True if state is checked. + * @param reverse True if images are reversed. + */ + void bufferDrawProgressbar(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, int min, int max, int value, bool horizontal = false, bool reverse = false); /* * High Level Interfaces. */ + + /** + * Reset module. + */ void reset(void); + + /** + * Clear display. + */ void clear(void); /* + * ======================================================= * Middle Level Interfaces. + * ======================================================= + */ + + /** + * Set display ON/OFF. + * + * @param t Target. + * @param on True if the display is ON. */ void setDisplayOnOff(Target t, bool on); + + /** + * Set display start line. + * + * @param t Target. + * @param displayStartLine Start line number. + */ void setDisplayStartLine(Target t, uint8_t displayStartLine); + + /** + * Set page address. + * + * @param t Target. + * @param addr Address. + */ void setPageAddress(Target t, uint8_t addr); + + /** + * Set column address. + * + * @param t Target. + * @param addr Address. + */ void setColumnAddress(Target t, uint8_t addr); + + /** + * Read status. + * + * @param t Target. + * @param c Status. + */ void readStatus(Target t, uint8_t *c); + + /** + * Write data. + * + * @param t Target. + * @param c Status. + */ void writeData(Target t, uint8_t c); + + /** + * Read data. + * + * @param t Target. + * @param c Status. + */ void readData(Target t, uint8_t *c); + static const int PIXEL_X = 128; static const int PIXEL_Y = 64; static const uint8_t FONT_X = 5; @@ -83,18 +264,54 @@ DigitalOut ioCS1; DigitalOut ioCS2; DigitalOut ioRES; + + /** + * Mode of a write data. + */ enum Mode { Data, Instruction }; - + /* + * ======================================================= * Low Level Interfaces. + * ======================================================= + */ + + /** + * Set I/O direction to read. */ void setDirectionToRead(); + + /** + * Set I/O direction to write. + */ void setDirectionToWrite(); + + /** + * Write data. + * + * @param t Target. + * @param m Mode. + * @param c Data. + */ void write(Target t, Mode m, uint8_t c); + + /** + * Read data. + * + * @param t Target. + * @param m Mode. + * @param c Data. + */ void read(Target t, Mode m, uint8_t *c); + + /** + * Reset. + * + * @param b True if reset active. + */ void reset(bool b); };