AD-128160-UART制御用のライブラリ http://www.aitendo.co.jp/product/3119 gingaxさんのプログラムを参考に作らせてもらっています。 http://mbed.org/users/akira/libraries/AD128160/m159hi
Dependents: AD128160_HelloWorld
AD128160.cpp@3:d15cda2a5e91, 2011-12-13 (annotated)
- Committer:
- nucho
- Date:
- Tue Dec 13 15:37:06 2011 +0000
- Revision:
- 3:d15cda2a5e91
- Parent:
- 2:6f2db745808e
add textsetting(color,font size)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nucho | 0:2e2f3b389d8a | 1 | #include "AD128160.h" |
nucho | 0:2e2f3b389d8a | 2 | |
nucho | 0:2e2f3b389d8a | 3 | AD128160::AD128160(PinName tx,PinName reset):_device(tx,NC),_rst(reset) { |
nucho | 2:6f2db745808e | 4 | init(); |
nucho | 0:2e2f3b389d8a | 5 | } |
nucho | 0:2e2f3b389d8a | 6 | |
nucho | 0:2e2f3b389d8a | 7 | void AD128160::init() { |
nucho | 0:2e2f3b389d8a | 8 | reset(); |
nucho | 0:2e2f3b389d8a | 9 | brightness(300); |
nucho | 0:2e2f3b389d8a | 10 | cls(); |
nucho | 0:2e2f3b389d8a | 11 | locate(0,0); |
nucho | 0:2e2f3b389d8a | 12 | color(0xffff); |
nucho | 3:d15cda2a5e91 | 13 | |
nucho | 3:d15cda2a5e91 | 14 | _font_x=8; |
nucho | 3:d15cda2a5e91 | 15 | _font_y=16; |
nucho | 3:d15cda2a5e91 | 16 | _max_columns = LCD_WIDTH/_font_x; |
nucho | 3:d15cda2a5e91 | 17 | _max_rows = LCD_HEIGHT/_font_y; |
nucho | 3:d15cda2a5e91 | 18 | } |
nucho | 3:d15cda2a5e91 | 19 | |
nucho | 3:d15cda2a5e91 | 20 | int AD128160::_putc(int c) { |
nucho | 3:d15cda2a5e91 | 21 | if (c == '\n') { |
nucho | 3:d15cda2a5e91 | 22 | newline(); |
nucho | 3:d15cda2a5e91 | 23 | } else { |
nucho | 3:d15cda2a5e91 | 24 | int x = _column * _font_x; // FIXME: Char sizes |
nucho | 3:d15cda2a5e91 | 25 | int y = _row * _font_y; |
nucho | 3:d15cda2a5e91 | 26 | unsigned char data[5]; |
nucho | 3:d15cda2a5e91 | 27 | |
nucho | 3:d15cda2a5e91 | 28 | data[0]= x >> 8;//x upper 8bit |
nucho | 3:d15cda2a5e91 | 29 | data[1]= x & 0xFF;//x low 8bit |
nucho | 3:d15cda2a5e91 | 30 | data[2]= y >> 8; //y upper 8bit |
nucho | 3:d15cda2a5e91 | 31 | data[3]=y & 0xFF; //y low 8bit |
nucho | 3:d15cda2a5e91 | 32 | data[4]=c; |
nucho | 3:d15cda2a5e91 | 33 | cwrite(0x0B,data,5); |
nucho | 3:d15cda2a5e91 | 34 | |
nucho | 3:d15cda2a5e91 | 35 | _column++; |
nucho | 3:d15cda2a5e91 | 36 | if (_column >= _max_columns) { |
nucho | 3:d15cda2a5e91 | 37 | _row++; |
nucho | 3:d15cda2a5e91 | 38 | _column = 0; |
nucho | 3:d15cda2a5e91 | 39 | } |
nucho | 3:d15cda2a5e91 | 40 | if (_row >= _max_rows) { |
nucho | 3:d15cda2a5e91 | 41 | _row = 0; |
nucho | 3:d15cda2a5e91 | 42 | } |
nucho | 3:d15cda2a5e91 | 43 | } |
nucho | 3:d15cda2a5e91 | 44 | return c; |
nucho | 3:d15cda2a5e91 | 45 | } |
nucho | 3:d15cda2a5e91 | 46 | void AD128160::textSetting(int size,int rgb) { |
nucho | 3:d15cda2a5e91 | 47 | unsigned char data[4]; |
nucho | 3:d15cda2a5e91 | 48 | |
nucho | 3:d15cda2a5e91 | 49 | data[0]= size >> 8;//x upper 8bit |
nucho | 3:d15cda2a5e91 | 50 | data[1]= size & 0xFF;//x low 8bit |
nucho | 3:d15cda2a5e91 | 51 | data[2]= rgb >> 8; //y upper 8bit |
nucho | 3:d15cda2a5e91 | 52 | data[3]= rgb & 0xFF; //y low 8bit |
nucho | 3:d15cda2a5e91 | 53 | |
nucho | 3:d15cda2a5e91 | 54 | cwrite(0x81,data,4); |
nucho | 3:d15cda2a5e91 | 55 | |
nucho | 3:d15cda2a5e91 | 56 | switch (size) { |
nucho | 3:d15cda2a5e91 | 57 | case 0: |
nucho | 3:d15cda2a5e91 | 58 | _font_x=6; |
nucho | 3:d15cda2a5e91 | 59 | _font_y=10; |
nucho | 3:d15cda2a5e91 | 60 | break; |
nucho | 3:d15cda2a5e91 | 61 | case 1: |
nucho | 3:d15cda2a5e91 | 62 | _font_x=7; |
nucho | 3:d15cda2a5e91 | 63 | _font_y=13; |
nucho | 3:d15cda2a5e91 | 64 | break; |
nucho | 3:d15cda2a5e91 | 65 | case 3: |
nucho | 3:d15cda2a5e91 | 66 | _font_x=10; |
nucho | 3:d15cda2a5e91 | 67 | _font_y=20; |
nucho | 3:d15cda2a5e91 | 68 | break; |
nucho | 3:d15cda2a5e91 | 69 | case 4: |
nucho | 3:d15cda2a5e91 | 70 | _font_x=16; |
nucho | 3:d15cda2a5e91 | 71 | _font_y=32; |
nucho | 3:d15cda2a5e91 | 72 | break; |
nucho | 3:d15cda2a5e91 | 73 | default: |
nucho | 3:d15cda2a5e91 | 74 | _font_x=8; |
nucho | 3:d15cda2a5e91 | 75 | _font_y=16; |
nucho | 3:d15cda2a5e91 | 76 | break; |
nucho | 3:d15cda2a5e91 | 77 | } |
nucho | 3:d15cda2a5e91 | 78 | _max_columns = LCD_WIDTH/_font_x; |
nucho | 3:d15cda2a5e91 | 79 | _max_rows = LCD_HEIGHT/_font_y; |
nucho | 3:d15cda2a5e91 | 80 | |
nucho | 3:d15cda2a5e91 | 81 | locate(0,0); |
nucho | 3:d15cda2a5e91 | 82 | } |
nucho | 3:d15cda2a5e91 | 83 | |
nucho | 3:d15cda2a5e91 | 84 | |
nucho | 3:d15cda2a5e91 | 85 | void AD128160::cwrite(int command,unsigned char* data,int length) { |
nucho | 3:d15cda2a5e91 | 86 | unsigned char sum=0; |
nucho | 3:d15cda2a5e91 | 87 | _device.putc(0x55);//start code |
nucho | 3:d15cda2a5e91 | 88 | _device.putc(length+1); |
nucho | 3:d15cda2a5e91 | 89 | _device.putc(command); |
nucho | 3:d15cda2a5e91 | 90 | for (int i=0; i<length; i++) { |
nucho | 3:d15cda2a5e91 | 91 | _device.putc(data[i]); |
nucho | 3:d15cda2a5e91 | 92 | sum = sum+data[i]; |
nucho | 3:d15cda2a5e91 | 93 | } |
nucho | 3:d15cda2a5e91 | 94 | sum += command; |
nucho | 3:d15cda2a5e91 | 95 | _device.putc(sum);//check sum |
nucho | 3:d15cda2a5e91 | 96 | _device.putc(0xAA);//end core |
nucho | 0:2e2f3b389d8a | 97 | } |
nucho | 0:2e2f3b389d8a | 98 | |
nucho | 2:6f2db745808e | 99 | void AD128160::brightness(int value) { |
nucho | 3:d15cda2a5e91 | 100 | unsigned char data[2]; |
nucho | 3:d15cda2a5e91 | 101 | data[0] = (value & 0xff00)>>8; |
nucho | 3:d15cda2a5e91 | 102 | data[1] = value & 0x00ff; |
nucho | 2:6f2db745808e | 103 | |
nucho | 3:d15cda2a5e91 | 104 | cwrite(0x89,data,2); |
nucho | 0:2e2f3b389d8a | 105 | } |
nucho | 0:2e2f3b389d8a | 106 | |
nucho | 2:6f2db745808e | 107 | void AD128160::reset() { |
nucho | 0:2e2f3b389d8a | 108 | _rst = 0; //Reset |
nucho | 0:2e2f3b389d8a | 109 | wait(0.1); |
nucho | 0:2e2f3b389d8a | 110 | _rst = 1; |
nucho | 0:2e2f3b389d8a | 111 | wait(0.1); |
nucho | 0:2e2f3b389d8a | 112 | } |
nucho | 0:2e2f3b389d8a | 113 | |
nucho | 0:2e2f3b389d8a | 114 | |
nucho | 0:2e2f3b389d8a | 115 | void AD128160::speed(int baud) { |
nucho | 3:d15cda2a5e91 | 116 | unsigned char data[4]; |
nucho | 0:2e2f3b389d8a | 117 | |
nucho | 3:d15cda2a5e91 | 118 | data[0]=(baud&0xff000000)>>24; |
nucho | 3:d15cda2a5e91 | 119 | data[1]=(baud&0x00ff0000)>>16; |
nucho | 3:d15cda2a5e91 | 120 | data[2]=(baud&0x0000ff00)>>8; |
nucho | 3:d15cda2a5e91 | 121 | data[3]=baud&0x000000ff; |
nucho | 2:6f2db745808e | 122 | |
nucho | 3:d15cda2a5e91 | 123 | cwrite(0x8B,data,4); |
nucho | 3:d15cda2a5e91 | 124 | |
nucho | 0:2e2f3b389d8a | 125 | wait(0.1); |
nucho | 0:2e2f3b389d8a | 126 | _device.baud(baud); |
nucho | 2:6f2db745808e | 127 | |
nucho | 2:6f2db745808e | 128 | } |
nucho | 2:6f2db745808e | 129 | |
nucho | 3:d15cda2a5e91 | 130 | int AD128160::width() { |
nucho | 2:6f2db745808e | 131 | return LCD_WIDTH; |
nucho | 2:6f2db745808e | 132 | } |
nucho | 2:6f2db745808e | 133 | |
nucho | 3:d15cda2a5e91 | 134 | int AD128160::height() { |
nucho | 2:6f2db745808e | 135 | return LCD_HEIGHT; |
nucho | 2:6f2db745808e | 136 | } |
nucho | 2:6f2db745808e | 137 | |
nucho | 3:d15cda2a5e91 | 138 | int AD128160::columns() { |
nucho | 3:d15cda2a5e91 | 139 | return _max_columns; |
nucho | 2:6f2db745808e | 140 | } |
nucho | 2:6f2db745808e | 141 | |
nucho | 3:d15cda2a5e91 | 142 | int AD128160::rows() { |
nucho | 3:d15cda2a5e91 | 143 | return _max_rows; |
nucho | 0:2e2f3b389d8a | 144 | } |
nucho | 0:2e2f3b389d8a | 145 | |
nucho | 0:2e2f3b389d8a | 146 | void AD128160::bmp(int x0,int y0,int bmp_no) { |
nucho | 3:d15cda2a5e91 | 147 | unsigned char data[6]; |
nucho | 0:2e2f3b389d8a | 148 | |
nucho | 3:d15cda2a5e91 | 149 | data[0] = x0 >> 8; |
nucho | 3:d15cda2a5e91 | 150 | data[1] = x0 & 0xFF; |
nucho | 3:d15cda2a5e91 | 151 | data[2] = y0 >> 8; |
nucho | 3:d15cda2a5e91 | 152 | data[3] = y0 & 0xff; |
nucho | 3:d15cda2a5e91 | 153 | data[4] = bmp_no >> 8; |
nucho | 3:d15cda2a5e91 | 154 | data[5] = bmp_no & 0xFF; |
nucho | 3:d15cda2a5e91 | 155 | |
nucho | 3:d15cda2a5e91 | 156 | cwrite(0x09,data,6); |
nucho | 0:2e2f3b389d8a | 157 | } |
nucho | 0:2e2f3b389d8a | 158 | |
nucho | 0:2e2f3b389d8a | 159 | void AD128160::cls() { |
nucho | 3:d15cda2a5e91 | 160 | unsigned char data[1]; |
nucho | 3:d15cda2a5e91 | 161 | data[0]=0x55; |
nucho | 3:d15cda2a5e91 | 162 | cwrite(0x80,data,1); |
nucho | 2:6f2db745808e | 163 | |
nucho | 0:2e2f3b389d8a | 164 | locate(0,0); |
nucho | 0:2e2f3b389d8a | 165 | } |
nucho | 0:2e2f3b389d8a | 166 | |
nucho | 0:2e2f3b389d8a | 167 | void AD128160::locate(int column, int row) { |
nucho | 0:2e2f3b389d8a | 168 | _column = column; |
nucho | 0:2e2f3b389d8a | 169 | _row = row; |
nucho | 0:2e2f3b389d8a | 170 | } |
nucho | 0:2e2f3b389d8a | 171 | |
nucho | 3:d15cda2a5e91 | 172 | void AD128160::puts(char* s) { |
nucho | 3:d15cda2a5e91 | 173 | int data_len=strlen(s)+4; |
nucho | 3:d15cda2a5e91 | 174 | unsigned char data[data_len]; |
nucho | 3:d15cda2a5e91 | 175 | int x = _column * _font_x; // FIXME: Char sizes |
nucho | 3:d15cda2a5e91 | 176 | int y = _row * _font_y; |
nucho | 3:d15cda2a5e91 | 177 | |
nucho | 3:d15cda2a5e91 | 178 | data[0] = x >> 8; |
nucho | 3:d15cda2a5e91 | 179 | data[1] = x & 0xFF; |
nucho | 3:d15cda2a5e91 | 180 | data[2] = y >> 8; |
nucho | 3:d15cda2a5e91 | 181 | data[3] = y & 0xFF; |
nucho | 3:d15cda2a5e91 | 182 | |
nucho | 3:d15cda2a5e91 | 183 | strcpy((char*)(data+4),s); |
nucho | 3:d15cda2a5e91 | 184 | cwrite(0x0B,data,data_len); |
nucho | 0:2e2f3b389d8a | 185 | } |
nucho | 0:2e2f3b389d8a | 186 | |
nucho | 3:d15cda2a5e91 | 187 | void AD128160::textBackground(bool mode,int rgb) { |
nucho | 3:d15cda2a5e91 | 188 | unsigned char data[3]; |
nucho | 0:2e2f3b389d8a | 189 | |
nucho | 3:d15cda2a5e91 | 190 | if (mode) data[0]=1; |
nucho | 3:d15cda2a5e91 | 191 | else data[0]=0; |
nucho | 3:d15cda2a5e91 | 192 | data[1]=(rgb >> 8) & 0xff; |
nucho | 3:d15cda2a5e91 | 193 | data[2]=(rgb & 0xff); |
nucho | 3:d15cda2a5e91 | 194 | cwrite(0x85,data,3); |
nucho | 0:2e2f3b389d8a | 195 | } |
nucho | 0:2e2f3b389d8a | 196 | |
nucho | 0:2e2f3b389d8a | 197 | void AD128160::color(int rgb) { |
nucho | 3:d15cda2a5e91 | 198 | unsigned char data[2]; |
nucho | 0:2e2f3b389d8a | 199 | |
nucho | 3:d15cda2a5e91 | 200 | data[0]=(rgb >> 8) & 0xff; |
nucho | 3:d15cda2a5e91 | 201 | data[1]=(rgb & 0xff); |
nucho | 3:d15cda2a5e91 | 202 | cwrite(0x84,data,2); |
nucho | 0:2e2f3b389d8a | 203 | } |
nucho | 0:2e2f3b389d8a | 204 | |
nucho | 0:2e2f3b389d8a | 205 | void AD128160::newline(void) { |
nucho | 0:2e2f3b389d8a | 206 | _column = 0; |
nucho | 0:2e2f3b389d8a | 207 | _row++; |
nucho | 2:6f2db745808e | 208 | |
nucho | 3:d15cda2a5e91 | 209 | if (_row >= _max_rows) { |
nucho | 0:2e2f3b389d8a | 210 | _row = 0; |
nucho | 0:2e2f3b389d8a | 211 | } |
nucho | 0:2e2f3b389d8a | 212 | } |
nucho | 0:2e2f3b389d8a | 213 | |
nucho | 0:2e2f3b389d8a | 214 | void AD128160::pixel(int x0,int y0) { |
nucho | 3:d15cda2a5e91 | 215 | unsigned char data[4]; |
nucho | 0:2e2f3b389d8a | 216 | |
nucho | 3:d15cda2a5e91 | 217 | data[0] = x0 >> 8; |
nucho | 3:d15cda2a5e91 | 218 | data[1] = x0 & 0xFF; |
nucho | 3:d15cda2a5e91 | 219 | data[2] = y0 >> 8; |
nucho | 3:d15cda2a5e91 | 220 | data[3] = y0 & 0xff; |
nucho | 3:d15cda2a5e91 | 221 | |
nucho | 3:d15cda2a5e91 | 222 | cwrite(0x01,data,4); |
nucho | 0:2e2f3b389d8a | 223 | } |
nucho | 0:2e2f3b389d8a | 224 | |
nucho | 0:2e2f3b389d8a | 225 | void AD128160::box(int x0,int y0,int x1,int y1,int paint) { |
nucho | 3:d15cda2a5e91 | 226 | unsigned char data[8]; |
nucho | 3:d15cda2a5e91 | 227 | |
nucho | 3:d15cda2a5e91 | 228 | data[0] = x0 >> 8; |
nucho | 3:d15cda2a5e91 | 229 | data[1] = x0 & 0xFF; |
nucho | 3:d15cda2a5e91 | 230 | data[2] = y0 >> 8; |
nucho | 3:d15cda2a5e91 | 231 | data[3] = y0 & 0xff; |
nucho | 3:d15cda2a5e91 | 232 | data[4] = x1 >> 8; |
nucho | 3:d15cda2a5e91 | 233 | data[5] = x1 & 0xFF; |
nucho | 3:d15cda2a5e91 | 234 | data[6] = y1 >> 8; |
nucho | 3:d15cda2a5e91 | 235 | data[7] = y1 & 0xff; |
nucho | 3:d15cda2a5e91 | 236 | |
nucho | 3:d15cda2a5e91 | 237 | if (paint) cwrite(0x04,data,8); |
nucho | 3:d15cda2a5e91 | 238 | else cwrite(0x03,data,8); |
nucho | 0:2e2f3b389d8a | 239 | } |
nucho | 0:2e2f3b389d8a | 240 | |
nucho | 0:2e2f3b389d8a | 241 | void AD128160::circle(int x0,int y0,int r,int paint) { |
nucho | 3:d15cda2a5e91 | 242 | unsigned char data[6]; |
nucho | 3:d15cda2a5e91 | 243 | |
nucho | 3:d15cda2a5e91 | 244 | data[0] = x0 >> 8; |
nucho | 3:d15cda2a5e91 | 245 | data[1] = x0 & 0xFF; |
nucho | 3:d15cda2a5e91 | 246 | data[2] = y0 >> 8; |
nucho | 3:d15cda2a5e91 | 247 | data[3] = y0 & 0xff; |
nucho | 3:d15cda2a5e91 | 248 | data[4] = r >> 8; |
nucho | 3:d15cda2a5e91 | 249 | data[5] = r & 0xFF; |
nucho | 3:d15cda2a5e91 | 250 | |
nucho | 3:d15cda2a5e91 | 251 | if (paint) cwrite(0x06,data,6); |
nucho | 3:d15cda2a5e91 | 252 | else cwrite(0x05,data,6); |
nucho | 0:2e2f3b389d8a | 253 | } |
nucho | 0:2e2f3b389d8a | 254 | |
nucho | 0:2e2f3b389d8a | 255 | void AD128160::line(int x0,int y0,int x1,int y1) { |
nucho | 3:d15cda2a5e91 | 256 | unsigned char data[8]; |
nucho | 0:2e2f3b389d8a | 257 | |
nucho | 3:d15cda2a5e91 | 258 | data[0] = x0 >> 8; |
nucho | 3:d15cda2a5e91 | 259 | data[1] = x0 & 0xFF; |
nucho | 3:d15cda2a5e91 | 260 | data[2] = y0 >> 8; |
nucho | 3:d15cda2a5e91 | 261 | data[3] = y0 & 0xff; |
nucho | 3:d15cda2a5e91 | 262 | data[4] = x1 >> 8; |
nucho | 3:d15cda2a5e91 | 263 | data[5] = x1 & 0xFF; |
nucho | 3:d15cda2a5e91 | 264 | data[6] = y1 >> 8; |
nucho | 3:d15cda2a5e91 | 265 | data[7] = y1 & 0xff; |
nucho | 3:d15cda2a5e91 | 266 | |
nucho | 3:d15cda2a5e91 | 267 | cwrite(0x02,data,8); |
nucho | 0:2e2f3b389d8a | 268 | } |