Driver for a 128x64 pixels graphic LCD panel based on a KS0723 driver from Samsung.

Committer:
hilgo
Date:
Sun Feb 20 12:01:57 2011 +0000
Revision:
0:6c80c61bbc6a
Initial revision; tested with example code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hilgo 0:6c80c61bbc6a 1 /* mbed Samsung LCD Library, for a samsung KS0723 based 128x64 black/white lcd panel.
hilgo 0:6c80c61bbc6a 2 * Copyright (c) 2011, Jeroen Hilgers
hilgo 0:6c80c61bbc6a 3 *
hilgo 0:6c80c61bbc6a 4 * I based the interface on the LCD libraries by Simon Ford, to obtain compatibility
hilgo 0:6c80c61bbc6a 5 * between different displays. I used TextLCD as an example to implement the
hilgo 0:6c80c61bbc6a 6 * : public Steam part of this library.
hilgo 0:6c80c61bbc6a 7 *
hilgo 0:6c80c61bbc6a 8 *
hilgo 0:6c80c61bbc6a 9 * Permission is hereby granted, free of charge, to any person obtaining a copy
hilgo 0:6c80c61bbc6a 10 * of this software and associated documentation files (the "Software"), to deal
hilgo 0:6c80c61bbc6a 11 * in the Software without restriction, including without limitation the rights
hilgo 0:6c80c61bbc6a 12 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
hilgo 0:6c80c61bbc6a 13 * copies of the Software, and to permit persons to whom the Software is
hilgo 0:6c80c61bbc6a 14 * furnished to do so, subject to the following conditions:
hilgo 0:6c80c61bbc6a 15 *
hilgo 0:6c80c61bbc6a 16 * The above copyright notice and this permission notice shall be included in
hilgo 0:6c80c61bbc6a 17 * all copies or substantial portions of the Software.
hilgo 0:6c80c61bbc6a 18 *
hilgo 0:6c80c61bbc6a 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
hilgo 0:6c80c61bbc6a 20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
hilgo 0:6c80c61bbc6a 21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
hilgo 0:6c80c61bbc6a 22 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
hilgo 0:6c80c61bbc6a 23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
hilgo 0:6c80c61bbc6a 24 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
hilgo 0:6c80c61bbc6a 25 * THE SOFTWARE.
hilgo 0:6c80c61bbc6a 26 */
hilgo 0:6c80c61bbc6a 27
hilgo 0:6c80c61bbc6a 28
hilgo 0:6c80c61bbc6a 29 #ifndef MBED_SAMSUNG_LCD_H
hilgo 0:6c80c61bbc6a 30 #define MBED_SAMSUNG_LCD_H
hilgo 0:6c80c61bbc6a 31
hilgo 0:6c80c61bbc6a 32 #include "mbed.h"
hilgo 0:6c80c61bbc6a 33
hilgo 0:6c80c61bbc6a 34 /** LcdKs0723 class. Provides an interface compatible with
hilgo 0:6c80c61bbc6a 35 ** other display libraries by Simon Ford on www.mbed.org.
hilgo 0:6c80c61bbc6a 36 *
hilgo 0:6c80c61bbc6a 37 * Example:
hilgo 0:6c80c61bbc6a 38 * @code
hilgo 0:6c80c61bbc6a 39 * #include "mbed.h"
hilgo 0:6c80c61bbc6a 40 * #include "LcdKs0723.h"
hilgo 0:6c80c61bbc6a 41 *
hilgo 0:6c80c61bbc6a 42 * LcdKs0723 lcd(p28, p10, p27, p19, p25, p15, p24, p16, p23, p17, p22, p18);
hilgo 0:6c80c61bbc6a 43 *
hilgo 0:6c80c61bbc6a 44 * int main()
hilgo 0:6c80c61bbc6a 45 * {
hilgo 0:6c80c61bbc6a 46 * lcd.printf("KS0723 LCD Display driver.\n");
hilgo 0:6c80c61bbc6a 47 * lcd.printf("Float: %1.3f\n", 1.375f);
hilgo 0:6c80c61bbc6a 48 * lcd.printf("Hex: 0x%04X\n", 0xB12);
hilgo 0:6c80c61bbc6a 49 * while(1)
hilgo 0:6c80c61bbc6a 50 * {
hilgo 0:6c80c61bbc6a 51 * }
hilgo 0:6c80c61bbc6a 52 * }
hilgo 0:6c80c61bbc6a 53 * @endcode
hilgo 0:6c80c61bbc6a 54 */
hilgo 0:6c80c61bbc6a 55
hilgo 0:6c80c61bbc6a 56 class LcdKs0723 : public Stream
hilgo 0:6c80c61bbc6a 57 {
hilgo 0:6c80c61bbc6a 58 public:
hilgo 0:6c80c61bbc6a 59 /** Create a LcdKs0723 interface
hilgo 0:6c80c61bbc6a 60 *
hilgo 0:6c80c61bbc6a 61 * @param reset Reset line
hilgo 0:6c80c61bbc6a 62 * @param rs RS line
hilgo 0:6c80c61bbc6a 63 * @param write Write line
hilgo 0:6c80c61bbc6a 64 * @param read Read line
hilgo 0:6c80c61bbc6a 65 * @param d0-d7 Data lines
hilgo 0:6c80c61bbc6a 66 */
hilgo 0:6c80c61bbc6a 67 LcdKs0723(PinName reset, PinName rs, PinName write, PinName read, PinName d0, PinName d1,
hilgo 0:6c80c61bbc6a 68 PinName d2, PinName d3, PinName d4, PinName d5, PinName d6, PinName d7);
hilgo 0:6c80c61bbc6a 69
hilgo 0:6c80c61bbc6a 70 #if DOXYGEN_ONLY
hilgo 0:6c80c61bbc6a 71 /** Write a character to the LCD
hilgo 0:6c80c61bbc6a 72 *
hilgo 0:6c80c61bbc6a 73 * @param c The character to write to the display
hilgo 0:6c80c61bbc6a 74 */
hilgo 0:6c80c61bbc6a 75 int putc(int c);
hilgo 0:6c80c61bbc6a 76
hilgo 0:6c80c61bbc6a 77 /** Write a formated string to the LCD
hilgo 0:6c80c61bbc6a 78 *
hilgo 0:6c80c61bbc6a 79 * @param format A printf-style format string, followed by the
hilgo 0:6c80c61bbc6a 80 * variables to use in formating the string.
hilgo 0:6c80c61bbc6a 81 */
hilgo 0:6c80c61bbc6a 82 int printf(const char* format, ...);
hilgo 0:6c80c61bbc6a 83 #endif
hilgo 0:6c80c61bbc6a 84
hilgo 0:6c80c61bbc6a 85 /** Locate to a screen column and row
hilgo 0:6c80c61bbc6a 86 *
hilgo 0:6c80c61bbc6a 87 * @param column The horizontal position from the left, indexed from 0
hilgo 0:6c80c61bbc6a 88 * @param row The vertical position from the top, indexed from 0
hilgo 0:6c80c61bbc6a 89 */
hilgo 0:6c80c61bbc6a 90 void locate(int column, int row);
hilgo 0:6c80c61bbc6a 91
hilgo 0:6c80c61bbc6a 92 /** Clear the screen and locate to 0,0 */
hilgo 0:6c80c61bbc6a 93 void cls();
hilgo 0:6c80c61bbc6a 94
hilgo 0:6c80c61bbc6a 95 private:
hilgo 0:6c80c61bbc6a 96 DigitalOut mReset, mRs, mWrite, mRead;
hilgo 0:6c80c61bbc6a 97 BusInOut mData;
hilgo 0:6c80c61bbc6a 98 int mRow;
hilgo 0:6c80c61bbc6a 99 int mCol;
hilgo 0:6c80c61bbc6a 100
hilgo 0:6c80c61bbc6a 101 uint8_t ReadData (void);
hilgo 0:6c80c61bbc6a 102 void WriteData (uint8_t value);
hilgo 0:6c80c61bbc6a 103 uint8_t ReadStatus(void);
hilgo 0:6c80c61bbc6a 104 void WriteControl(uint8_t value);
hilgo 0:6c80c61bbc6a 105
hilgo 0:6c80c61bbc6a 106 // Character definition.
hilgo 0:6c80c61bbc6a 107 static const uint8_t mFont5x7[];
hilgo 0:6c80c61bbc6a 108
hilgo 0:6c80c61bbc6a 109 protected:
hilgo 0:6c80c61bbc6a 110 // Stream implementation functions.
hilgo 0:6c80c61bbc6a 111 virtual int _putc(int value);
hilgo 0:6c80c61bbc6a 112 virtual int _getc() {return -1;}
hilgo 0:6c80c61bbc6a 113 };
hilgo 0:6c80c61bbc6a 114
hilgo 0:6c80c61bbc6a 115 #endif