web server sur carte testbed . données PC>testbed et testbed> PC lecture tensions analogique , site web dans fichier pageswebsd

Dependencies:   mbed

Committer:
geiineuville
Date:
Thu Sep 22 15:59:17 2011 +0000
Revision:
0:3c32eeb9292a
V4

Who changed what in which revision?

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