User | Revision | Line number | New contents of line |
takeuchi |
0:dc06f2eae55b
|
1
|
/* mbed TextLCD Library
|
takeuchi |
0:dc06f2eae55b
|
2
|
* Copyright (c) 2007-2009 sford
|
takeuchi |
0:dc06f2eae55b
|
3
|
* Released under the MIT License: http://mbed.org/license/mit
|
takeuchi |
0:dc06f2eae55b
|
4
|
*/
|
takeuchi |
0:dc06f2eae55b
|
5
|
|
takeuchi |
0:dc06f2eae55b
|
6
|
#ifndef MBED_TEXTLCD_H
|
takeuchi |
0:dc06f2eae55b
|
7
|
#define MBED_TEXTLCD_H
|
takeuchi |
0:dc06f2eae55b
|
8
|
|
takeuchi |
0:dc06f2eae55b
|
9
|
#include "Stream.h"
|
takeuchi |
0:dc06f2eae55b
|
10
|
#include "DigitalOut.h"
|
takeuchi |
0:dc06f2eae55b
|
11
|
#include "BusOut.h"
|
takeuchi |
0:dc06f2eae55b
|
12
|
|
takeuchi |
0:dc06f2eae55b
|
13
|
namespace mbed {
|
takeuchi |
0:dc06f2eae55b
|
14
|
|
takeuchi |
0:dc06f2eae55b
|
15
|
/* Class: TextLCD
|
takeuchi |
0:dc06f2eae55b
|
16
|
* A 16x2 Text LCD controller
|
takeuchi |
0:dc06f2eae55b
|
17
|
*
|
takeuchi |
0:dc06f2eae55b
|
18
|
* Allows you to print to a Text LCD screen, and locate/cls. Could be
|
takeuchi |
0:dc06f2eae55b
|
19
|
* turned in to a more generic libray.
|
takeuchi |
0:dc06f2eae55b
|
20
|
*
|
takeuchi |
0:dc06f2eae55b
|
21
|
* If you are connecting multiple displays, you can connect them all in
|
takeuchi |
0:dc06f2eae55b
|
22
|
* parallel except for the enable (e) pin, which must be unique for each
|
takeuchi |
0:dc06f2eae55b
|
23
|
* display.
|
takeuchi |
0:dc06f2eae55b
|
24
|
*
|
takeuchi |
0:dc06f2eae55b
|
25
|
* Example:
|
takeuchi |
0:dc06f2eae55b
|
26
|
* > #include "mbed.h"
|
takeuchi |
0:dc06f2eae55b
|
27
|
* > #include "TextLCD.h"
|
takeuchi |
0:dc06f2eae55b
|
28
|
* >
|
takeuchi |
0:dc06f2eae55b
|
29
|
* > TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3
|
takeuchi |
0:dc06f2eae55b
|
30
|
* >
|
takeuchi |
0:dc06f2eae55b
|
31
|
* > int main() {
|
takeuchi |
0:dc06f2eae55b
|
32
|
* > lcd.printf("Hello World!");
|
takeuchi |
0:dc06f2eae55b
|
33
|
* > }
|
takeuchi |
0:dc06f2eae55b
|
34
|
*/
|
takeuchi |
0:dc06f2eae55b
|
35
|
class TextLCD : public Stream {
|
takeuchi |
0:dc06f2eae55b
|
36
|
|
takeuchi |
0:dc06f2eae55b
|
37
|
public:
|
takeuchi |
0:dc06f2eae55b
|
38
|
/* Constructor: TextLCD
|
takeuchi |
0:dc06f2eae55b
|
39
|
* Create a TextLCD object, connected to the specified pins
|
takeuchi |
0:dc06f2eae55b
|
40
|
*
|
takeuchi |
0:dc06f2eae55b
|
41
|
* All signals must be connected to DigitalIn compatible pins.
|
takeuchi |
0:dc06f2eae55b
|
42
|
*
|
takeuchi |
0:dc06f2eae55b
|
43
|
* Variables:
|
takeuchi |
0:dc06f2eae55b
|
44
|
* rs - Used to specify data or command
|
takeuchi |
0:dc06f2eae55b
|
45
|
* rw - Used to determine read or write
|
takeuchi |
0:dc06f2eae55b
|
46
|
* e - enable
|
takeuchi |
0:dc06f2eae55b
|
47
|
* d0..d3 - The data lines
|
takeuchi |
0:dc06f2eae55b
|
48
|
*/
|
takeuchi |
0:dc06f2eae55b
|
49
|
TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1,
|
takeuchi |
0:dc06f2eae55b
|
50
|
PinName d2, PinName d3, int columns , int rows );
|
takeuchi |
0:dc06f2eae55b
|
51
|
|
takeuchi |
0:dc06f2eae55b
|
52
|
#if 0 // Inhereted from Stream, for documentation only
|
takeuchi |
0:dc06f2eae55b
|
53
|
/* Function: putc
|
takeuchi |
0:dc06f2eae55b
|
54
|
* Write a character
|
takeuchi |
0:dc06f2eae55b
|
55
|
*
|
takeuchi |
0:dc06f2eae55b
|
56
|
* Variables:
|
takeuchi |
0:dc06f2eae55b
|
57
|
* c - The character to write to the serial port
|
takeuchi |
0:dc06f2eae55b
|
58
|
*/
|
takeuchi |
0:dc06f2eae55b
|
59
|
int putc(int c);
|
takeuchi |
0:dc06f2eae55b
|
60
|
|
takeuchi |
0:dc06f2eae55b
|
61
|
/* Function: printf
|
takeuchi |
0:dc06f2eae55b
|
62
|
* Write a formated string
|
takeuchi |
0:dc06f2eae55b
|
63
|
*
|
takeuchi |
0:dc06f2eae55b
|
64
|
* Variables:
|
takeuchi |
0:dc06f2eae55b
|
65
|
* format - A printf-style format string, followed by the
|
takeuchi |
0:dc06f2eae55b
|
66
|
* variables to use in formating the string.
|
takeuchi |
0:dc06f2eae55b
|
67
|
*/
|
takeuchi |
0:dc06f2eae55b
|
68
|
int printf(const char* format, ...);
|
takeuchi |
0:dc06f2eae55b
|
69
|
#endif
|
takeuchi |
0:dc06f2eae55b
|
70
|
|
takeuchi |
0:dc06f2eae55b
|
71
|
/* Function: locate
|
takeuchi |
0:dc06f2eae55b
|
72
|
* Locate to a certian position
|
takeuchi |
0:dc06f2eae55b
|
73
|
*
|
takeuchi |
0:dc06f2eae55b
|
74
|
* Variables:
|
takeuchi |
0:dc06f2eae55b
|
75
|
* column - the column to locate to, from 0..15
|
takeuchi |
0:dc06f2eae55b
|
76
|
* row - the row to locate to, from 0..1
|
takeuchi |
0:dc06f2eae55b
|
77
|
*/
|
takeuchi |
0:dc06f2eae55b
|
78
|
virtual void locate(int column, int row);
|
takeuchi |
0:dc06f2eae55b
|
79
|
|
takeuchi |
0:dc06f2eae55b
|
80
|
/* Function: cls
|
takeuchi |
0:dc06f2eae55b
|
81
|
* Clear the screen, and locate to 0,0
|
takeuchi |
0:dc06f2eae55b
|
82
|
*/
|
takeuchi |
0:dc06f2eae55b
|
83
|
virtual void cls();
|
takeuchi |
0:dc06f2eae55b
|
84
|
|
takeuchi |
0:dc06f2eae55b
|
85
|
virtual void reset();
|
takeuchi |
0:dc06f2eae55b
|
86
|
|
takeuchi |
0:dc06f2eae55b
|
87
|
protected:
|
takeuchi |
0:dc06f2eae55b
|
88
|
|
takeuchi |
0:dc06f2eae55b
|
89
|
void clock();
|
takeuchi |
0:dc06f2eae55b
|
90
|
void writeData(int data);
|
takeuchi |
0:dc06f2eae55b
|
91
|
void writeCommand(int command);
|
takeuchi |
0:dc06f2eae55b
|
92
|
void writeByte(int value);
|
takeuchi |
0:dc06f2eae55b
|
93
|
void writeNibble(int value);
|
takeuchi |
0:dc06f2eae55b
|
94
|
virtual int _putc(int c);
|
takeuchi |
0:dc06f2eae55b
|
95
|
virtual int _getc();
|
takeuchi |
0:dc06f2eae55b
|
96
|
virtual void newline();
|
takeuchi |
0:dc06f2eae55b
|
97
|
|
takeuchi |
0:dc06f2eae55b
|
98
|
int _row;
|
takeuchi |
0:dc06f2eae55b
|
99
|
int _column;
|
takeuchi |
0:dc06f2eae55b
|
100
|
DigitalOut _rw, _rs, _e;
|
takeuchi |
0:dc06f2eae55b
|
101
|
BusOut _d;
|
takeuchi |
0:dc06f2eae55b
|
102
|
int _columns;
|
takeuchi |
0:dc06f2eae55b
|
103
|
int _rows;
|
takeuchi |
0:dc06f2eae55b
|
104
|
|
takeuchi |
0:dc06f2eae55b
|
105
|
};
|
takeuchi |
0:dc06f2eae55b
|
106
|
|
takeuchi |
0:dc06f2eae55b
|
107
|
}
|
takeuchi |
0:dc06f2eae55b
|
108
|
|
takeuchi |
0:dc06f2eae55b
|
109
|
#endif
|