first commit
Dependents: Aitendo_2P-REL225L01
LCD192GC00.cpp@0:d5aa6eeefe77, 2016-09-30 (annotated)
- Committer:
- og
- Date:
- Fri Sep 30 13:24:12 2016 +0000
- Revision:
- 0:d5aa6eeefe77
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
og | 0:d5aa6eeefe77 | 1 | #include "LCD192GC00.h" |
og | 0:d5aa6eeefe77 | 2 | #include "ASCII12dot.h" //ASCII 12x12dot |
og | 0:d5aa6eeefe77 | 3 | |
og | 0:d5aa6eeefe77 | 4 | LCD192GC00::LCD192GC00( |
og | 0:d5aa6eeefe77 | 5 | PinName rd, PinName wr, PinName rs, PinName cs, PinName rst, |
og | 0:d5aa6eeefe77 | 6 | PinName d0, PinName d1, PinName d2, PinName d3, |
og | 0:d5aa6eeefe77 | 7 | PinName d4, PinName d5, PinName d6, PinName d7 |
og | 0:d5aa6eeefe77 | 8 | ): |
og | 0:d5aa6eeefe77 | 9 | _rd(rd), _wr(wr), _rs(rs), _cs(cs), _rst(rst), |
og | 0:d5aa6eeefe77 | 10 | _d(d0, d1, d2, d3, d4, d5, d6, d7) |
og | 0:d5aa6eeefe77 | 11 | { |
og | 0:d5aa6eeefe77 | 12 | |
og | 0:d5aa6eeefe77 | 13 | _rd=1; |
og | 0:d5aa6eeefe77 | 14 | _wr=1; |
og | 0:d5aa6eeefe77 | 15 | _rs=1; |
og | 0:d5aa6eeefe77 | 16 | _cs=1; |
og | 0:d5aa6eeefe77 | 17 | _rst = 1; |
og | 0:d5aa6eeefe77 | 18 | |
og | 0:d5aa6eeefe77 | 19 | } |
og | 0:d5aa6eeefe77 | 20 | |
og | 0:d5aa6eeefe77 | 21 | void LCD192GC00::_write(uint8_t rs, uint8_t d){ |
og | 0:d5aa6eeefe77 | 22 | _cs=0; |
og | 0:d5aa6eeefe77 | 23 | _rd=1; |
og | 0:d5aa6eeefe77 | 24 | _rs=rs; |
og | 0:d5aa6eeefe77 | 25 | |
og | 0:d5aa6eeefe77 | 26 | _d.output(); |
og | 0:d5aa6eeefe77 | 27 | _d=d; |
og | 0:d5aa6eeefe77 | 28 | _wr=0; |
og | 0:d5aa6eeefe77 | 29 | //_delay(1); |
og | 0:d5aa6eeefe77 | 30 | _wr=1; |
og | 0:d5aa6eeefe77 | 31 | |
og | 0:d5aa6eeefe77 | 32 | _cs=1; |
og | 0:d5aa6eeefe77 | 33 | } |
og | 0:d5aa6eeefe77 | 34 | |
og | 0:d5aa6eeefe77 | 35 | void LCD192GC00::lcd_Init(){ |
og | 0:d5aa6eeefe77 | 36 | wait_ms(20); |
og | 0:d5aa6eeefe77 | 37 | _rd = 1; |
og | 0:d5aa6eeefe77 | 38 | _cs = 1; // CS High |
og | 0:d5aa6eeefe77 | 39 | _wr = 1; // WR High |
og | 0:d5aa6eeefe77 | 40 | _rst = 0; // Reset LCD |
og | 0:d5aa6eeefe77 | 41 | wait_ms(0x10); // 1msec wait |
og | 0:d5aa6eeefe77 | 42 | _rst = 1; // Clear RESET |
og | 0:d5aa6eeefe77 | 43 | wait_ms(25); // 100msec wait |
og | 0:d5aa6eeefe77 | 44 | |
og | 0:d5aa6eeefe77 | 45 | lcd_cmd(0xB0); |
og | 0:d5aa6eeefe77 | 46 | lcd_data(0xCA); |
og | 0:d5aa6eeefe77 | 47 | lcd_data(0x90); |
og | 0:d5aa6eeefe77 | 48 | lcd_data(0x37); |
og | 0:d5aa6eeefe77 | 49 | lcd_data(0x01); |
og | 0:d5aa6eeefe77 | 50 | lcd_data(0x48); |
og | 0:d5aa6eeefe77 | 51 | lcd_data(0x01); |
og | 0:d5aa6eeefe77 | 52 | lcd_data(0x40); |
og | 0:d5aa6eeefe77 | 53 | lcd_data(0x04); |
og | 0:d5aa6eeefe77 | 54 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 55 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 56 | |
og | 0:d5aa6eeefe77 | 57 | lcd_cmd(0x26); |
og | 0:d5aa6eeefe77 | 58 | lcd_data(0x01); |
og | 0:d5aa6eeefe77 | 59 | |
og | 0:d5aa6eeefe77 | 60 | lcd_cmd(0xB1); |
og | 0:d5aa6eeefe77 | 61 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 62 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 63 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 64 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 65 | lcd_data(0x08); |
og | 0:d5aa6eeefe77 | 66 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 67 | lcd_data(0x04); |
og | 0:d5aa6eeefe77 | 68 | lcd_data(0x10); |
og | 0:d5aa6eeefe77 | 69 | lcd_data(0x48); |
og | 0:d5aa6eeefe77 | 70 | lcd_data(0x82); |
og | 0:d5aa6eeefe77 | 71 | lcd_data(0x20); |
og | 0:d5aa6eeefe77 | 72 | lcd_data(0x84); |
og | 0:d5aa6eeefe77 | 73 | lcd_data(0x92); |
og | 0:d5aa6eeefe77 | 74 | lcd_data(0x2A); |
og | 0:d5aa6eeefe77 | 75 | lcd_data(0x52); |
og | 0:d5aa6eeefe77 | 76 | lcd_data(0xAA); |
og | 0:d5aa6eeefe77 | 77 | lcd_data(0x5A); |
og | 0:d5aa6eeefe77 | 78 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 79 | lcd_data(0x2A); |
og | 0:d5aa6eeefe77 | 80 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 81 | lcd_data(0xAE); |
og | 0:d5aa6eeefe77 | 82 | lcd_data(0xFF); |
og | 0:d5aa6eeefe77 | 83 | lcd_data(0xFE); |
og | 0:d5aa6eeefe77 | 84 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 85 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 86 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 87 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 88 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 89 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 90 | lcd_data(0x04); |
og | 0:d5aa6eeefe77 | 91 | |
og | 0:d5aa6eeefe77 | 92 | lcd_cmd(0xB2); |
og | 0:d5aa6eeefe77 | 93 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 94 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 95 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 96 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 97 | lcd_data(0x04); |
og | 0:d5aa6eeefe77 | 98 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 99 | lcd_data(0x02); |
og | 0:d5aa6eeefe77 | 100 | lcd_data(0x08); |
og | 0:d5aa6eeefe77 | 101 | lcd_data(0x48); |
og | 0:d5aa6eeefe77 | 102 | lcd_data(0x82); |
og | 0:d5aa6eeefe77 | 103 | lcd_data(0x20); |
og | 0:d5aa6eeefe77 | 104 | lcd_data(0x84); |
og | 0:d5aa6eeefe77 | 105 | lcd_data(0x42); |
og | 0:d5aa6eeefe77 | 106 | lcd_data(0x48); |
og | 0:d5aa6eeefe77 | 107 | lcd_data(0x92); |
og | 0:d5aa6eeefe77 | 108 | lcd_data(0x2A); |
og | 0:d5aa6eeefe77 | 109 | lcd_data(0x52); |
og | 0:d5aa6eeefe77 | 110 | lcd_data(0xAA); |
og | 0:d5aa6eeefe77 | 111 | lcd_data(0x5A); |
og | 0:d5aa6eeefe77 | 112 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 113 | lcd_data(0x2A); |
og | 0:d5aa6eeefe77 | 114 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 115 | lcd_data(0xAE); |
og | 0:d5aa6eeefe77 | 116 | lcd_data(0xFF); |
og | 0:d5aa6eeefe77 | 117 | lcd_data(0xFE); |
og | 0:d5aa6eeefe77 | 118 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 119 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 120 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 121 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 122 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 123 | lcd_data(0x00); |
og | 0:d5aa6eeefe77 | 124 | lcd_data(0x04); |
og | 0:d5aa6eeefe77 | 125 | |
og | 0:d5aa6eeefe77 | 126 | lcd_cmd(MODE); // Entry Mode |
og | 0:d5aa6eeefe77 | 127 | lcd_data(0x29); |
og | 0:d5aa6eeefe77 | 128 | //color mode |
og | 0:d5aa6eeefe77 | 129 | lcd_cmd(COLMOD); |
og | 0:d5aa6eeefe77 | 130 | lcd_data(0x05); //65k color |
og | 0:d5aa6eeefe77 | 131 | //Inteface mode |
og | 0:d5aa6eeefe77 | 132 | lcd_cmd(IFMOD); |
og | 0:d5aa6eeefe77 | 133 | lcd_data(0x00); //8bit mode |
og | 0:d5aa6eeefe77 | 134 | |
og | 0:d5aa6eeefe77 | 135 | |
og | 0:d5aa6eeefe77 | 136 | lcd_cmd(0xBA); |
og | 0:d5aa6eeefe77 | 137 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 138 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 139 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 140 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 141 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 142 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 143 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 144 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 145 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 146 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 147 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 148 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 149 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 150 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 151 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 152 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 153 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 154 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 155 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 156 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 157 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 158 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 159 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 160 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 161 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 162 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 163 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 164 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 165 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 166 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 167 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 168 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 169 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 170 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 171 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 172 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 173 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 174 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 175 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 176 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 177 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 178 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 179 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 180 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 181 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 182 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 183 | lcd_data(0x55); |
og | 0:d5aa6eeefe77 | 184 | |
og | 0:d5aa6eeefe77 | 185 | |
og | 0:d5aa6eeefe77 | 186 | // |
og | 0:d5aa6eeefe77 | 187 | lcd_cmd(SLPOUT); |
og | 0:d5aa6eeefe77 | 188 | lcd_cmd(DISON); // 表示オン |
og | 0:d5aa6eeefe77 | 189 | }; |
og | 0:d5aa6eeefe77 | 190 | |
og | 0:d5aa6eeefe77 | 191 | void LCD192GC00::lcd_Clear(unsigned short Color){ |
og | 0:d5aa6eeefe77 | 192 | int i, j; |
og | 0:d5aa6eeefe77 | 193 | |
og | 0:d5aa6eeefe77 | 194 | lcd_cmd(PASET); // ページ開始終了アドレスセット |
og | 0:d5aa6eeefe77 | 195 | lcd_data(0); |
og | 0:d5aa6eeefe77 | 196 | lcd_data(0x0C); |
og | 0:d5aa6eeefe77 | 197 | lcd_data((unsigned char)((ENDPAGE+0x0C)>>8)); |
og | 0:d5aa6eeefe77 | 198 | lcd_data((unsigned char)(ENDPAGE+0x0C)); |
og | 0:d5aa6eeefe77 | 199 | lcd_cmd(CASET); // コラム開始、終了アドレスセット |
og | 0:d5aa6eeefe77 | 200 | lcd_data(0); |
og | 0:d5aa6eeefe77 | 201 | lcd_data(0x08); |
og | 0:d5aa6eeefe77 | 202 | lcd_data((unsigned char)((ENDCOL+0x08)>>8)); |
og | 0:d5aa6eeefe77 | 203 | lcd_data((unsigned char)(ENDCOL+0x08)); |
og | 0:d5aa6eeefe77 | 204 | lcd_cmd(RAMWR); |
og | 0:d5aa6eeefe77 | 205 | for(j=0; j<4; j++){ |
og | 0:d5aa6eeefe77 | 206 | for(i=0; i<(ENDCOL+1)*80; i++){ |
og | 0:d5aa6eeefe77 | 207 | lcd_data((unsigned char)(Color>>8)); |
og | 0:d5aa6eeefe77 | 208 | lcd_data((unsigned char)Color); |
og | 0:d5aa6eeefe77 | 209 | } |
og | 0:d5aa6eeefe77 | 210 | } |
og | 0:d5aa6eeefe77 | 211 | } |
og | 0:d5aa6eeefe77 | 212 | |
og | 0:d5aa6eeefe77 | 213 | /*********************************** |
og | 0:d5aa6eeefe77 | 214 | * 1ピクセル表示関数 |
og | 0:d5aa6eeefe77 | 215 | * 座標は(0,0)-(161,131) |
og | 0:d5aa6eeefe77 | 216 | ***********************************/ |
og | 0:d5aa6eeefe77 | 217 | void LCD192GC00::lcd_Pixel(short Xpos, short Ypos, unsigned short Color){ |
og | 0:d5aa6eeefe77 | 218 | |
og | 0:d5aa6eeefe77 | 219 | if((Xpos<=ENDCOL) && (Ypos<=ENDPAGE)){ |
og | 0:d5aa6eeefe77 | 220 | Xpos += 0x08; |
og | 0:d5aa6eeefe77 | 221 | Ypos += 0x0C; |
og | 0:d5aa6eeefe77 | 222 | lcd_cmd(PASET); // 行(RAW)アドレスセット |
og | 0:d5aa6eeefe77 | 223 | lcd_data(Ypos>>8); |
og | 0:d5aa6eeefe77 | 224 | lcd_data(Ypos); |
og | 0:d5aa6eeefe77 | 225 | lcd_data(Ypos>>8); |
og | 0:d5aa6eeefe77 | 226 | lcd_data(Ypos); |
og | 0:d5aa6eeefe77 | 227 | lcd_cmd(CASET); // 列(COLUM)アドレスセット |
og | 0:d5aa6eeefe77 | 228 | lcd_data((unsigned char)((Xpos)>>8)); |
og | 0:d5aa6eeefe77 | 229 | lcd_data((unsigned char)(Xpos)); |
og | 0:d5aa6eeefe77 | 230 | lcd_data((unsigned char)(Xpos>>8)); |
og | 0:d5aa6eeefe77 | 231 | lcd_data((unsigned char)(Xpos)); |
og | 0:d5aa6eeefe77 | 232 | lcd_cmd(RAMWR); // 1ピクセル書き込み |
og | 0:d5aa6eeefe77 | 233 | lcd_data(Color >> 8); // 16ビットカラー |
og | 0:d5aa6eeefe77 | 234 | lcd_data(Color); |
og | 0:d5aa6eeefe77 | 235 | } |
og | 0:d5aa6eeefe77 | 236 | } |
og | 0:d5aa6eeefe77 | 237 | |
og | 0:d5aa6eeefe77 | 238 | /*************************** |
og | 0:d5aa6eeefe77 | 239 | * 直線描画関数 |
og | 0:d5aa6eeefe77 | 240 | ***************************/ |
og | 0:d5aa6eeefe77 | 241 | #define abs(a) (((a)>0) ? (a) : -(a)) |
og | 0:d5aa6eeefe77 | 242 | void LCD192GC00::lcd_Line(short x0, short y0, short x1, short y1, unsigned short Color) |
og | 0:d5aa6eeefe77 | 243 | { |
og | 0:d5aa6eeefe77 | 244 | short steep, t; |
og | 0:d5aa6eeefe77 | 245 | short deltax, deltay, error; |
og | 0:d5aa6eeefe77 | 246 | short x, y; |
og | 0:d5aa6eeefe77 | 247 | short ystep; |
og | 0:d5aa6eeefe77 | 248 | |
og | 0:d5aa6eeefe77 | 249 | y0=ENDPAGE-y0; // Y座標反転 |
og | 0:d5aa6eeefe77 | 250 | y1=ENDPAGE-y1; |
og | 0:d5aa6eeefe77 | 251 | /// 差分の大きいほうを求める |
og | 0:d5aa6eeefe77 | 252 | steep = (abs(y1 - y0) > abs(x1 - x0)); |
og | 0:d5aa6eeefe77 | 253 | /// x、yの入れ替え |
og | 0:d5aa6eeefe77 | 254 | if(steep){ |
og | 0:d5aa6eeefe77 | 255 | t = x0; x0 = y0; y0 = t; |
og | 0:d5aa6eeefe77 | 256 | t = x1; x1 = y1; y1 = t; |
og | 0:d5aa6eeefe77 | 257 | } |
og | 0:d5aa6eeefe77 | 258 | if(x0 > x1) { |
og | 0:d5aa6eeefe77 | 259 | t = x0; x0 = x1; x1 = t; |
og | 0:d5aa6eeefe77 | 260 | t = y0; y0 = y1; y1 = t; |
og | 0:d5aa6eeefe77 | 261 | } |
og | 0:d5aa6eeefe77 | 262 | deltax = x1 - x0; // 傾き計算 |
og | 0:d5aa6eeefe77 | 263 | deltay = abs(y1 - y0); |
og | 0:d5aa6eeefe77 | 264 | error = 0; |
og | 0:d5aa6eeefe77 | 265 | y = y0; |
og | 0:d5aa6eeefe77 | 266 | /// 傾きでステップの正負を切り替え |
og | 0:d5aa6eeefe77 | 267 | if(y0 < y1) ystep = 1; else ystep = -1; |
og | 0:d5aa6eeefe77 | 268 | /// 直線を点で描画 |
og | 0:d5aa6eeefe77 | 269 | for(x=x0; x<x1; x++) { |
og | 0:d5aa6eeefe77 | 270 | if(steep) lcd_Pixel(y,x,Color); else lcd_Pixel(x,y,Color); |
og | 0:d5aa6eeefe77 | 271 | error += deltay; |
og | 0:d5aa6eeefe77 | 272 | if((error << 1) >= deltax) { |
og | 0:d5aa6eeefe77 | 273 | y += ystep; |
og | 0:d5aa6eeefe77 | 274 | error -= deltax; |
og | 0:d5aa6eeefe77 | 275 | } |
og | 0:d5aa6eeefe77 | 276 | } |
og | 0:d5aa6eeefe77 | 277 | } |
og | 0:d5aa6eeefe77 | 278 | /***************************************** |
og | 0:d5aa6eeefe77 | 279 | * ANK文字表示関数 12x12ドット |
og | 0:d5aa6eeefe77 | 280 | * 320/12=26文字/行 240/14=17行 |
og | 0:d5aa6eeefe77 | 281 | * (0, 0) - (25, 16)の範囲 |
og | 0:d5aa6eeefe77 | 282 | ******************************************/ |
og | 0:d5aa6eeefe77 | 283 | void LCD192GC00::lcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2){ |
og | 0:d5aa6eeefe77 | 284 | unsigned char j, i, Mask; |
og | 0:d5aa6eeefe77 | 285 | |
og | 0:d5aa6eeefe77 | 286 | if((colum < XChar) && (line < YLine)){ // 範囲チェック |
og | 0:d5aa6eeefe77 | 287 | // ANK表示出力 3バイトの2ラインずつを6回繰り返す |
og | 0:d5aa6eeefe77 | 288 | for(j=0; j<6; j++){ |
og | 0:d5aa6eeefe77 | 289 | // 8ドット連続部の表示 |
og | 0:d5aa6eeefe77 | 290 | Mask = 0x80; |
og | 0:d5aa6eeefe77 | 291 | for(i=0; i<8; i++){ |
og | 0:d5aa6eeefe77 | 292 | // 1ライン目前半8ドット表示 |
og | 0:d5aa6eeefe77 | 293 | if((ANKFont[letter][j*3] & Mask) != 0) |
og | 0:d5aa6eeefe77 | 294 | lcd_Pixel(colum*12+i, line*14+j*2, Color1); |
og | 0:d5aa6eeefe77 | 295 | else |
og | 0:d5aa6eeefe77 | 296 | lcd_Pixel(colum*12+i, line*14+j*2, Color2); //背景色 |
og | 0:d5aa6eeefe77 | 297 | // 2ライン目後半8ドット表示 |
og | 0:d5aa6eeefe77 | 298 | if((ANKFont[letter][j*3+2] & Mask) != 0) |
og | 0:d5aa6eeefe77 | 299 | lcd_Pixel(colum*12+i+4, line*14+j*2+1, Color1); |
og | 0:d5aa6eeefe77 | 300 | else |
og | 0:d5aa6eeefe77 | 301 | lcd_Pixel(colum*12+i+4, line*14+j*2+1, Color2); //背景色 |
og | 0:d5aa6eeefe77 | 302 | Mask = Mask >> 1; |
og | 0:d5aa6eeefe77 | 303 | } |
og | 0:d5aa6eeefe77 | 304 | // 分割部4ドットずつ表示 |
og | 0:d5aa6eeefe77 | 305 | Mask = 0x80; |
og | 0:d5aa6eeefe77 | 306 | // 1ライン目後半4ドット表示 |
og | 0:d5aa6eeefe77 | 307 | for(i=0; i<4; i++){ |
og | 0:d5aa6eeefe77 | 308 | if((ANKFont[letter][j*3+1] & Mask) != 0) |
og | 0:d5aa6eeefe77 | 309 | lcd_Pixel(colum*12+i+8, line*14+j*2, Color1); |
og | 0:d5aa6eeefe77 | 310 | else |
og | 0:d5aa6eeefe77 | 311 | lcd_Pixel(colum*12+i+8, line*14+j*2, Color2); //背景色 |
og | 0:d5aa6eeefe77 | 312 | Mask = Mask >> 1; |
og | 0:d5aa6eeefe77 | 313 | } |
og | 0:d5aa6eeefe77 | 314 | // 2ライン目前半4ドット表示 |
og | 0:d5aa6eeefe77 | 315 | for(i=4; i<8; i++){ |
og | 0:d5aa6eeefe77 | 316 | if((ANKFont[letter][j*3+1] & Mask) != 0) |
og | 0:d5aa6eeefe77 | 317 | lcd_Pixel(colum*12+i-4, line*14+j*2+1, Color1); |
og | 0:d5aa6eeefe77 | 318 | else |
og | 0:d5aa6eeefe77 | 319 | lcd_Pixel(colum*12+i-4, line*14+j*2+1, Color2); //背景色 |
og | 0:d5aa6eeefe77 | 320 | Mask = Mask >> 1; |
og | 0:d5aa6eeefe77 | 321 | } |
og | 0:d5aa6eeefe77 | 322 | } |
og | 0:d5aa6eeefe77 | 323 | } |
og | 0:d5aa6eeefe77 | 324 | } |
og | 0:d5aa6eeefe77 | 325 | /****************************** |
og | 0:d5aa6eeefe77 | 326 | * 文字列描画関数 |
og | 0:d5aa6eeefe77 | 327 | * 16文字x20行で指定 |
og | 0:d5aa6eeefe77 | 328 | ******************************/ |
og | 0:d5aa6eeefe77 | 329 | void LCD192GC00::lcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2) |
og | 0:d5aa6eeefe77 | 330 | { |
og | 0:d5aa6eeefe77 | 331 | while (*s){ |
og | 0:d5aa6eeefe77 | 332 | lcd_Char(colum++, line, *s++, Color1, Color2); |
og | 0:d5aa6eeefe77 | 333 | if(colum >= XChar){ |
og | 0:d5aa6eeefe77 | 334 | line++; |
og | 0:d5aa6eeefe77 | 335 | colum = 0; |
og | 0:d5aa6eeefe77 | 336 | if(line >= YLine) |
og | 0:d5aa6eeefe77 | 337 | line = 0; |
og | 0:d5aa6eeefe77 | 338 | } |
og | 0:d5aa6eeefe77 | 339 | } |
og | 0:d5aa6eeefe77 | 340 | } |
og | 0:d5aa6eeefe77 | 341 | |
og | 0:d5aa6eeefe77 | 342 | /********************************************************* |
og | 0:d5aa6eeefe77 | 343 | * イメージ表示関数 |
og | 0:d5aa6eeefe77 | 344 | * データは縦方向8ライン分が1バイトで格納されている |
og | 0:d5aa6eeefe77 | 345 | * 128×128/8=2kバイト/画面 |
og | 0:d5aa6eeefe77 | 346 | * グラフィック色(Color1)と背景色(Color2)両方を指定 |
og | 0:d5aa6eeefe77 | 347 | **********************************************************/ |
og | 0:d5aa6eeefe77 | 348 | void LCD192GC00::lcd_Image(char line, const unsigned char *ptr, unsigned short Color1, unsigned Color2) |
og | 0:d5aa6eeefe77 | 349 | { |
og | 0:d5aa6eeefe77 | 350 | unsigned char Mask; |
og | 0:d5aa6eeefe77 | 351 | short i, vline, colum; |
og | 0:d5aa6eeefe77 | 352 | |
og | 0:d5aa6eeefe77 | 353 | |
og | 0:d5aa6eeefe77 | 354 | for(vline=line; vline<line+8; vline++){ // 全体は8行×8=64ライン |
og | 0:d5aa6eeefe77 | 355 | for(colum=0; colum<128; colum++){ // 横は128ドットとする |
og | 0:d5aa6eeefe77 | 356 | Mask = 0x01; // 下位ビットが上側 |
og | 0:d5aa6eeefe77 | 357 | for(i=0; i<8; i++){ // 1バイト分処理 |
og | 0:d5aa6eeefe77 | 358 | if(*ptr & Mask) // ビットチェック |
og | 0:d5aa6eeefe77 | 359 | lcd_Pixel(colum+2, vline*8+i+1, Color1); |
og | 0:d5aa6eeefe77 | 360 | else |
og | 0:d5aa6eeefe77 | 361 | lcd_Pixel(colum+2,vline*8+i+1, Color2); |
og | 0:d5aa6eeefe77 | 362 | Mask = Mask << 1; // ビット位置シフト |
og | 0:d5aa6eeefe77 | 363 | } |
og | 0:d5aa6eeefe77 | 364 | ptr++; // 次のデータ |
og | 0:d5aa6eeefe77 | 365 | } |
og | 0:d5aa6eeefe77 | 366 | } |
og | 0:d5aa6eeefe77 | 367 | } |
og | 0:d5aa6eeefe77 | 368 | |
og | 0:d5aa6eeefe77 | 369 | void LCD192GC00::_delay(uint16_t t) |
og | 0:d5aa6eeefe77 | 370 | { |
og | 0:d5aa6eeefe77 | 371 | }; |