Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Sun Jul 17 2022 14:45:24 by
1.7.2
nucho