Provides a interface to the Sparkfun serial LCD 16x2 display that is similar to the TextLCD interface.

Dependencies:   mbed

Dependents:   dev_board_test

Committer:
giryan
Date:
Thu Aug 26 19:48:46 2010 +0000
Revision:
0:fa767f49f7e5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giryan 0:fa767f49f7e5 1 #pragma once
giryan 0:fa767f49f7e5 2
giryan 0:fa767f49f7e5 3 //! class that implements an interface like TextLCD, for a serial LCD :)
giryan 0:fa767f49f7e5 4 class SerialLCD : public Serial
giryan 0:fa767f49f7e5 5 {
giryan 0:fa767f49f7e5 6 public:
giryan 0:fa767f49f7e5 7 //! Constructor
giryan 0:fa767f49f7e5 8 SerialLCD(PinName tx, PinName rx)
giryan 0:fa767f49f7e5 9 : Serial(tx, rx)
giryan 0:fa767f49f7e5 10 {
giryan 0:fa767f49f7e5 11 baud(9600);
giryan 0:fa767f49f7e5 12 }
giryan 0:fa767f49f7e5 13
giryan 0:fa767f49f7e5 14 //! Enum with command codes.
giryan 0:fa767f49f7e5 15 struct Codes
giryan 0:fa767f49f7e5 16 {
giryan 0:fa767f49f7e5 17 enum Enum
giryan 0:fa767f49f7e5 18 {
giryan 0:fa767f49f7e5 19 BackLight = 0x7C,
giryan 0:fa767f49f7e5 20 Command = 0xFE,
giryan 0:fa767f49f7e5 21 Clear = 0x01,
giryan 0:fa767f49f7e5 22 DisplayOn = 0x0C,
giryan 0:fa767f49f7e5 23 DisplayOff = 0x08,
giryan 0:fa767f49f7e5 24 UnderlineCursorOn = 0x0E,
giryan 0:fa767f49f7e5 25 UnderlineCursorOff = 0x0C,
giryan 0:fa767f49f7e5 26 BlinkingCursorOn = 0x0D,
giryan 0:fa767f49f7e5 27 BlinkingCursorOff = 0x0C,
giryan 0:fa767f49f7e5 28 CursorLeft = 0x10,
giryan 0:fa767f49f7e5 29 CursorRight = 0x14,
giryan 0:fa767f49f7e5 30 ScrollLeft = 0x18,
giryan 0:fa767f49f7e5 31 ScrollRight = 0x1C,
giryan 0:fa767f49f7e5 32
giryan 0:fa767f49f7e5 33 Position = 0x80,
giryan 0:fa767f49f7e5 34
giryan 0:fa767f49f7e5 35 };
giryan 0:fa767f49f7e5 36 };
giryan 0:fa767f49f7e5 37
giryan 0:fa767f49f7e5 38 /** Locate to a screen column and row
giryan 0:fa767f49f7e5 39 *
giryan 0:fa767f49f7e5 40 * @param column The horizontal position from the left, indexed from 0
giryan 0:fa767f49f7e5 41 * @param row The vertical position from the top, indexed from 0
giryan 0:fa767f49f7e5 42 */
giryan 0:fa767f49f7e5 43 void locate(int column, int row)
giryan 0:fa767f49f7e5 44 {
giryan 0:fa767f49f7e5 45 unsigned char const code = Codes::Position | ((row & 0x1) << 6) | (column % 0x3F);
giryan 0:fa767f49f7e5 46
giryan 0:fa767f49f7e5 47 send_command(code);
giryan 0:fa767f49f7e5 48 }
giryan 0:fa767f49f7e5 49
giryan 0:fa767f49f7e5 50 /** Clear the screen and locate to 0,0 */
giryan 0:fa767f49f7e5 51 void cls()
giryan 0:fa767f49f7e5 52 {
giryan 0:fa767f49f7e5 53 send_command(Codes::Clear);
giryan 0:fa767f49f7e5 54
giryan 0:fa767f49f7e5 55 locate(0,0);
giryan 0:fa767f49f7e5 56 }
giryan 0:fa767f49f7e5 57
giryan 0:fa767f49f7e5 58 //!Send a command
giryan 0:fa767f49f7e5 59 void send_command(int const command_code)
giryan 0:fa767f49f7e5 60 {
giryan 0:fa767f49f7e5 61 putc(Codes::Command);
giryan 0:fa767f49f7e5 62 putc(command_code);
giryan 0:fa767f49f7e5 63 }
giryan 0:fa767f49f7e5 64 };