AD-128160-UART制御用のライブラリ http://www.aitendo.co.jp/product/3119 gingaxさんのプログラムを参考に作らせてもらっています。 http://mbed.org/users/akira/libraries/AD128160/m159hi

Dependents:   AD128160_HelloWorld

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AD128160.cpp Source File

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 }