LCD For I2C

Committer:
pruek
Date:
Sat Dec 05 19:19:31 2015 +0000
Revision:
0:ef783944caa1
Child:
1:a8cb70204513
LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pruek 0:ef783944caa1 1 #include "LCDTaonoi.h"
pruek 0:ef783944caa1 2
pruek 0:ef783944caa1 3 /*
pruek 0:ef783944caa1 4 int main()
pruek 0:ef783944caa1 5 {
pruek 0:ef783944caa1 6 // int ack;
pruek 0:ef783944caa1 7 //char cmd[2];
pruek 0:ef783944caa1 8
pruek 0:ef783944caa1 9 wait(0.015);
pruek 0:ef783944caa1 10 //cmd[0] = 0x0C;
pruek 0:ef783944caa1 11 //ack = lcd.write(addr,cmd,1);
pruek 0:ef783944caa1 12 //pc.printf("%d\n",ack);
pruek 0:ef783944caa1 13
pruek 0:ef783944caa1 14
pruek 0:ef783944caa1 15 //cmd[0] = 0x3C;
pruek 0:ef783944caa1 16 //ack = lcd.write(addr,cmd,1);
pruek 0:ef783944caa1 17 //pc.printf("%d\n",ack);
pruek 0:ef783944caa1 18
pruek 0:ef783944caa1 19
pruek 0:ef783944caa1 20
pruek 0:ef783944caa1 21 //CLS
pruek 0:ef783944caa1 22 Command(0x01);
pruek 0:ef783944caa1 23
pruek 0:ef783944caa1 24
pruek 0:ef783944caa1 25 //Begin
pruek 0:ef783944caa1 26 Command(0x3);
pruek 0:ef783944caa1 27 wait(0.005);
pruek 0:ef783944caa1 28 Command(0x3);
pruek 0:ef783944caa1 29 wait_us(100);
pruek 0:ef783944caa1 30 Command(0x3);
pruek 0:ef783944caa1 31 Command(0x2);
pruek 0:ef783944caa1 32 //Command(0x2);
pruek 0:ef783944caa1 33 //Command(0x8);
pruek 0:ef783944caa1 34 Command(0x28);
pruek 0:ef783944caa1 35 //Command(0x0);
pruek 0:ef783944caa1 36 //Command(0xC);
pruek 0:ef783944caa1 37 Command(0x0C);
pruek 0:ef783944caa1 38 //Command(0x0);
pruek 0:ef783944caa1 39 //Command(0x6);
pruek 0:ef783944caa1 40 Command(0x06);
pruek 0:ef783944caa1 41 //Begin
pruek 0:ef783944caa1 42 char data[8] = "LIEWS";
pruek 0:ef783944caa1 43 SendData("PRUEK");
pruek 0:ef783944caa1 44 //Command(0x8);
pruek 0:ef783944caa1 45 //Command(0x0);
pruek 0:ef783944caa1 46 //Command(0x80);
pruek 0:ef783944caa1 47 //Command(0x0);
pruek 0:ef783944caa1 48 //Command(0x6);
pruek 0:ef783944caa1 49 //Command(0x5,1);
pruek 0:ef783944caa1 50 //Command(0x0,1);
pruek 0:ef783944caa1 51 //Command('P',1);
pruek 0:ef783944caa1 52 //Command('R',1);
pruek 0:ef783944caa1 53 //Command('U',1);
pruek 0:ef783944caa1 54 //Command('E',1);
pruek 0:ef783944caa1 55 //Command('K',1);
pruek 0:ef783944caa1 56 //Command(0xC0);
pruek 0:ef783944caa1 57 setCursor(0,3);
pruek 0:ef783944caa1 58 SendData(data);
pruek 0:ef783944caa1 59 //Command('L',1);
pruek 0:ef783944caa1 60 //Command('I',1);
pruek 0:ef783944caa1 61 //Command('E',1);
pruek 0:ef783944caa1 62 //Command('W',1);
pruek 0:ef783944caa1 63 //Command('S',1);
pruek 0:ef783944caa1 64 //Command(0x5,1);
pruek 0:ef783944caa1 65 //Command(0x2,1);
pruek 0:ef783944caa1 66 //Command(0x5,1);
pruek 0:ef783944caa1 67 //Command(0x5,1);
pruek 0:ef783944caa1 68 //Command(0x4,1);
pruek 0:ef783944caa1 69 //Command(0x5,1);
pruek 0:ef783944caa1 70 //Command(0x4,1);
pruek 0:ef783944caa1 71 //Command(0xB,1);
pruek 0:ef783944caa1 72
pruek 0:ef783944caa1 73
pruek 0:ef783944caa1 74 //CLS
pruek 0:ef783944caa1 75 //Command(0x0);
pruek 0:ef783944caa1 76 //Command(0x1);
pruek 0:ef783944caa1 77
pruek 0:ef783944caa1 78 }*/
pruek 0:ef783944caa1 79 LCDTaonoi::LCDTaonoi(PinName _SDA, PinName _SCL , int _addr):lcd(_SDA,_SCL),addr(_addr)
pruek 0:ef783944caa1 80 {
pruek 0:ef783944caa1 81
pruek 0:ef783944caa1 82 wait(0.015);
pruek 0:ef783944caa1 83
pruek 0:ef783944caa1 84 Command(0x01);//CLS
pruek 0:ef783944caa1 85
pruek 0:ef783944caa1 86 //Begin
pruek 0:ef783944caa1 87 Command(0x3);
pruek 0:ef783944caa1 88 wait(0.005);
pruek 0:ef783944caa1 89 Command(0x3);
pruek 0:ef783944caa1 90 wait_us(100);
pruek 0:ef783944caa1 91 Command(0x3);
pruek 0:ef783944caa1 92 Command(0x2);
pruek 0:ef783944caa1 93 Command(0x28); //Funtionset DL(4bit,8bit) = 0 N(2line,4line) = 1 F(5x8,5x10) = 0
pruek 0:ef783944caa1 94 //Command(0x0);
pruek 0:ef783944caa1 95 //Command(0xC);
pruek 0:ef783944caa1 96 Command(0x0C); //Display on/off D(Display) = 1 C(Cursor) = 0 B(Blinking) = 0
pruek 0:ef783944caa1 97 //Command(0x0);
pruek 0:ef783944caa1 98 //Command(0x6);
pruek 0:ef783944caa1 99 Command(0x06); //Entry mode set I/D(Decrement,Increment) = 1 S(No shift) = 0
pruek 0:ef783944caa1 100
pruek 0:ef783944caa1 101
pruek 0:ef783944caa1 102 }
pruek 0:ef783944caa1 103 void LCDTaonoi::Command (char value, int Mode )
pruek 0:ef783944caa1 104 {
pruek 0:ef783944caa1 105 char _command[2];
pruek 0:ef783944caa1 106 char Temp[2];
pruek 0:ef783944caa1 107 char _value[2];
pruek 0:ef783944caa1 108
pruek 0:ef783944caa1 109
pruek 0:ef783944caa1 110 Temp[0] = 0x0C;
pruek 0:ef783944caa1 111 Temp[1] = 0x08;
pruek 0:ef783944caa1 112 if(Mode == 0) {
pruek 0:ef783944caa1 113 _command[0] = 0x0C;
pruek 0:ef783944caa1 114 _command[1] = 0x08;
pruek 0:ef783944caa1 115 } else {
pruek 0:ef783944caa1 116 _command[0] = 0x0D;
pruek 0:ef783944caa1 117 _command[1] = 0x09;
pruek 0:ef783944caa1 118 }
pruek 0:ef783944caa1 119 _value[0] = value & 0xF0;
pruek 0:ef783944caa1 120 _value[0] = _value[0] | _command[0];
pruek 0:ef783944caa1 121 lcd.write(addr,&_value[0],1);
pruek 0:ef783944caa1 122 wait_us(40);
pruek 0:ef783944caa1 123 _value[0] = value & 0xF0;
pruek 0:ef783944caa1 124 _value[0] = _value[0] | _command[1];
pruek 0:ef783944caa1 125 lcd.write(addr,&_value[0],1);
pruek 0:ef783944caa1 126 wait_us(40);
pruek 0:ef783944caa1 127
pruek 0:ef783944caa1 128 //lcd.write(addr,&Temp[0],1);
pruek 0:ef783944caa1 129 //wait_us(40);
pruek 0:ef783944caa1 130
pruek 0:ef783944caa1 131
pruek 0:ef783944caa1 132 _value[1] = value << 4;
pruek 0:ef783944caa1 133 _value[1] = _value[1] | _command[0];
pruek 0:ef783944caa1 134 lcd.write(addr,&_value[1],1);
pruek 0:ef783944caa1 135 wait_us(40);
pruek 0:ef783944caa1 136 _value[1] = value << 4;
pruek 0:ef783944caa1 137 _value[1] = _value[1] | _command[1];
pruek 0:ef783944caa1 138 lcd.write(addr,&_value[1],1);
pruek 0:ef783944caa1 139 wait_us(40);
pruek 0:ef783944caa1 140 lcd.write(addr,&Temp[0],1);
pruek 0:ef783944caa1 141 }
pruek 0:ef783944caa1 142
pruek 0:ef783944caa1 143 int LCDTaonoi::address(int column, int row)
pruek 0:ef783944caa1 144 {
pruek 0:ef783944caa1 145
pruek 0:ef783944caa1 146 switch (row) {
pruek 0:ef783944caa1 147 case 0:
pruek 0:ef783944caa1 148 return 0x80 + column;
pruek 0:ef783944caa1 149 case 1:
pruek 0:ef783944caa1 150 return 0xc0 + column;
pruek 0:ef783944caa1 151 case 2:
pruek 0:ef783944caa1 152 return 0x94 + column;
pruek 0:ef783944caa1 153 case 3:
pruek 0:ef783944caa1 154 return 0xd4 + column;
pruek 0:ef783944caa1 155 }
pruek 0:ef783944caa1 156 return 0;
pruek 0:ef783944caa1 157 }
pruek 0:ef783944caa1 158
pruek 0:ef783944caa1 159 void LCDTaonoi::setCursor (int column, int row)
pruek 0:ef783944caa1 160 {
pruek 0:ef783944caa1 161 int adr;
pruek 0:ef783944caa1 162 adr = address(column,row);
pruek 0:ef783944caa1 163 Command(adr);
pruek 0:ef783944caa1 164
pruek 0:ef783944caa1 165 }
pruek 0:ef783944caa1 166
pruek 0:ef783944caa1 167 void LCDTaonoi::SendData (char* Data)
pruek 0:ef783944caa1 168 {
pruek 0:ef783944caa1 169 for(int i = 0;; i++) {
pruek 0:ef783944caa1 170 if(Data[i]=='\0')
pruek 0:ef783944caa1 171 break;
pruek 0:ef783944caa1 172
pruek 0:ef783944caa1 173 Command(Data[i],1);
pruek 0:ef783944caa1 174
pruek 0:ef783944caa1 175 }
pruek 0:ef783944caa1 176
pruek 0:ef783944caa1 177 }