Esta versión v6 pasa a ser el nuevo master. Funciona correctamente
Dependencies: ADXL345 Display1602 MSCFileSystem SDFileSystem mbed FATFileSystem
Display1602/Display1602.cpp@2:cc4a43d806e2, 2014-06-06 (annotated)
- Committer:
- JuanManuelAmador
- Date:
- Fri Jun 06 08:52:28 2014 +0000
- Revision:
- 2:cc4a43d806e2
- Parent:
- 0:a5367bd4e404
Correci?n del baudrate de 112500 a 115200
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jjmedina | 0:a5367bd4e404 | 1 | |
jjmedina | 0:a5367bd4e404 | 2 | #include "Display1602.h" |
jjmedina | 0:a5367bd4e404 | 3 | |
jjmedina | 0:a5367bd4e404 | 4 | Display1602::Display1602(PinName registerSelect,PinName readWriteSelect,PinName readWriteEnable,PinName d0,PinName d1,PinName d2,PinName d3,PinName d4,PinName d5,PinName d6,PinName d7) |
jjmedina | 0:a5367bd4e404 | 5 | : rs(registerSelect), rw(readWriteSelect), e(readWriteEnable), data(d0,d1,d2,d3,d4,d5,d6,d7) |
jjmedina | 0:a5367bd4e404 | 6 | { |
jjmedina | 0:a5367bd4e404 | 7 | //To ensure we have waited 15ms after power up and VDD > 4.5v (don't know how to test VDD) |
jjmedina | 0:a5367bd4e404 | 8 | wait_ms(20); |
jjmedina | 0:a5367bd4e404 | 9 | |
jjmedina | 0:a5367bd4e404 | 10 | //The init commands always sent using the 4bit interface. |
jjmedina | 0:a5367bd4e404 | 11 | e = true; |
jjmedina | 0:a5367bd4e404 | 12 | |
jjmedina | 0:a5367bd4e404 | 13 | //Set interface to 8 bit mode |
jjmedina | 0:a5367bd4e404 | 14 | SendCommand(0x38); |
jjmedina | 0:a5367bd4e404 | 15 | wait_ms(1); |
jjmedina | 0:a5367bd4e404 | 16 | |
jjmedina | 0:a5367bd4e404 | 17 | //Display off |
jjmedina | 0:a5367bd4e404 | 18 | SendCommand(0x08); |
jjmedina | 0:a5367bd4e404 | 19 | wait_ms(1); |
jjmedina | 0:a5367bd4e404 | 20 | |
jjmedina | 0:a5367bd4e404 | 21 | Clear(); |
jjmedina | 0:a5367bd4e404 | 22 | |
jjmedina | 0:a5367bd4e404 | 23 | //Set the display to 2 line and 5x11 font. |
jjmedina | 0:a5367bd4e404 | 24 | SendCommand(0x06); |
jjmedina | 0:a5367bd4e404 | 25 | wait_ms(1); |
jjmedina | 0:a5367bd4e404 | 26 | |
jjmedina | 0:a5367bd4e404 | 27 | //Init done, turn display on. |
jjmedina | 0:a5367bd4e404 | 28 | SendCommand(0x0c); //No with no cursor. |
jjmedina | 0:a5367bd4e404 | 29 | wait_ms(10); |
jjmedina | 0:a5367bd4e404 | 30 | } |
jjmedina | 0:a5367bd4e404 | 31 | |
jjmedina | 0:a5367bd4e404 | 32 | void Display1602::Clear() |
jjmedina | 0:a5367bd4e404 | 33 | { |
jjmedina | 0:a5367bd4e404 | 34 | SendCommand(0x01); |
jjmedina | 0:a5367bd4e404 | 35 | wait_ms(2);//Docs say have to wait more than 1.53 milliseconds after clearing display. |
jjmedina | 0:a5367bd4e404 | 36 | } |
jjmedina | 0:a5367bd4e404 | 37 | |
jjmedina | 0:a5367bd4e404 | 38 | void Display1602::Print(const char *text) |
jjmedina | 0:a5367bd4e404 | 39 | { |
jjmedina | 0:a5367bd4e404 | 40 | int n = 16; |
jjmedina | 0:a5367bd4e404 | 41 | while (*text && n--) |
jjmedina | 0:a5367bd4e404 | 42 | { |
jjmedina | 0:a5367bd4e404 | 43 | SendChar(*text); |
jjmedina | 0:a5367bd4e404 | 44 | text++; |
jjmedina | 0:a5367bd4e404 | 45 | } |
jjmedina | 0:a5367bd4e404 | 46 | } |
jjmedina | 0:a5367bd4e404 | 47 | |
jjmedina | 0:a5367bd4e404 | 48 | void Display1602::printf(const char *format,...) |
jjmedina | 0:a5367bd4e404 | 49 | { |
jjmedina | 0:a5367bd4e404 | 50 | va_list args; |
jjmedina | 0:a5367bd4e404 | 51 | char buf[17]; |
jjmedina | 0:a5367bd4e404 | 52 | |
jjmedina | 0:a5367bd4e404 | 53 | va_start(args, format); |
jjmedina | 0:a5367bd4e404 | 54 | vsnprintf(buf,17,format, args); |
jjmedina | 0:a5367bd4e404 | 55 | va_end(args); |
jjmedina | 0:a5367bd4e404 | 56 | |
jjmedina | 0:a5367bd4e404 | 57 | Print(buf); |
jjmedina | 0:a5367bd4e404 | 58 | } |
jjmedina | 0:a5367bd4e404 | 59 | |
jjmedina | 0:a5367bd4e404 | 60 | void Display1602::SetXY(int x,int y) |
jjmedina | 0:a5367bd4e404 | 61 | { |
jjmedina | 0:a5367bd4e404 | 62 | if (y == 0) |
jjmedina | 0:a5367bd4e404 | 63 | { |
jjmedina | 0:a5367bd4e404 | 64 | SendCommand (0x80 | x); |
jjmedina | 0:a5367bd4e404 | 65 | } |
jjmedina | 0:a5367bd4e404 | 66 | else |
jjmedina | 0:a5367bd4e404 | 67 | { |
jjmedina | 0:a5367bd4e404 | 68 | SendCommand (0xC0 | x); |
jjmedina | 0:a5367bd4e404 | 69 | } |
jjmedina | 0:a5367bd4e404 | 70 | } |
jjmedina | 0:a5367bd4e404 | 71 | |
jjmedina | 0:a5367bd4e404 | 72 | void Display1602::SendCommand(int cmd) |
jjmedina | 0:a5367bd4e404 | 73 | { |
jjmedina | 0:a5367bd4e404 | 74 | rs = false;//read register |
jjmedina | 0:a5367bd4e404 | 75 | rw = false;//Write mode |
jjmedina | 0:a5367bd4e404 | 76 | e = true; |
jjmedina | 0:a5367bd4e404 | 77 | data = cmd; |
jjmedina | 0:a5367bd4e404 | 78 | wait_us(40);//Have to wait this time before we then drop the e line. Data sent on rising edge so has to be dropped. |
jjmedina | 0:a5367bd4e404 | 79 | e = false; |
jjmedina | 0:a5367bd4e404 | 80 | } |
jjmedina | 0:a5367bd4e404 | 81 | |
jjmedina | 0:a5367bd4e404 | 82 | void Display1602::SendChar(char c) |
jjmedina | 0:a5367bd4e404 | 83 | { |
jjmedina | 0:a5367bd4e404 | 84 | rs = true;//Writing data. |
jjmedina | 0:a5367bd4e404 | 85 | rw = false;//Write mode |
jjmedina | 0:a5367bd4e404 | 86 | e = true; |
jjmedina | 0:a5367bd4e404 | 87 | data = c; |
jjmedina | 0:a5367bd4e404 | 88 | wait_us(40);//Have to wait this time before we then drop the e line. Data sent on rising edge so has to be dropped. |
jjmedina | 0:a5367bd4e404 | 89 | e = false; |
jjmedina | 0:a5367bd4e404 | 90 | } |
jjmedina | 0:a5367bd4e404 | 91 |