Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 #define DATA_SIZE 128*128
00004 LocalFileSystem local("local");
00005 
00006 DigitalOut CS(p21);
00007 DigitalOut A0(p22);
00008 DigitalOut E(p23);
00009 DigitalOut WRB(p24);
00010 DigitalOut RES(p25);
00011 
00012 BusOut P1(p10, p11, p12, p13, p14, p15, p16, p17);
00013 
00014 Timer t;
00015 
00016 void WriteCOM(unsigned char a) {
00017     CS=0;
00018     E=1;
00019     A0=0;
00020     P1=a;
00021     WRB=0;
00022     WRB=1;
00023     CS=1;
00024 }
00025 
00026 void WriteDAT(unsigned char b) {
00027     CS=0;
00028     E=1;
00029     A0=1;
00030     P1=b;
00031     WRB=0;
00032     WRB=1;
00033     CS=1;
00034 }
00035 
00036 void init_lcd(void) {
00037     RES=1;
00038     wait_ms(100);
00039     RES=0;
00040     wait_ms(100);
00041     RES=1;
00042     wait_ms(120);
00043 
00044     WriteCOM(0x01);
00045     wait_ms(50);
00046 
00047     WriteCOM(0x11);//SLEEP OUT
00048     wait_ms(200);
00049 
00050     WriteCOM(0xFF);
00051     WriteDAT(0x40);
00052     WriteDAT(0x03);
00053     WriteDAT(0x1A);
00054 
00055     WriteCOM(0xd9);
00056     WriteDAT(0x60);
00057     WriteCOM(0xc7);
00058     WriteDAT(0x90);
00059     wait_ms(200);
00060 
00061     WriteCOM(0xB1);
00062     WriteDAT(0x04);
00063     WriteDAT(0x25);
00064     WriteDAT(0x18);
00065 
00066     WriteCOM(0xB2);
00067     WriteDAT(0x04);
00068     WriteDAT(0x25);
00069     WriteDAT(0x18);
00070 
00071     WriteCOM(0xB3);
00072     WriteDAT(0x04);
00073     WriteDAT(0x25);
00074     WriteDAT(0x18);
00075     WriteDAT(0x04);
00076     WriteDAT(0x25);
00077     WriteDAT(0x18);
00078 
00079     WriteCOM(0xB4);
00080     WriteDAT(0x03);
00081 
00082     WriteCOM(0xB6);
00083     WriteDAT(0x15);
00084     WriteDAT(0x02);
00085 
00086     WriteCOM(0xC0);// POWER CONTROL 1 GVDD&VCI1
00087     WriteDAT(0x02);
00088     WriteDAT(0x70);
00089 
00090     WriteCOM(0xC1);// POWER CONTROL 2 GVDD&VCI1
00091     WriteDAT(0x07);
00092 
00093     WriteCOM(0xC2);// POWER CONTROL 3 GVDD&VCI1
00094     WriteDAT(0x01);
00095     WriteDAT(0x01);
00096 
00097     WriteCOM(0xC3);// POWER CONTROL 4 GVDD&VCI1
00098     WriteDAT(0x02);
00099     WriteDAT(0x07);
00100 
00101     WriteCOM(0xC4);// POWER CONTROL 5 GVDD&VCI1
00102     WriteDAT(0x02);
00103     WriteDAT(0x04);
00104 
00105     WriteCOM(0xFC);// POWER CONTROL 6 GVDD&VCI1
00106     WriteDAT(0x11);
00107     WriteDAT(0x17);
00108 
00109     WriteCOM(0xC5);//VCOMH&VCOML
00110     WriteDAT(0x3c);
00111     WriteDAT(0x4f);
00112 
00113     WriteCOM(0x36);//MV,MX,MY,RGB
00114     WriteDAT(0x88);
00115 
00116 
00117     WriteCOM(0x3a);//GAMMA SET BY REGISTER
00118     WriteDAT(0x05);
00119 
00120 //***********************GAMMA*************************
00121     WriteCOM(0xE0);
00122     WriteDAT(0x06);
00123     WriteDAT(0x0E);
00124     WriteDAT(0x05);
00125     WriteDAT(0x20);
00126     WriteDAT(0x27);
00127     WriteDAT(0x23);
00128     WriteDAT(0x1C);
00129     WriteDAT(0x21);
00130     WriteDAT(0x20);
00131     WriteDAT(0x1C);
00132     WriteDAT(0x26);
00133     WriteDAT(0x2F);
00134     WriteDAT(0x00);
00135     WriteDAT(0x03);
00136     WriteDAT(0x00);
00137     WriteDAT(0x24);
00138 
00139     WriteCOM(0xE1);
00140     WriteDAT(0x06);
00141     WriteDAT(0x10);
00142     WriteDAT(0x05);
00143     WriteDAT(0x21);
00144     WriteDAT(0x27);
00145     WriteDAT(0x22);
00146     WriteDAT(0x1C);
00147     WriteDAT(0x21);
00148     WriteDAT(0x1F);
00149     WriteDAT(0x1D);
00150     WriteDAT(0x27);
00151     WriteDAT(0x2F);
00152     WriteDAT(0x05);
00153     WriteDAT(0x03);
00154     WriteDAT(0x00);
00155     WriteDAT(0x3F);
00156 
00157 //***************************RAM ADDRESS*******************
00158     WriteCOM(0x2A);
00159     WriteDAT(0x00);
00160     WriteDAT(0x02);
00161     WriteDAT(0x00);
00162     WriteDAT(0x81);
00163 
00164     WriteCOM(0x2B);
00165     WriteDAT(0x00);
00166     WriteDAT(0x03);
00167     WriteDAT(0x00);
00168     WriteDAT(0x82);
00169 
00170     WriteCOM(0x29);
00171     wait_ms(100);
00172 
00173     WriteCOM(0x2C);
00174 }
00175 
00176 int main() {
00177     FILE *fpi;
00178     int i;
00179     unsigned char  idat;
00180     unsigned char dat,dat2;
00181 
00182     init_lcd();
00183 
00184     if ((fpi=fopen("/local/sample.bmp", "rb")) == NULL) {
00185         fprintf(stderr, "input file open error\n");
00186         exit(1);
00187     }
00188 
00189     for (i=0;i<0x36;i++)//bitmap headder throw
00190         fread(&idat, sizeof(unsigned char), 1, fpi);
00191 
00192     for (i=0; i<DATA_SIZE; i++) {
00193         fread(&dat, sizeof(unsigned char), 1, fpi);
00194         fread(&dat2, sizeof(unsigned char), 1, fpi);
00195         
00196         dat2 = (dat2 << 1) | (dat >> 7);
00197         dat = ((dat & 0x60) << 1) | (dat & 0x1F);
00198 
00199         WriteDAT(dat2);
00200         WriteDAT(dat);
00201     }
00202     fclose(fpi);
00203 }