Esta versión v6 pasa a ser el nuevo master. Funciona correctamente

Dependencies:   ADXL345 Display1602 MSCFileSystem SDFileSystem mbed FATFileSystem

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?

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