AD-128160-UART制御用のライブラリ http://www.aitendo.co.jp/product/3119 gingaxさんのプログラムを参考に作らせてもらっています。 http://mbed.org/users/akira/libraries/AD128160/m159hi
Dependents: AD128160_HelloWorld
Diff: AD128160.cpp
- Revision:
- 0:2e2f3b389d8a
- Child:
- 2:6f2db745808e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AD128160.cpp Mon Dec 12 02:09:19 2011 +0000 @@ -0,0 +1,386 @@ +#include "AD128160.h" + + +AD128160::AD128160(PinName tx,PinName reset):_device(tx,NC),_rst(reset) { + init(); +} + +int AD128160::_putc(int c) { + if (c == '\n') { + newline(); + } else { + int x = _column * 8; // FIXME: Char sizes + int y = _row * 16; + + unsigned char sum; + unsigned char x0H; + unsigned char x0L; + unsigned char y0H; + unsigned char y0L; + unsigned char datalen; + x0H = x >> 8; + x0L = x & 0xFF; + y0H = y >> 8; + y0L = y & 0xFF; + datalen = 6; + _device.putc(0x55); + _device.putc(datalen); + _device.putc(0x0B); // command ASCII Print + _device.putc(x0H); //x upper 8bit + _device.putc(x0L); //x low 8bit + _device.putc(y0H); //y upper 8bit + _device.putc(y0L); //y low 8bit + _device.putc(c); + sum = c+x0H+x0L+y0H+y0L+0x0B; + _device.putc(sum);//sumch + _device.putc(0xAA); + + _column++; + if (_column >= LCD_COLS) { + _row++; + _column = 0; + } + if (_row >= LCD_ROWS) { + _row = 0; + } + } + return c; +} + +void AD128160::init() { + reset(); + brightness(300); + cls(); + locate(0,0); + color(0xffff); +} + +void AD128160::brightness(int value){ + unsigned char sum=0; + unsigned char byte[2]; + + byte[0] = (value & 0xff00)>>8; + byte[1] = value & 0x00ff; + + sum+=byte[0]+byte[1]+0x89; + + _device.putc(0x55);//Back light On + _device.putc(0x03); + _device.putc(0x89); + _device.putc(byte[0]); + _device.putc(byte[1]); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::reset(){ + _rst = 0; //Reset + wait(0.1); + _rst = 1; + wait(0.1); +} + + +void AD128160::speed(int baud) { + unsigned char sum=0; + + unsigned char byte[4]; + byte[0] = (baud&0xff000000)>>24; + byte[1] = (baud&0x00ff0000)>>16; + byte[2] = (baud&0x0000ff00)>>8; + byte[3] = baud&0x000000ff; + + sum += byte[0]+byte[1]+byte[2]+byte[3]+0x8B; + + _device.putc(0x55); + _device.putc(0x05); + _device.putc(0x8B); + _device.putc(byte[0]); + _device.putc(byte[1]); + _device.putc(byte[2]); + _device.putc(byte[3]); + + _device.putc(sum); + _device.putc(0xAA); + wait(0.1); + _device.baud(baud); + +} + +void AD128160::bmp(int x0,int y0,int bmp_no) { + unsigned char x0H; + unsigned char x0L; + unsigned char y0H; + unsigned char y0L; + unsigned char rH; + unsigned char rL; + unsigned char sum; + + x0H = x0 >> 8; + x0L = x0 & 0xFF; + y0H = y0 >> 8; + y0L = y0 & 0xff; + rH = bmp_no >> 8; + rL = bmp_no & 0xFF; + sum = x0H+x0L+y0H+y0L+rH+rL+0x09; + _device.putc(0x55); + _device.putc(0x07); + _device.putc(0x09);//command + _device.putc(x0H); + _device.putc(x0L); + _device.putc(y0H); + _device.putc(y0L); + _device.putc(rH); + _device.putc(rL); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::cls() { + _device.putc(0x55);// Clear + _device.putc(0x02); + _device.putc(0x80); + _device.putc(0x55); + _device.putc(0xD5); + _device.putc(0xAA); + + locate(0,0); +} + +void AD128160::locate(int column, int row) { + _column = column; + _row = row; +} + +void AD128160::puts( char s[98]) { + unsigned char sum=0; + unsigned char x0H; + unsigned char x0L; + unsigned char y0H; + unsigned char y0L; + unsigned char datalen; + x0H = _column >> 8; + x0L = _column & 0xFF; + y0H = _row >> 8; + y0L = _row & 0xFF; + datalen = strlen(s)+5; + _device.putc(0x55); + _device.putc(datalen); + _device.putc(0x0B); // command ASCII Print + _device.putc(x0H); //x upper 8bit + _device.putc(x0L); //x low 8bit + _device.putc(y0H); //y upper 8bit + _device.putc(y0L); //y low 8bit + for (int a=0; a<strlen(s); a++) { + _device.putc(s[a]); + sum = sum+s[a]; + } + sum = sum+x0H+x0L+y0H+y0L+0x0B; + _device.putc(sum);//sumcheck + _device.putc(0xAA); +} + + +void AD128160::color2(int c1,int c2) { + //int c1; + //int c2; + int sum; + + //c1=(rgb >> 8) & 0xff; + //c2=(rgb & 0xff); + sum=c1+c2+0x84; + _device.putc(0x55); + _device.putc(0x03); + _device.putc(0x84); + _device.putc(c1); + _device.putc(c2); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::backgroudColor(int rgb) { + int c1; + int c2; + int sum; + int mode=1; + + c1=(rgb >> 8) & 0xff; + c2=(rgb & 0xff); + sum=mode+c1+c2+0x85; + _device.putc(0x55); + _device.putc(0x04); + _device.putc(0x85); + _device.putc(mode); + _device.putc(c1); + _device.putc(c2); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::color(int rgb) { + int c1; + int c2; + int sum; + + c1=(rgb >> 8) & 0xff; + c2=(rgb & 0xff); + sum=c1+c2+0x84; + _device.putc(0x55); + _device.putc(0x03); + _device.putc(0x84); + _device.putc(c1); + _device.putc(c2); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::newline(void) { + _column = 0; + _row++; + + if (_row >= LCD_ROWS) { + _row = 0; + } +} + +void AD128160::pixel(int x0,int y0) { + unsigned char x0H; + unsigned char x0L; + unsigned char y0H; + unsigned char y0L; + unsigned char sum; + + x0H = x0 >> 8; + x0L = x0 & 0xFF; + y0H = y0 >> 8; + y0L = y0 & 0xff; + + sum = x0H+x0L+y0H+y0L+0x01; + _device.putc(0x55); + _device.putc(0x05); + _device.putc(0x01);//command + _device.putc(x0H); + _device.putc(x0L); + _device.putc(y0H); + _device.putc(y0L); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::box(int x0,int y0,int x1,int y1,int paint) { + unsigned char x0H; + unsigned char x0L; + unsigned char x1H; + unsigned char x1L; + unsigned char y0H; + unsigned char y0L; + unsigned char y1H; + unsigned char y1L; + unsigned char sum; + unsigned char cmd; + switch (paint) { + case 1: + cmd = 0x04; + break; + default: + cmd =0x03; + break; + } + x0H = x0 >> 8; + x0L = x0 & 0xFF; + y0H = y0 >> 8; + y0L = y0 & 0xff; + x1H = x1 >> 8; + x1L = x1 & 0xFF; + y1H = y1 >> 8; + y1L = y1 & 0xff; + sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+cmd; + _device.putc(0x55);//Box + _device.putc(0x09); + _device.putc(cmd);//command + _device.putc(x0H); + _device.putc(x0L); + _device.putc(y0H); + _device.putc(y0L); + _device.putc(x1H); + _device.putc(x1L); + _device.putc(y1H); + _device.putc(y1L); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::circle(int x0,int y0,int r,int paint) { + unsigned char x0H; + unsigned char x0L; + unsigned char y0H; + unsigned char y0L; + unsigned char rH; + unsigned char rL; + unsigned char sum; + unsigned char cmd; + switch (paint) { + case 0: + cmd = 0x05; + break; + case 1: + cmd = 0x06; + break; + default: + cmd =0x05; + break; + } + x0H = x0 >> 8; + x0L = x0 & 0xFF; + y0H = y0 >> 8; + y0L = y0 & 0xff; + rH = r >> 8; + rL = r & 0xFF; + sum = x0H+x0L+y0H+y0L+rH+rL+cmd; + _device.putc(0x55); + _device.putc(0x07); + _device.putc(cmd);//command + _device.putc(x0H); + _device.putc(x0L); + _device.putc(y0H); + _device.putc(y0L); + _device.putc(rH); + _device.putc(rL); + _device.putc(sum); + _device.putc(0xAA); +} + +void AD128160::line(int x0,int y0,int x1,int y1) { + unsigned char x0H; + unsigned char x0L; + unsigned char x1H; + unsigned char x1L; + unsigned char y0H; + unsigned char y0L; + unsigned char y1H; + unsigned char y1L; + unsigned char sum; + + x0H = x0 >> 8; + x0L = x0 & 0xFF; + y0H = y0 >> 8; + y0L = y0 & 0xff; + x1H = x1 >> 8; + x1L = x1 & 0xFF; + y1H = y1 >> 8; + y1L = y1 & 0xff; + sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+02; + _device.putc(0x55); + _device.putc(0x09); + _device.putc(0x02);//command + _device.putc(x0H); + _device.putc(x0L); + _device.putc(y0H); + _device.putc(y0L); + _device.putc(x1H); + _device.putc(x1L); + _device.putc(y1H); + _device.putc(y1L); + _device.putc(sum); + _device.putc(0xAA); +}