LRSD stephane / Mbed 2 deprecated WEBserverv3

Dependencies:   mbed

Committer:
geiineuville
Date:
Thu Sep 08 08:57:21 2011 +0000
Revision:
0:9cf1d79ebe04
v0 v1 v2   \"v3\"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
geiineuville 0:9cf1d79ebe04 1 /* mbed TextLCD Library, for a 4-bit LCD based on HD44780
geiineuville 0:9cf1d79ebe04 2 * Copyright (c) 2007-2010, sford, http://mbed.org
geiineuville 0:9cf1d79ebe04 3 * 2011-06-11 TP modified for Elmicro Testbed with display GDM4000D
geiineuville 0:9cf1d79ebe04 4 *
geiineuville 0:9cf1d79ebe04 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
geiineuville 0:9cf1d79ebe04 6 * of this software and associated documentation files (the "Software"), to deal
geiineuville 0:9cf1d79ebe04 7 * in the Software without restriction, including without limitation the rights
geiineuville 0:9cf1d79ebe04 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
geiineuville 0:9cf1d79ebe04 9 * copies of the Software, and to permit persons to whom the Software is
geiineuville 0:9cf1d79ebe04 10 * furnished to do so, subject to the following conditions:
geiineuville 0:9cf1d79ebe04 11 *
geiineuville 0:9cf1d79ebe04 12 * The above copyright notice and this permission notice shall be included in
geiineuville 0:9cf1d79ebe04 13 * all copies or substantial portions of the Software.
geiineuville 0:9cf1d79ebe04 14 *
geiineuville 0:9cf1d79ebe04 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
geiineuville 0:9cf1d79ebe04 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
geiineuville 0:9cf1d79ebe04 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
geiineuville 0:9cf1d79ebe04 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
geiineuville 0:9cf1d79ebe04 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
geiineuville 0:9cf1d79ebe04 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
geiineuville 0:9cf1d79ebe04 21 * THE SOFTWARE.
geiineuville 0:9cf1d79ebe04 22 */
geiineuville 0:9cf1d79ebe04 23
geiineuville 0:9cf1d79ebe04 24 #ifndef MBED_TEXTLCD_H
geiineuville 0:9cf1d79ebe04 25 #define MBED_TEXTLCD_H
geiineuville 0:9cf1d79ebe04 26
geiineuville 0:9cf1d79ebe04 27 #include "mbed.h"
geiineuville 0:9cf1d79ebe04 28
geiineuville 0:9cf1d79ebe04 29 /** A TextLCD interface for driving 4-bit HD44780-based LCDs
geiineuville 0:9cf1d79ebe04 30 *
geiineuville 0:9cf1d79ebe04 31 * Currently supports 16x2, 20x2 and 20x4 panels
geiineuville 0:9cf1d79ebe04 32 *
geiineuville 0:9cf1d79ebe04 33 * @code
geiineuville 0:9cf1d79ebe04 34 * #include "mbed.h"
geiineuville 0:9cf1d79ebe04 35 * #include "NewTextLCD.h"
geiineuville 0:9cf1d79ebe04 36 *
geiineuville 0:9cf1d79ebe04 37 * TextLCD lcd(p26, p25, p24, p23, p22, p20, p19, TextLCD::LCD20x4); // rs, rw, e, d4-d7
geiineuville 0:9cf1d79ebe04 38 *
geiineuville 0:9cf1d79ebe04 39 * int main() {
geiineuville 0:9cf1d79ebe04 40 * lcd.printf("Hello mbed\n");
geiineuville 0:9cf1d79ebe04 41 *
geiineuville 0:9cf1d79ebe04 42 * //define user chars
geiineuville 0:9cf1d79ebe04 43 * int pattern[8];
geiineuville 0:9cf1d79ebe04 44 * int pattern1[8];
geiineuville 0:9cf1d79ebe04 45 * pattern[0] = 1; // *
geiineuville 0:9cf1d79ebe04 46 * pattern[1] = 3; // **
geiineuville 0:9cf1d79ebe04 47 * pattern[2] = 5; // * *
geiineuville 0:9cf1d79ebe04 48 * pattern[3] = 9; // * *
geiineuville 0:9cf1d79ebe04 49 * pattern[4] = 0x11; // * *
geiineuville 0:9cf1d79ebe04 50 * pattern[5] = 0x19; // ** *
geiineuville 0:9cf1d79ebe04 51 * pattern[6] = 0x1d; // *** *
geiineuville 0:9cf1d79ebe04 52 * pattern[7] = 0x1f; // *****
geiineuville 0:9cf1d79ebe04 53 *
geiineuville 0:9cf1d79ebe04 54 * pattern1[0] = 0x10; // *
geiineuville 0:9cf1d79ebe04 55 * pattern1[1] = 0x18; // **
geiineuville 0:9cf1d79ebe04 56 * pattern1[2] = 0x14; // * *
geiineuville 0:9cf1d79ebe04 57 * pattern1[3] = 0x12; // * *
geiineuville 0:9cf1d79ebe04 58 * pattern1[4] = 0x11; // * *
geiineuville 0:9cf1d79ebe04 59 * pattern1[5] = 0x13; // * **
geiineuville 0:9cf1d79ebe04 60 * pattern1[6] = 0x17; // * ***
geiineuville 0:9cf1d79ebe04 61 * pattern1[7] = 0x1f; // *****
geiineuville 0:9cf1d79ebe04 62 *
geiineuville 0:9cf1d79ebe04 63 * lcd.writeCGRAM(0, pattern);
geiineuville 0:9cf1d79ebe04 64 * lcd.writeCGRAM(1, pattern1);
geiineuville 0:9cf1d79ebe04 65 *
geiineuville 0:9cf1d79ebe04 66 * lcd.locate(15,0);
geiineuville 0:9cf1d79ebe04 67 * lcd.putc(0); // user pattern 0
geiineuville 0:9cf1d79ebe04 68 * lcd.putc(1); // user pattern 1
geiineuville 0:9cf1d79ebe04 69 * }
geiineuville 0:9cf1d79ebe04 70 * @endcode
geiineuville 0:9cf1d79ebe04 71 */
geiineuville 0:9cf1d79ebe04 72 class TextLCD : public Stream {
geiineuville 0:9cf1d79ebe04 73 public:
geiineuville 0:9cf1d79ebe04 74
geiineuville 0:9cf1d79ebe04 75 /** LCD panel format */
geiineuville 0:9cf1d79ebe04 76 enum LCDType {
geiineuville 0:9cf1d79ebe04 77 LCD16x2 /**< 16x2 LCD panel (default) */
geiineuville 0:9cf1d79ebe04 78 , LCD16x2B /**< 16x2 LCD panel alternate addressing */
geiineuville 0:9cf1d79ebe04 79 , LCD20x2 /**< 20x2 LCD panel */
geiineuville 0:9cf1d79ebe04 80 , LCD20x4 /**< 20x4 LCD panel */
geiineuville 0:9cf1d79ebe04 81 , LCD24x2 /**< 24x2 LCD panel */
geiineuville 0:9cf1d79ebe04 82 , LCDuser /** User defined LCD, rows/columns must be set */
geiineuville 0:9cf1d79ebe04 83 };
geiineuville 0:9cf1d79ebe04 84
geiineuville 0:9cf1d79ebe04 85 /** Create a TextLCD interface
geiineuville 0:9cf1d79ebe04 86 *
geiineuville 0:9cf1d79ebe04 87 * @param rs Instruction/data control line
geiineuville 0:9cf1d79ebe04 88 * @param rw R/W line
geiineuville 0:9cf1d79ebe04 89 * @param e Enable line (clock)
geiineuville 0:9cf1d79ebe04 90 * @param d4-d7 Data lines
geiineuville 0:9cf1d79ebe04 91 * @param type Sets the panel size/addressing mode (default = LCD16x2)
geiineuville 0:9cf1d79ebe04 92 */
geiineuville 0:9cf1d79ebe04 93 TextLCD(PinName rs, PinName rw, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type = LCD16x2);
geiineuville 0:9cf1d79ebe04 94
geiineuville 0:9cf1d79ebe04 95 #if DOXYGEN_ONLY
geiineuville 0:9cf1d79ebe04 96 /** Write a character to the LCD
geiineuville 0:9cf1d79ebe04 97 *
geiineuville 0:9cf1d79ebe04 98 * @param c The character to write to the display
geiineuville 0:9cf1d79ebe04 99 */
geiineuville 0:9cf1d79ebe04 100 int putc(int c);
geiineuville 0:9cf1d79ebe04 101
geiineuville 0:9cf1d79ebe04 102 /** Write a formated string to the LCD
geiineuville 0:9cf1d79ebe04 103 *
geiineuville 0:9cf1d79ebe04 104 * @param format A printf-style format string, followed by the
geiineuville 0:9cf1d79ebe04 105 * variables to use in formating the string.
geiineuville 0:9cf1d79ebe04 106 */
geiineuville 0:9cf1d79ebe04 107 int printf(const char* format, ...);
geiineuville 0:9cf1d79ebe04 108 #endif
geiineuville 0:9cf1d79ebe04 109
geiineuville 0:9cf1d79ebe04 110 /** Locate to a screen column and row
geiineuville 0:9cf1d79ebe04 111 *
geiineuville 0:9cf1d79ebe04 112 * @param column The horizontal position from the left, indexed from 0
geiineuville 0:9cf1d79ebe04 113 * @param row The vertical position from the top, indexed from 0
geiineuville 0:9cf1d79ebe04 114 */
geiineuville 0:9cf1d79ebe04 115 void locate(int column, int row);
geiineuville 0:9cf1d79ebe04 116
geiineuville 0:9cf1d79ebe04 117 /** Clear the screen and locate to 0,0 */
geiineuville 0:9cf1d79ebe04 118 void cls();
geiineuville 0:9cf1d79ebe04 119
geiineuville 0:9cf1d79ebe04 120 struct LCDparam {
geiineuville 0:9cf1d79ebe04 121 int rows; // number of lines //
geiineuville 0:9cf1d79ebe04 122 int columns; // number of columns //
geiineuville 0:9cf1d79ebe04 123 int delay; // delay for commands microseconds //
geiineuville 0:9cf1d79ebe04 124 int adresses[4]; // start adresses for 4 lines //
geiineuville 0:9cf1d79ebe04 125 } LCDparam;
geiineuville 0:9cf1d79ebe04 126
geiineuville 0:9cf1d79ebe04 127 /** write a user defined char
geiineuville 0:9cf1d79ebe04 128 *
geiineuville 0:9cf1d79ebe04 129 * @param address The user defined char (0-7)
geiineuville 0:9cf1d79ebe04 130 * @param pattern[8] bit pattern 5*8 of char
geiineuville 0:9cf1d79ebe04 131 */
geiineuville 0:9cf1d79ebe04 132 void writeCGRAM(int address, int pattern[8]);
geiineuville 0:9cf1d79ebe04 133
geiineuville 0:9cf1d79ebe04 134 /** Get the char at the current position
geiineuville 0:9cf1d79ebe04 135 *
geiineuville 0:9cf1d79ebe04 136 * int getc()
geiineuville 0:9cf1d79ebe04 137 */
geiineuville 0:9cf1d79ebe04 138 void writeCommand(int command);
geiineuville 0:9cf1d79ebe04 139
geiineuville 0:9cf1d79ebe04 140 protected:
geiineuville 0:9cf1d79ebe04 141
geiineuville 0:9cf1d79ebe04 142 // Stream implementation functions
geiineuville 0:9cf1d79ebe04 143 virtual int _putc(int value);
geiineuville 0:9cf1d79ebe04 144 virtual int _getc();
geiineuville 0:9cf1d79ebe04 145
geiineuville 0:9cf1d79ebe04 146 int address(int column, int row);
geiineuville 0:9cf1d79ebe04 147 void character(int column, int row, int c);
geiineuville 0:9cf1d79ebe04 148 void writeByte(int value);
geiineuville 0:9cf1d79ebe04 149 void writeData(int data);
geiineuville 0:9cf1d79ebe04 150 void setLCDparam(LCDType _type);
geiineuville 0:9cf1d79ebe04 151 DigitalOut _rs, _rw, _e;
geiineuville 0:9cf1d79ebe04 152 BusOut _d;
geiineuville 0:9cf1d79ebe04 153 LCDType _type;
geiineuville 0:9cf1d79ebe04 154
geiineuville 0:9cf1d79ebe04 155 int _column;
geiineuville 0:9cf1d79ebe04 156 int _row;
geiineuville 0:9cf1d79ebe04 157 };
geiineuville 0:9cf1d79ebe04 158
geiineuville 0:9cf1d79ebe04 159 #endif