📄 spy_lcd.lst
字号:
232 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
233 0x00,0xFC,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
234
235 /*-- 文字: M --*/
236 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
237 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
238 0xFE,0x0C,0xF0,0x0C,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
239 /*-- 文字: N --*/
240 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
241 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
242 0x00,0xFC,0x0C,0x30,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,
243
244 /*-- 文字: O --*/
245 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
246 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
247 0x00,0x78,0x84,0x84,0x84,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
248
249 /*-- 文字: P --*/
250 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
251 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
252 0x00,0xFC,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
253
C51 COMPILER V7.06 SPY_LCD 04/22/2007 11:06:48 PAGE 9
254 /*-- 文字: Q --*/
255 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
256 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
257 0x00,0x78,0x84,0xA4,0x44,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,
258
259 /*-- 文字: R --*/
260 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
261 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
262 0x00,0xFC,0x24,0x24,0x24,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,
263
264 /*-- 文字: S --*/
265 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
266 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
267 0x00,0x48,0x94,0xA4,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
268
269 /*-- 文字: T --*/
270 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
271 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
272 0x04,0x04,0xFC,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
273
274 /*-- 文字: U --*/
275 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
276 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
277 0x00,0x7C,0x80,0x80,0x80,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
278
279 /*-- 文字: V --*/
280 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
281 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
282 0x00,0x0C,0x30,0xC0,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
283
284 /*-- 文字: W --*/
285 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
286 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
287 0x00,0x0C,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
288
289 /*-- 文字: X --*/
290 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
291 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
292 0x00,0x84,0x48,0x30,0x48,0x84,0x00,0x00,0x00,0x00,0x00,0x00,
293
294 /*-- 文字: Y --*/
295 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
296 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
297 0x00,0x04,0x08,0xF0,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
298
299 /*-- 文字: Z --*/
300 /*-- Small Fonts6; 此字体下对应的点阵为:宽x高=6x10 --*/
301 /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
302 0x00,0xC4,0xA4,0x94,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
303 };
304
305
306 /*延时子程序,参数C决定延时的长短*/
307 /*
308 void delay(uchar c)
309 {
310 uchar a,b;
311 b=c;a=c;
312 do
313 {
314 a--;
315 b=c;
C51 COMPILER V7.06 SPY_LCD 04/22/2007 11:06:48 PAGE 10
316 do{b--;}
317 while(b!=0);
318 }
319 while(a!=0);
320 }
321 */
322 /*将VRAM清0*/
323 void clr_lcd()
324 {
325 1 uchar i,j;
326 1 for(j=0;j<8;j++)
327 1 {
328 2 iwlr(0xb8|j); /*指令同时写入左右半屏*/
329 2 iwlr(0x40); /*指令同时写入左右半屏*/
330 2 for(i=0;i<64;i++)
331 2 {dwlr(0);} /*显示数据同时写入左右半屏*/
332 2 }
333 1 }
334
335 /*在p点处显示或清除一点,参数s为1时显示一点,否则清除一点*/
336 void disp_one_dot(point p,bit s)
337 {
338 1 uchar a;
339 1 if(p.x<128&&p.y<64)
340 1 {
341 2 if(p.x<=63)
342 2 {
343 3 iwl(0xb8|(p.y/8));
344 3 iwl(0x40|p.x);
345 3 a=drl();
346 3 a=drl();
347 3 iwl(0x40|p.x);
348 3 if(s) {dwl(SETBIT(a,p.y%8,1));}
349 3 else{dwl(SETBIT(a,p.y%8,0));}
350 3 }
351 2 else
352 2 {
353 3 iwr(0xb8|(p.y/8));
354 3 iwr(0x40|p.x);
355 3 a=drr();
356 3 a=drr();
357 3 iwr(0x40|(p.x-64));
358 3 if(s) {dwr(SETBIT(a,p.y%8,1));}
359 3 else{dwr(SETBIT(a,p.y%8,0));}
360 3 }
361 2 }
362 1 }
363
364 /*绘直线程序,其中psta,pend分别为直线的两端点,s=1显示直线,s=0清除直线*/
365 draw_line(point psta,point pend,bit s)
366 {
367 1 uchar d_x,d_y;
368 1 signed char err;
369 1 err=0;
370 1 if(psta.y>pend.y)
371 1 {
372 2 d_x=psta.x; d_y=psta.y;
373 2 psta.x=pend.x; psta.y=pend.y;
374 2 pend.x=d_x; pend.y=d_y;
375 2 }
376 1 d_y=pend.y-psta.y;
377 1 disp_one_dot(psta,s);
C51 COMPILER V7.06 SPY_LCD 04/22/2007 11:06:48 PAGE 11
378 1 if(pend.x>=psta.x) //直线向右偏
379 1 {
380 2 d_x=pend.x-psta.x;
381 2 if(d_x>=d_y)
382 2 {
383 3 if(d_y==0) psta.y--;
384 3 for(psta.x++;psta.x<=pend.x;psta.x++)
385 3 {
386 4 if(err>=0)
387 4 {
388 5 psta.y++;
389 5 err=err+d_y-d_x;
390 5 }
391 4 else
392 4 {
393 5 err=err+d_y;
394 5 }
395 4 disp_one_dot(psta,s);
396 4 }
397 3 }
398 2 else
399 2 {
400 3 for(psta.y++;psta.y<=pend.y;psta.y++)
401 3 {
402 4 if(err>=0)
403 4 {
404 5 err=err-d_x;
405 5 }
406 4 else
407 4 {
408 5 psta.x++;
409 5 err=err+d_y-d_x;
410 5 }
411 4 disp_one_dot(psta,s);
412 4 }
413 3 }
414 2 }
415 1 else //直线向左偏
416 1 {
417 2 d_x=psta.x-pend.x;
418 2 if(d_x>=d_y)
419 2 {
420 3 if(d_y==0) psta.y--;
421 3 for(psta.x--;psta.x!=pend.x-1;psta.x--)
422 3 {
423 4 if(err<0)
424 4 {
425 5 err=err+d_y;
426 5 }
427 4 else
428 4 {
429 5 psta.y++;
430 5 err=err+d_y-d_x;
431 5 }
432 4 disp_one_dot(psta,s);
433 4 }
434 3 }
435 2 else
436 2 {
437 3 for(psta.y++;psta.y<=pend.y;psta.y++)
438 3 {
439 4 if(err>=0)
C51 COMPILER V7.06 SPY_LCD 04/22/2007 11:06:48 PAGE 12
440 4 {
441 5 err=err-d_x;
442 5 }
443 4 else
444 4 {
445 5 psta.x--;
446 5 }
447 4 disp_one_dot(psta,s);
448 4 }
449 3 }
450 2 }
451 1 }
452
453 /*绘制一般矩形,其中firp与othp分别为矩形的对角两点坐标,
454 s=1显示矩形,s=0时清除矩形*/
455 void draw_rec(point firp,point othp,bit s)
456 {
457 1 point a; //定义结构体变量a
458 1 a.x=firp.x;
459 1 a.y=othp.y;
460 1 draw_line(firp,a,s);
461 1 draw_line(othp,a,s);
462 1 a.x=othp.x;
463 1 a.y=firp.y;
464 1 draw_line(firp,a,s);
465 1 draw_line(othp,a,s);
466 1 }
467
468 /*p1,p2点指定的矩形区域置1(s=0xff),清除(s=0),其它则取反*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -