AD-128160-UART制御用のライブラリ http://www.aitendo.co.jp/product/3119 gingaxさんのプログラムを参考に作らせてもらっています。 http://mbed.org/users/akira/libraries/AD128160/m159hi
Dependents: AD128160_HelloWorld
AD128160.cpp
00001 #include "AD128160.h" 00002 00003 AD128160::AD128160(PinName tx,PinName reset):_device(tx,NC),_rst(reset) { 00004 init(); 00005 } 00006 00007 void AD128160::init() { 00008 reset(); 00009 brightness(300); 00010 cls(); 00011 locate(0,0); 00012 color(0xffff); 00013 00014 _font_x=8; 00015 _font_y=16; 00016 _max_columns = LCD_WIDTH/_font_x; 00017 _max_rows = LCD_HEIGHT/_font_y; 00018 } 00019 00020 int AD128160::_putc(int c) { 00021 if (c == '\n') { 00022 newline(); 00023 } else { 00024 int x = _column * _font_x; // FIXME: Char sizes 00025 int y = _row * _font_y; 00026 unsigned char data[5]; 00027 00028 data[0]= x >> 8;//x upper 8bit 00029 data[1]= x & 0xFF;//x low 8bit 00030 data[2]= y >> 8; //y upper 8bit 00031 data[3]=y & 0xFF; //y low 8bit 00032 data[4]=c; 00033 cwrite(0x0B,data,5); 00034 00035 _column++; 00036 if (_column >= _max_columns) { 00037 _row++; 00038 _column = 0; 00039 } 00040 if (_row >= _max_rows) { 00041 _row = 0; 00042 } 00043 } 00044 return c; 00045 } 00046 void AD128160::textSetting(int size,int rgb) { 00047 unsigned char data[4]; 00048 00049 data[0]= size >> 8;//x upper 8bit 00050 data[1]= size & 0xFF;//x low 8bit 00051 data[2]= rgb >> 8; //y upper 8bit 00052 data[3]= rgb & 0xFF; //y low 8bit 00053 00054 cwrite(0x81,data,4); 00055 00056 switch (size) { 00057 case 0: 00058 _font_x=6; 00059 _font_y=10; 00060 break; 00061 case 1: 00062 _font_x=7; 00063 _font_y=13; 00064 break; 00065 case 3: 00066 _font_x=10; 00067 _font_y=20; 00068 break; 00069 case 4: 00070 _font_x=16; 00071 _font_y=32; 00072 break; 00073 default: 00074 _font_x=8; 00075 _font_y=16; 00076 break; 00077 } 00078 _max_columns = LCD_WIDTH/_font_x; 00079 _max_rows = LCD_HEIGHT/_font_y; 00080 00081 locate(0,0); 00082 } 00083 00084 00085 void AD128160::cwrite(int command,unsigned char* data,int length) { 00086 unsigned char sum=0; 00087 _device.putc(0x55);//start code 00088 _device.putc(length+1); 00089 _device.putc(command); 00090 for (int i=0; i<length; i++) { 00091 _device.putc(data[i]); 00092 sum = sum+data[i]; 00093 } 00094 sum += command; 00095 _device.putc(sum);//check sum 00096 _device.putc(0xAA);//end core 00097 } 00098 00099 void AD128160::brightness(int value) { 00100 unsigned char data[2]; 00101 data[0] = (value & 0xff00)>>8; 00102 data[1] = value & 0x00ff; 00103 00104 cwrite(0x89,data,2); 00105 } 00106 00107 void AD128160::reset() { 00108 _rst = 0; //Reset 00109 wait(0.1); 00110 _rst = 1; 00111 wait(0.1); 00112 } 00113 00114 00115 void AD128160::speed(int baud) { 00116 unsigned char data[4]; 00117 00118 data[0]=(baud&0xff000000)>>24; 00119 data[1]=(baud&0x00ff0000)>>16; 00120 data[2]=(baud&0x0000ff00)>>8; 00121 data[3]=baud&0x000000ff; 00122 00123 cwrite(0x8B,data,4); 00124 00125 wait(0.1); 00126 _device.baud(baud); 00127 00128 } 00129 00130 int AD128160::width() { 00131 return LCD_WIDTH; 00132 } 00133 00134 int AD128160::height() { 00135 return LCD_HEIGHT; 00136 } 00137 00138 int AD128160::columns() { 00139 return _max_columns; 00140 } 00141 00142 int AD128160::rows() { 00143 return _max_rows; 00144 } 00145 00146 void AD128160::bmp(int x0,int y0,int bmp_no) { 00147 unsigned char data[6]; 00148 00149 data[0] = x0 >> 8; 00150 data[1] = x0 & 0xFF; 00151 data[2] = y0 >> 8; 00152 data[3] = y0 & 0xff; 00153 data[4] = bmp_no >> 8; 00154 data[5] = bmp_no & 0xFF; 00155 00156 cwrite(0x09,data,6); 00157 } 00158 00159 void AD128160::cls() { 00160 unsigned char data[1]; 00161 data[0]=0x55; 00162 cwrite(0x80,data,1); 00163 00164 locate(0,0); 00165 } 00166 00167 void AD128160::locate(int column, int row) { 00168 _column = column; 00169 _row = row; 00170 } 00171 00172 void AD128160::puts(char* s) { 00173 int data_len=strlen(s)+4; 00174 unsigned char data[data_len]; 00175 int x = _column * _font_x; // FIXME: Char sizes 00176 int y = _row * _font_y; 00177 00178 data[0] = x >> 8; 00179 data[1] = x & 0xFF; 00180 data[2] = y >> 8; 00181 data[3] = y & 0xFF; 00182 00183 strcpy((char*)(data+4),s); 00184 cwrite(0x0B,data,data_len); 00185 } 00186 00187 void AD128160::textBackground(bool mode,int rgb) { 00188 unsigned char data[3]; 00189 00190 if (mode) data[0]=1; 00191 else data[0]=0; 00192 data[1]=(rgb >> 8) & 0xff; 00193 data[2]=(rgb & 0xff); 00194 cwrite(0x85,data,3); 00195 } 00196 00197 void AD128160::color(int rgb) { 00198 unsigned char data[2]; 00199 00200 data[0]=(rgb >> 8) & 0xff; 00201 data[1]=(rgb & 0xff); 00202 cwrite(0x84,data,2); 00203 } 00204 00205 void AD128160::newline(void) { 00206 _column = 0; 00207 _row++; 00208 00209 if (_row >= _max_rows) { 00210 _row = 0; 00211 } 00212 } 00213 00214 void AD128160::pixel(int x0,int y0) { 00215 unsigned char data[4]; 00216 00217 data[0] = x0 >> 8; 00218 data[1] = x0 & 0xFF; 00219 data[2] = y0 >> 8; 00220 data[3] = y0 & 0xff; 00221 00222 cwrite(0x01,data,4); 00223 } 00224 00225 void AD128160::box(int x0,int y0,int x1,int y1,int paint) { 00226 unsigned char data[8]; 00227 00228 data[0] = x0 >> 8; 00229 data[1] = x0 & 0xFF; 00230 data[2] = y0 >> 8; 00231 data[3] = y0 & 0xff; 00232 data[4] = x1 >> 8; 00233 data[5] = x1 & 0xFF; 00234 data[6] = y1 >> 8; 00235 data[7] = y1 & 0xff; 00236 00237 if (paint) cwrite(0x04,data,8); 00238 else cwrite(0x03,data,8); 00239 } 00240 00241 void AD128160::circle(int x0,int y0,int r,int paint) { 00242 unsigned char data[6]; 00243 00244 data[0] = x0 >> 8; 00245 data[1] = x0 & 0xFF; 00246 data[2] = y0 >> 8; 00247 data[3] = y0 & 0xff; 00248 data[4] = r >> 8; 00249 data[5] = r & 0xFF; 00250 00251 if (paint) cwrite(0x06,data,6); 00252 else cwrite(0x05,data,6); 00253 } 00254 00255 void AD128160::line(int x0,int y0,int x1,int y1) { 00256 unsigned char data[8]; 00257 00258 data[0] = x0 >> 8; 00259 data[1] = x0 & 0xFF; 00260 data[2] = y0 >> 8; 00261 data[3] = y0 & 0xff; 00262 data[4] = x1 >> 8; 00263 data[5] = x1 & 0xFF; 00264 data[6] = y1 >> 8; 00265 data[7] = y1 & 0xff; 00266 00267 cwrite(0x02,data,8); 00268 }
Generated on Thu Jul 21 2022 17:59:06 by
