LRSD stephane / Mbed 2 deprecated WEBserverv1

Dependencies:   mbed

Committer:
geiineuville
Date:
Sat Sep 03 09:42:32 2011 +0000
Revision:
0:4570f87afab6
v1

Who changed what in which revision?

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