http://http://diytec.web.fc2.com/mark2r2/

Dependencies:   EthernetNetIf NTPClient_NetServices mbed ConfigFile

Committer:
mark2r2
Date:
Tue Sep 20 12:46:26 2011 +0000
Revision:
0:08a4d61cd84c
V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mark2r2 0:08a4d61cd84c 1 /* mbed TextLCD Library, for a 4-bit LCD based on HD44780
mark2r2 0:08a4d61cd84c 2 * Copyright (c) 2007-2010, sford, http://mbed.org
mark2r2 0:08a4d61cd84c 3 *
mark2r2 0:08a4d61cd84c 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
mark2r2 0:08a4d61cd84c 5 * of this software and associated documentation files (the "Software"), to deal
mark2r2 0:08a4d61cd84c 6 * in the Software without restriction, including without limitation the rights
mark2r2 0:08a4d61cd84c 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
mark2r2 0:08a4d61cd84c 8 * copies of the Software, and to permit persons to whom the Software is
mark2r2 0:08a4d61cd84c 9 * furnished to do so, subject to the following conditions:
mark2r2 0:08a4d61cd84c 10 *
mark2r2 0:08a4d61cd84c 11 * The above copyright notice and this permission notice shall be included in
mark2r2 0:08a4d61cd84c 12 * all copies or substantial portions of the Software.
mark2r2 0:08a4d61cd84c 13 *
mark2r2 0:08a4d61cd84c 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
mark2r2 0:08a4d61cd84c 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
mark2r2 0:08a4d61cd84c 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
mark2r2 0:08a4d61cd84c 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
mark2r2 0:08a4d61cd84c 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
mark2r2 0:08a4d61cd84c 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
mark2r2 0:08a4d61cd84c 20 * THE SOFTWARE.
mark2r2 0:08a4d61cd84c 21 */
mark2r2 0:08a4d61cd84c 22
mark2r2 0:08a4d61cd84c 23 #ifndef MBED_TEXTLCD_H
mark2r2 0:08a4d61cd84c 24 #define MBED_TEXTLCD_H
mark2r2 0:08a4d61cd84c 25
mark2r2 0:08a4d61cd84c 26 #include "mbed.h"
mark2r2 0:08a4d61cd84c 27
mark2r2 0:08a4d61cd84c 28 /** A TextLCD interface for driving 4-bit HD44780-based LCDs
mark2r2 0:08a4d61cd84c 29 *
mark2r2 0:08a4d61cd84c 30 * Currently supports 16x2, 20x2 and 20x4 panels
mark2r2 0:08a4d61cd84c 31 *
mark2r2 0:08a4d61cd84c 32 * @code
mark2r2 0:08a4d61cd84c 33 * #include "mbed.h"
mark2r2 0:08a4d61cd84c 34 * #include "TextLCD.h"
mark2r2 0:08a4d61cd84c 35 *
mark2r2 0:08a4d61cd84c 36 * TextLCD lcd(p10, p12, p15, p16, p29, p30); // rs, e, d4-d7
mark2r2 0:08a4d61cd84c 37 *
mark2r2 0:08a4d61cd84c 38 * int main() {
mark2r2 0:08a4d61cd84c 39 * lcd.printf("Hello World!\n");
mark2r2 0:08a4d61cd84c 40 * }
mark2r2 0:08a4d61cd84c 41 * @endcode
mark2r2 0:08a4d61cd84c 42 */
mark2r2 0:08a4d61cd84c 43 class TextLCD : public Stream {
mark2r2 0:08a4d61cd84c 44 public:
mark2r2 0:08a4d61cd84c 45
mark2r2 0:08a4d61cd84c 46 /** LCD panel format */
mark2r2 0:08a4d61cd84c 47 enum LCDType {
mark2r2 0:08a4d61cd84c 48 LCD16x2 /**< 16x2 LCD panel (default) */
mark2r2 0:08a4d61cd84c 49 , LCD16x2B /**< 16x2 LCD panel alternate addressing */
mark2r2 0:08a4d61cd84c 50 , LCD20x2 /**< 20x2 LCD panel */
mark2r2 0:08a4d61cd84c 51 , LCD20x4 /**< 20x4 LCD panel */
mark2r2 0:08a4d61cd84c 52 };
mark2r2 0:08a4d61cd84c 53
mark2r2 0:08a4d61cd84c 54 /** Create a TextLCD interface
mark2r2 0:08a4d61cd84c 55 *
mark2r2 0:08a4d61cd84c 56 * @param rs Instruction/data control line
mark2r2 0:08a4d61cd84c 57 * @param e Enable line (clock)
mark2r2 0:08a4d61cd84c 58 * @param d4-d7 Data lines for using as a 4-bit interface
mark2r2 0:08a4d61cd84c 59 * @param type Sets the panel size/addressing mode (default = LCD16x2)
mark2r2 0:08a4d61cd84c 60 */
mark2r2 0:08a4d61cd84c 61 TextLCD(PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type = LCD16x2);
mark2r2 0:08a4d61cd84c 62
mark2r2 0:08a4d61cd84c 63 #if DOXYGEN_ONLY
mark2r2 0:08a4d61cd84c 64 /** Write a character to the LCD
mark2r2 0:08a4d61cd84c 65 *
mark2r2 0:08a4d61cd84c 66 * @param c The character to write to the display
mark2r2 0:08a4d61cd84c 67 */
mark2r2 0:08a4d61cd84c 68 int putc(int c);
mark2r2 0:08a4d61cd84c 69
mark2r2 0:08a4d61cd84c 70 /** Write a formated string to the LCD
mark2r2 0:08a4d61cd84c 71 *
mark2r2 0:08a4d61cd84c 72 * @param format A printf-style format string, followed by the
mark2r2 0:08a4d61cd84c 73 * variables to use in formating the string.
mark2r2 0:08a4d61cd84c 74 */
mark2r2 0:08a4d61cd84c 75 int printf(const char* format, ...);
mark2r2 0:08a4d61cd84c 76 #endif
mark2r2 0:08a4d61cd84c 77
mark2r2 0:08a4d61cd84c 78 /** Locate to a screen column and row
mark2r2 0:08a4d61cd84c 79 *
mark2r2 0:08a4d61cd84c 80 * @param column The horizontal position from the left, indexed from 0
mark2r2 0:08a4d61cd84c 81 * @param row The vertical position from the top, indexed from 0
mark2r2 0:08a4d61cd84c 82 */
mark2r2 0:08a4d61cd84c 83 void locate(int column, int row);
mark2r2 0:08a4d61cd84c 84
mark2r2 0:08a4d61cd84c 85 /** Clear the screen and locate to 0,0 */
mark2r2 0:08a4d61cd84c 86 void cls();
mark2r2 0:08a4d61cd84c 87
mark2r2 0:08a4d61cd84c 88 int rows();
mark2r2 0:08a4d61cd84c 89 int columns();
mark2r2 0:08a4d61cd84c 90
mark2r2 0:08a4d61cd84c 91 protected:
mark2r2 0:08a4d61cd84c 92
mark2r2 0:08a4d61cd84c 93 // Stream implementation functions
mark2r2 0:08a4d61cd84c 94 virtual int _putc(int value);
mark2r2 0:08a4d61cd84c 95 virtual int _getc();
mark2r2 0:08a4d61cd84c 96
mark2r2 0:08a4d61cd84c 97 int address(int column, int row);
mark2r2 0:08a4d61cd84c 98 void character(int column, int row, int c);
mark2r2 0:08a4d61cd84c 99 void writeByte(int value);
mark2r2 0:08a4d61cd84c 100 void writeCommand(int command);
mark2r2 0:08a4d61cd84c 101 void writeData(int data);
mark2r2 0:08a4d61cd84c 102
mark2r2 0:08a4d61cd84c 103 DigitalOut _rs, _e;
mark2r2 0:08a4d61cd84c 104 BusOut _d;
mark2r2 0:08a4d61cd84c 105 LCDType _type;
mark2r2 0:08a4d61cd84c 106
mark2r2 0:08a4d61cd84c 107 int _column;
mark2r2 0:08a4d61cd84c 108 int _row;
mark2r2 0:08a4d61cd84c 109 };
mark2r2 0:08a4d61cd84c 110
mark2r2 0:08a4d61cd84c 111 #endif