http://mbed.org/users/shintamainjp/notebook/textlcd_sr4_en/

Dependents:   TextLCD_SR4_TestProgram ServoInterfaceBoardExample1

Committer:
shintamainjp
Date:
Mon Oct 25 22:41:56 2010 +0000
Revision:
2:e768257aba09
Parent:
0:580f94424a91

        

Who changed what in which revision?

UserRevisionLine numberNew 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