http://mbed.org/users/shintamainjp/notebook/textlcd_sr4_en/
Dependents: TextLCD_SR4_TestProgram ServoInterfaceBoardExample1
TextLCD_SR4.h@0:580f94424a91, 2010-10-25 (annotated)
- Committer:
- shintamainjp
- Date:
- Mon Oct 25 22:40:36 2010 +0000
- Revision:
- 0:580f94424a91
First version.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:580f94424a91 | 1 | |
shintamainjp | 0:580f94424a91 | 2 | #ifndef _TEXT_LCD_SR4_H |
shintamainjp | 0:580f94424a91 | 3 | #define _TEXT_LCD_SR4_H |
shintamainjp | 0:580f94424a91 | 4 | |
shintamainjp | 0:580f94424a91 | 5 | #include "mbed.h" |
shintamainjp | 0:580f94424a91 | 6 | |
shintamainjp | 0:580f94424a91 | 7 | /* |
shintamainjp | 0:580f94424a91 | 8 | * Modified for http://mbed.org/users/shintamainjp/notebook/textlcd_sr4_en/ |
shintamainjp | 0:580f94424a91 | 9 | * Shinichiro Nakamura |
shintamainjp | 0:580f94424a91 | 10 | */ |
shintamainjp | 0:580f94424a91 | 11 | |
shintamainjp | 0:580f94424a91 | 12 | /** |
shintamainjp | 0:580f94424a91 | 13 | * A TextLCD_SR4 interface for driving 4-bit HD44780-based LCDs with shift register. |
shintamainjp | 0:580f94424a91 | 14 | * |
shintamainjp | 0:580f94424a91 | 15 | * Currently supports 16x2, 20x2 and 20x4 panels |
shintamainjp | 0:580f94424a91 | 16 | * |
shintamainjp | 0:580f94424a91 | 17 | * @code |
shintamainjp | 0:580f94424a91 | 18 | * #include "mbed.h" |
shintamainjp | 0:580f94424a91 | 19 | * #include "TextLCD_SR4.h" |
shintamainjp | 0:580f94424a91 | 20 | * |
shintamainjp | 0:580f94424a91 | 21 | * TextLCD_SR4 lcd(p29, p30, p28, p27); // rs, e, dat, clk |
shintamainjp | 0:580f94424a91 | 22 | * |
shintamainjp | 0:580f94424a91 | 23 | * int main() { |
shintamainjp | 0:580f94424a91 | 24 | * lcd.printf("Hello World!\n"); |
shintamainjp | 0:580f94424a91 | 25 | * } |
shintamainjp | 0:580f94424a91 | 26 | * @endcode |
shintamainjp | 0:580f94424a91 | 27 | */ |
shintamainjp | 0:580f94424a91 | 28 | class TextLCD_SR4 : public Stream { |
shintamainjp | 0:580f94424a91 | 29 | public: |
shintamainjp | 0:580f94424a91 | 30 | /** LCD panel format */ |
shintamainjp | 0:580f94424a91 | 31 | enum LCDType { |
shintamainjp | 0:580f94424a91 | 32 | LCD16x2 /**< 16x2 LCD panel (default) */ |
shintamainjp | 0:580f94424a91 | 33 | , LCD16x2B /**< 16x2 LCD panel alternate addressing */ |
shintamainjp | 0:580f94424a91 | 34 | , LCD20x2 /**< 20x2 LCD panel */ |
shintamainjp | 0:580f94424a91 | 35 | , LCD20x4 /**< 20x4 LCD panel */ |
shintamainjp | 0:580f94424a91 | 36 | }; |
shintamainjp | 0:580f94424a91 | 37 | |
shintamainjp | 0:580f94424a91 | 38 | /** Create a TextLCD_SR4 interface |
shintamainjp | 0:580f94424a91 | 39 | * |
shintamainjp | 0:580f94424a91 | 40 | * @param rs Instruction/data control line |
shintamainjp | 0:580f94424a91 | 41 | * @param e Enable line (clock) |
shintamainjp | 0:580f94424a91 | 42 | * @param dat Data line |
shintamainjp | 0:580f94424a91 | 43 | * @param clk Clock line |
shintamainjp | 0:580f94424a91 | 44 | */ |
shintamainjp | 0:580f94424a91 | 45 | TextLCD_SR4(PinName rs, PinName e, PinName dat, PinName clk, LCDType type = LCD16x2); |
shintamainjp | 0:580f94424a91 | 46 | |
shintamainjp | 0:580f94424a91 | 47 | #if DOXYGEN_ONLY |
shintamainjp | 0:580f94424a91 | 48 | /** Write a character to the LCD |
shintamainjp | 0:580f94424a91 | 49 | * |
shintamainjp | 0:580f94424a91 | 50 | * @param c The character to write to the display |
shintamainjp | 0:580f94424a91 | 51 | */ |
shintamainjp | 0:580f94424a91 | 52 | int putc(int c); |
shintamainjp | 0:580f94424a91 | 53 | |
shintamainjp | 0:580f94424a91 | 54 | /** Write a formated string to the LCD |
shintamainjp | 0:580f94424a91 | 55 | * |
shintamainjp | 0:580f94424a91 | 56 | * @param format A printf-style format string, followed by the |
shintamainjp | 0:580f94424a91 | 57 | * variables to use in formating the string. |
shintamainjp | 0:580f94424a91 | 58 | */ |
shintamainjp | 0:580f94424a91 | 59 | int printf(const char* format, ...); |
shintamainjp | 0:580f94424a91 | 60 | #endif |
shintamainjp | 0:580f94424a91 | 61 | |
shintamainjp | 0:580f94424a91 | 62 | /** Locate to a screen column and row |
shintamainjp | 0:580f94424a91 | 63 | * |
shintamainjp | 0:580f94424a91 | 64 | * @param column The horizontal position from the left, indexed from 0 |
shintamainjp | 0:580f94424a91 | 65 | * @param row The vertical position from the top, indexed from 0 |
shintamainjp | 0:580f94424a91 | 66 | */ |
shintamainjp | 0:580f94424a91 | 67 | void locate(int column, int row); |
shintamainjp | 0:580f94424a91 | 68 | |
shintamainjp | 0:580f94424a91 | 69 | /** Clear the screen and locate to 0,0 */ |
shintamainjp | 0:580f94424a91 | 70 | void cls(); |
shintamainjp | 0:580f94424a91 | 71 | |
shintamainjp | 0:580f94424a91 | 72 | int rows(); |
shintamainjp | 0:580f94424a91 | 73 | int columns(); |
shintamainjp | 0:580f94424a91 | 74 | |
shintamainjp | 0:580f94424a91 | 75 | protected: |
shintamainjp | 0:580f94424a91 | 76 | |
shintamainjp | 0:580f94424a91 | 77 | // Stream implementation functions |
shintamainjp | 0:580f94424a91 | 78 | virtual int _putc(int value); |
shintamainjp | 0:580f94424a91 | 79 | virtual int _getc(); |
shintamainjp | 0:580f94424a91 | 80 | |
shintamainjp | 0:580f94424a91 | 81 | int address(int column, int row); |
shintamainjp | 0:580f94424a91 | 82 | void character(int column, int row, int c); |
shintamainjp | 0:580f94424a91 | 83 | void writeByte(int value); |
shintamainjp | 0:580f94424a91 | 84 | void writeCommand(int command); |
shintamainjp | 0:580f94424a91 | 85 | void writeData(int data); |
shintamainjp | 0:580f94424a91 | 86 | |
shintamainjp | 0:580f94424a91 | 87 | void writeToShiftRegister(int value); |
shintamainjp | 0:580f94424a91 | 88 | |
shintamainjp | 0:580f94424a91 | 89 | DigitalOut _rs, _e, _dat, _clk; |
shintamainjp | 0:580f94424a91 | 90 | LCDType _type; |
shintamainjp | 0:580f94424a91 | 91 | |
shintamainjp | 0:580f94424a91 | 92 | int _column; |
shintamainjp | 0:580f94424a91 | 93 | int _row; |
shintamainjp | 0:580f94424a91 | 94 | }; |
shintamainjp | 0:580f94424a91 | 95 | |
shintamainjp | 0:580f94424a91 | 96 | #endif |