Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ili9163lcd.h
- Revision:
- 0:c0be4e018a09
- Child:
- 2:4d5b94a92f19
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ili9163lcd.h Sat Jun 14 02:27:06 2014 +0000
@@ -0,0 +1,150 @@
+/**
+ * @file ili9163lcd.h
+ * @brief ILI9163 128x128 LCD Driver (Header file)
+ *
+ * This code has been ported from the ili9163lcd library for mbed
+ * made by Jun Morita.
+ * Source form <http://files.noccylabs.info/lib430/liblcd/ili9163lcd_8c.html>
+ *
+ * This code has been ported from the ili9163lcd library for avr made
+ * by Simon Inns, to run on a msp430.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author Jun Morita (iccraft)
+ * @author Simon Inns <simon.inns@gmail.com>
+ * @author Christopher Vagnetoft (NoccyLabs)
+ * @copyright (C) 2012 Simon Inns
+ * @copyright parts (C) 2012 NoccyLabs
+ */
+
+#ifndef ILI9163LCD_H_
+#define ILI9163LCD_H_
+
+// Definitions for control lines (port C)
+#define LCD_WR (1 << 2)
+#define LCD_RS (1 << 4)
+#define LCD_RD (1 << 5)
+#define LCD_CS (1 << 6)
+#define LCD_RESET (1 << 7)
+
+// Screen orientation defines:
+// 0 = Ribbon at top
+// 1 = Ribbon at left
+// 2 = Ribbon at right
+// 3 = Ribbon at bottom
+#define LCD_ORIENTATION0 0
+#define LCD_ORIENTATION1 96
+#define LCD_ORIENTATION2 160
+#define LCD_ORIENTATION3 192
+
+// ILI9163 LCD Controller Commands
+#define NOP 0x00
+#define SOFT_RESET 0x01
+#define GET_RED_CHANNEL 0x06
+#define GET_GREEN_CHANNEL 0x07
+#define GET_BLUE_CHANNEL 0x08
+#define GET_PIXEL_FORMAT 0x0C
+#define GET_POWER_MODE 0x0A
+#define GET_ADDRESS_MODE 0x0B
+#define GET_DISPLAY_MODE 0x0D
+#define GET_SIGNAL_MODE 0x0E
+#define GET_DIAGNOSTIC_RESULT 0x0F
+#define ENTER_SLEEP_MODE 0x10
+#define EXIT_SLEEP_MODE 0x11
+#define ENTER_PARTIAL_MODE 0x12
+#define ENTER_NORMAL_MODE 0x13
+#define EXIT_INVERT_MODE 0x20
+#define ENTER_INVERT_MODE 0x21
+#define SET_GAMMA_CURVE 0x26
+#define SET_DISPLAY_OFF 0x28
+#define SET_DISPLAY_ON 0x29
+#define SET_COLUMN_ADDRESS 0x2A
+#define SET_PAGE_ADDRESS 0x2B
+#define WRITE_MEMORY_START 0x2C
+#define WRITE_LUT 0x2D
+#define READ_MEMORY_START 0x2E
+#define SET_PARTIAL_AREA 0x30
+#define SET_SCROLL_AREA 0x33
+#define SET_TEAR_OFF 0x34
+#define SET_TEAR_ON 0x35
+#define SET_ADDRESS_MODE 0x36
+#define SET_SCROLL_START 0X37
+#define EXIT_IDLE_MODE 0x38
+#define ENTER_IDLE_MODE 0x39
+#define SET_PIXEL_FORMAT 0x3A
+#define WRITE_MEMORY_CONTINUE 0x3C
+#define READ_MEMORY_CONTINUE 0x3E
+#define SET_TEAR_SCANLINE 0x44
+#define GET_SCANLINE 0x45
+#define READ_ID1 0xDA
+#define READ_ID2 0xDB
+#define READ_ID3 0xDC
+#define FRAME_RATE_CONTROL1 0xB1
+#define FRAME_RATE_CONTROL2 0xB2
+#define FRAME_RATE_CONTROL3 0xB3
+#define DISPLAY_INVERSION 0xB4
+#define SOURCE_DRIVER_DIRECTION 0xB7
+#define GATE_DRIVER_DIRECTION 0xB8
+#define POWER_CONTROL1 0xC0
+#define POWER_CONTROL2 0xC1
+#define POWER_CONTROL3 0xC2
+#define POWER_CONTROL4 0xC3
+#define POWER_CONTROL5 0xC4
+#define VCOM_CONTROL1 0xC5
+#define VCOM_CONTROL2 0xC6
+#define VCOM_OFFSET_CONTROL 0xC7
+#define WRITE_ID4_VALUE 0xD3
+#define NV_MEMORY_FUNCTION1 0xD7
+#define NV_MEMORY_FUNCTION2 0xDE
+#define POSITIVE_GAMMA_CORRECT 0xE0
+#define NEGATIVE_GAMMA_CORRECT 0xE1
+#define GAM_R_SEL 0xF2
+
+// Macros and in-lines:
+
+// Translates a 3 byte RGB value into a 2 byte value for the LCD (values should be 0-31)
+inline uint16_t decodeRgbValue(uint8_t r, uint8_t g, uint8_t b)
+{
+ return (b << 11) | (g << 6) | (r);
+}
+
+// This routine takes a row number from 0 to 20 and
+// returns the x coordinate on the screen (0-127) to make
+// it easy to place text
+inline uint8_t lcdTextX(uint8_t x) { return x*6; }
+
+// This routine takes a column number from 0 to 20 and
+// returns the y coordinate on the screen (0-127) to make
+// it easy to place text
+inline uint8_t lcdTextY(uint8_t y) { return y*8; }
+
+// LCD function prototypes
+void lcdReset(void);
+void lcdWriteCommand(uint8_t address);
+void lcdWriteParameter(uint8_t parameter);
+void lcdWriteData(uint8_t dataByte1, uint8_t dataByte2);
+void lcdInitialise(uint8_t orientation);
+
+void lcdClearDisplay(uint16_t colour);
+void lcdPlot(uint8_t x, uint8_t y, uint16_t colour);
+void lcdLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour);
+void lcdRectangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour);
+void lcdFilledRectangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour);
+void lcdCircle(int16_t xCentre, int16_t yCentre, int16_t radius, uint16_t colour);
+
+void lcdPutCh(unsigned char character, uint8_t x, uint8_t y, uint16_t fgColour, uint16_t bgColour);
+void lcdPutS(const char *string, uint8_t x, uint8_t y, uint16_t fgColour, uint16_t bgColour);
+
+#endif /* ILI9163LCD_H_ */