📄 lcd_picure.lst
字号:
309 x2=x%16; //确定x轴地址的位
310 lcd_x=0x90+x1; //确定x轴地址
311 data1=0x80;
312 data2=0x80;
313 if(x2>8)
314 {
315 data1=0x00; //确定要送的第一个数的值
316 count2=x2-8;
317 // data2=(data2>>count2);
318 if(count2==1) //确定第二个数的值
319 data2|=0x80;
320 else if(count2==2)
321 data2|=0x40;
322 else if(count2==3)
323 data2|=0x20;
324 else if(count2==4)
325 data2|=0x10;
326 else if(count2==5)
327 data2|=0x08;
328 else if(count2==6)
329 data2|=0x04;
330 else if(count2==7)
331 data2|=0x02;
332 else
333 data2|=0x01;
334 }
335 else
336 {
337 data2|=0x00;
338 count1=x2;
339 // data1=(data1>>count1);
340 if(count1==0)
341 data1|=0x00;
342 else if(count1==1)
343 data1|=0x80;
344 else if(count1==2)
345 data1|=0x40;
346 else if(count1==3)
347 data1|=0x20;
348 else if(count1==4)
349 data1|=0x10;
350 else if(count1==5)
351 data1|=0x08;
352 else if(count1==6)
353 data1|=0x04;
354 else if(count1==7)
355 data1|=0x02;
356 else if(count1==8)
357 data1|=0x01;
358
359 }
360 }
361 else
362 {
363 lcd_y=31-y+0x80;
364 x1=x/16;
365 x2=x%16; //确定x轴地址的位
C51 COMPILER V7.20 LCD_PICURE 09/02/2007 16:28:22 PAGE 7
366 lcd_x=0x98+x1; //确定x轴地址
367 if(x2>8)
368 {
369 data1=0x00; //确定要送的第一个数的值
370 count2=x2-8;
371 // data2=(data2>>count2);
372 if(count2==1) //确定第二个数的值
373 data2|=0x80;
374 else if(count2==2)
375 data2|=0x40;
376 else if(count2==3)
377 data2|=0x20;
378 else if(count2==4)
379 data2|=0x10;
380 else if(count2==5)
381 data2|=0x08;
382 else if(count2==6)
383 data2|=0x04;
384 else if(count2==7)
385 data2|=0x02;
386 else
387 data2|=0x01;
388 }
389 else
390 {
391 data2=0x00;
392 count1=x2;
393 // data1=(data1>>count1);
394
395 if(count1==1)
396 data1|=0x80;
397 else if(count1==2)
398 data1|=0x40;
399 else if(count1==3)
400 data1|=0x20;
401 else if(count1==4)
402 data1|=0x10;
403 else if(count1==5)
404 data1|=0x08;
405 else if(count1==6)
406 data1|=0x04;
407 else if(count1==7)
408 data1|=0x02;
409 else if(count1==8)
410 data1|=0x01;
411
412 }
413 }
414 }
415 */
416 void set_dot(unsigned char x,unsigned char y)
417 {
418 1 unsigned char x1,x2;
419 1 if(y>31)
420 1 {
421 2 lcd_y=63-y+0x80;
422 2 x1=x/16;
423 2 x2=x%16; //确定x轴地址的位
424 2 lcd_x=0x90+x1; //确定x轴地址
425 2 data1=0x80;
426 2 data2=0x80;
427 2 if(x2>8)
C51 COMPILER V7.20 LCD_PICURE 09/02/2007 16:28:22 PAGE 8
428 2 {
429 3 data1=0x00; //确定要送的第一个数的值
430 3 count2=x2-8;
431 3 if(count2==1) //确定第二个数的值
432 3 data2=0x80;
433 3 else if(count2==2)
434 3 data2=0x40;
435 3 else if(count2==3)
436 3 data2=0x20;
437 3 else if(count2==4)
438 3 data2=0x10;
439 3 else if(count2==5)
440 3 data2=0x08;
441 3 else if(count2==6)
442 3 data2=0x04;
443 3 else if(count2==7)
444 3 data2=0x02;
445 3 else
446 3 data2=0x01;
447 3 }
448 2 else
449 2 {
450 3 data2=0x00;
451 3 count1=x2;
452 3 if(count1==0)
453 3 data1=0x00;
454 3 else if(count1==1)
455 3 data1=0x80;
456 3 else if(count1==2)
457 3 data1=0x40;
458 3 else if(count1==3)
459 3 data1=0x20;
460 3 else if(count1==4)
461 3 data1=0x10;
462 3 else if(count1==5)
463 3 data1=0x08;
464 3 else if(count1==6)
465 3 data1=0x04;
466 3 else if(count1==7)
467 3 data1=0x02;
468 3 else if(count1==8)
469 3 data1=0x01;
470 3
471 3 }
472 2 }
473 1 else
474 1 {
475 2 lcd_y=31-y+0x80;
476 2 x1=x/16;
477 2 x2=x%16; //确定x轴地址的位
478 2 lcd_x=0x98+x1; //确定x轴地址
479 2 if(x2>8)
480 2 {
481 3 data1=0x00; //确定要送的第一个数的值
482 3 count2=x2-8;
483 3 if(count2==1) //确定第二个数的值
484 3 data2=0x80;
485 3 else if(count2==2)
486 3 data2=0x40;
487 3 else if(count2==3)
488 3 data2=0x20;
489 3 else if(count2==4)
C51 COMPILER V7.20 LCD_PICURE 09/02/2007 16:28:22 PAGE 9
490 3 data2=0x10;
491 3 else if(count2==5)
492 3 data2=0x08;
493 3 else if(count2==6)
494 3 data2=0x04;
495 3 else if(count2==7)
496 3 data2=0x02;
497 3 else
498 3 data2=0x01;
499 3 }
500 2 else
501 2 {
502 3 data2=0x00;
503 3 count1=x2;
504 3 if(count1==1)
505 3 data1=0x80;
506 3 else if(count1==2)
507 3 data1=0x40;
508 3 else if(count1==3)
509 3 data1=0x20;
510 3 else if(count1==4)
511 3 data1=0x10;
512 3 else if(count1==5)
513 3 data1=0x08;
514 3 else if(count1==6)
515 3 data1=0x04;
516 3 else if(count1==7)
517 3 data1=0x02;
518 3 else if(count1==8)
519 3 data1=0x01;
520 3
521 3 }
522 2 }
523 1 }
524
525 void line(unsigned char start_x,unsigned char start_y,unsigned char end_x,unsigned char end_y)
526 {
527 1 char erro=0;
528 1 char d_x,d_y;
529 1 if(end_y<start_y) //终点纵坐标大于起点纵坐标
530 1 {
531 2 d_x=end_x; end_x=start_x; start_x=d_x;
532 2 d_y=end_y; end_y=start_y; start_y=d_y;
533 2 }
534 1 set_dot(start_x,start_y); //转换成液晶坐标
535 1 picture_display(data1,data2); //描点
536 1 d_x=end_x-start_x; d_y=end_y-start_y; //描点步数,d_y>=0
537 1 if(d_x>0) //终点在起点左侧
538 1 {
539 2 if(d_x>=d_y) //横坐标间距大于纵坐标间距
540 2 {
541 3 while(start_x!=end_x)
542 3 {
543 4 if(erro>=0)
544 4 {
545 5 start_y+=1;
546 5 erro+=(d_y-d_x); //err0为start_y的调整因子,决定start_y是加一还是不变
547 5 }
548 4 else erro+=d_y;
549 4 start_x+=1; //start_x向end_x逼近,步距为1
550 4 set_dot(start_x,start_y); //转换成液晶坐标
551 4 picture_display(data1,data2); //描点
C51 COMPILER V7.20 LCD_PICURE 09/02/2007 16:28:22 PAGE 10
552 4 //start_x+=1;
553 4 }
554 3 }
555 2 else //纵坐标间距大于横坐标间距
556 2 {
557 3 while(start_y!=end_y)
558 3 {
559 4 if(erro>0)
560 4 {
561 5 start_x+=1;
562 5 erro+=(d_x-d_y);
563 5 }
564 4 else erro+=d_x;
565 4 start_y+=1;
566 4 set_dot(start_x,start_y); //转换成液晶坐标
567 4 picture_display(data1,data2); //描点
568 4 //start_y+=1;
569 4 }
570 3 }
571 2 }
572 1 else //终点在起点左方
573 1 {
574 2 d_x=start_x-end_x;
575 2 if(d_x>=d_y)
576 2 {
577 3 while(start_x!=end_x)
578 3 {
579 4 if(erro>=0)
580 4 {
581 5 start_y+=1;
582 5 erro+=(d_y-d_x);
583 5 }
584 4 else erro+=d_y;
585 4 start_x-=1;
586 4 set_dot(start_x,start_y); //转换成液晶坐标
587 4 picture_display(data1,data2); //描点
588 4 }
589 3 }
590 2 else
591 2 {
592 3 while(start_y!=end_y)
593 3 {
594 4 if(erro<=0)
595 4 erro+=d_x;
596 4 else
597 4 {
598 5 start_x-=1;
599 5 erro+=(d_x-d_y);
600 5 }
601 4 start_y+=1;
602 4 set_dot(start_x,start_y); //转换成液晶坐标
603 4 picture_display(data1,data2); //描点
604 4 }
605 3 }
606 2
607 2 }
608 1
609 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1391 ----
C51 COMPILER V7.20 LCD_PICURE 09/02/2007 16:28:22 PAGE 11
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -