for personal use

TextLCD.h

Committer:
freezeburger
Date:
2020-06-19
Revision:
0:eebebe91fd28

File content as of revision 0:eebebe91fd28:

/* mbed TextLCD Library
 * Copyright (c) 2007-2009 sford
 * Released under the MIT License: http://mbed.org/license/mit
 */
 
#ifndef MBED_TEXTLCD_H
#define MBED_TEXTLCD_H

#include "Stream.h"
#include "DigitalOut.h"
#include "BusOut.h"

namespace mbed {

/* Class: TextLCD
 * A 16x2 Text LCD controller
 *
 * If you are connecting multiple displays, you can connect them all in
 * parallel except for the enable (e) pin, which must be unique for each
 * display.
 *
 * Example:
 * > #include "mbed.h"
 * > #include "TextLCD.h"
 * >
 * > TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3
 * >
 * > int main() {
 * >     lcd.printf("Hello World!");
 * > }
 */
class TextLCD : public Stream {

public:
    /* Constructor: TextLCD
     * Create a TextLCD object, connected to the specified pins
     *
     * All signals must be connected to DigitalIn compatible pins. 
     * Variables:
     *  rs -  Used to specify data or command
     *  rw - Used to determine read or write
     *  e - enable
     *  d0..d3 - The data lines
     */
	TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1, 
		PinName d2, PinName d3, int columns = 16, int rows = 2);

#if 0 // Inhereted from Stream, for documentation only
    /* Function: putc
     *  Write a character
     *
     * Variables:
     *  c - The character to write to the serial port
     */
    int putc(int c);

    /* Function: printf
     *  Write a formated string
     *
     * Variables:
     *  format - A printf-style format string, followed by the
     *      variables to use in formating the string.
     */
    int printf(const char* format, ...);
#endif
        
    /* Function: locate
     * Locate to a certian position
     *
     * Variables:
     *  column - the column to locate to, from 0..15
     *  row - the row to locate to, from 0..1
     */
	virtual void locate(int column, int row);
    
    /* Function: cls
     * Clear the screen, and locate to 0,0
     */
	virtual void cls();	
    
	virtual void reset();
		
protected:

	void clock();
	void writeData(int data);
	void writeCommand(int command);
	void writeByte(int value);
	void writeNibble(int value);
	virtual int _putc(int c);		
	virtual int _getc();
	virtual void newline();				
			
	int _row;
	int _column;	
	DigitalOut _rw, _rs, _e;
	BusOut _d;
	int _columns;
	int _rows;

};

}

#endif