📄 雪中梅花.lst
字号:
482 ****************************************************************************/
483 void lcd_wdat(unchar dat)
C51 COMPILER V8.02 雪中梅花 04/27/2004 20:24:42 PAGE 9
484 {
485 1 while(lcd_bz());
486 1 rs = 1;
487 1 rw = 0;
488 1 ep = 0;
489 1 P0 = dat;
490 1 _nop_();
491 1 _nop_();
492 1 _nop_();
493 1 _nop_();
494 1 ep = 1;
495 1 _nop_();
496 1 _nop_();
497 1 _nop_();
498 1 _nop_();
499 1 ep = 0;
500 1 }
501 /**************************************************************************
502 从LCD中读出数据
503 *****************************************************************************/
504 unsigned char Lcd_ReadData(void)
505 {
506 1 unsigned char Temp;
507 1 while(lcd_bz());
508 1 P0=0xff;
509 1 rs=1;
510 1 rw=1;
511 1 ep=1;
512 1 _nop_();
513 1 Temp=P0;
514 1 ep=0;
515 1 return Temp;
516 1 }
517 /*向LCD中写入图片*/
518
519
520 void tupian(unsigned char *tab)
521 {unchar jishu1,jishu2;
522 1 for(jishu2=0;jishu2<32;jishu2++)
523 1 {for(jishu1=0;jishu1<8;jishu1++)
524 2 {lcd_wcmd(0x36);
525 3 lcd_wcmd(jishu2+0x80); //行地址
526 3 lcd_wcmd(jishu1+0x80); //列地址
527 3 lcd_wdat(*tab);
528 3 tab++;
529 3 lcd_wdat(*tab);
530 3 tab++;
531 3 lcd_wcmd(0x30);
532 3 }
533 2 }
534 1 for(jishu2=0;jishu2<32;jishu2++)
535 1 {for(jishu1=8;jishu1<16;jishu1++)
536 2 {lcd_wcmd(0x36);
537 3 lcd_wcmd(jishu2+0x80); //行地址
538 3 lcd_wcmd(jishu1+0x80); //列地址
539 3 lcd_wdat(*tab);
540 3 tab++;
541 3 lcd_wdat(*tab);
542 3 tab++;
543 3 lcd_wcmd(0x30);
544 3 }
545 2 }
C51 COMPILER V8.02 雪中梅花 04/27/2004 20:24:42 PAGE 10
546 1 }
547
548 /***************************************
549 向LCD指定坐标写入一个象素,象素颜色有两种,0代表白(无显示),1代表黑(有显示)
550 ****************************************/
551 void Lcd_PutPixel(unsigned char x,unsigned char y,unsigned char Color)
552 {
553 1 unsigned char z,w;
554 1 unsigned int Temp;
555 1 if(x>=128||y>=64)
556 1 return;
557 1 Color=Color%2;
558 1 w=15-x%16;//确定对这个字的第多少位进行操作
559 1 x=x/16;//确定为一行上的第几字
560 1
561 1 if(y<32) //如果为上页
562 1 z=0x80;
563 1 else //否则如果为下页
564 1 z=0x88;
565 1
566 1 y=y%32;
567 1 lcd_wcmd(0x36);
568 1 lcd_wcmd(y+0x80); //行地址
569 1 lcd_wcmd(x+z); //列地址
570 1 Temp=Lcd_ReadData();//先空读一次
571 1 Temp=(unsigned int)Lcd_ReadData()<<8;//再读出高8位
572 1 Temp|=(unsigned int)Lcd_ReadData();//再读出低8位
573 1 if(Color==1) //如果写入颜色为1
574 1 Temp|=MaskTab[w];//在此处查表实现加速
575 1 else //如果写入颜色为0
576 1 Temp&=~MaskTab[w];//在此处查表实现加速
577 1 lcd_wcmd(y+0x80); //行地址
578 1 lcd_wcmd(x+z); //列地址
579 1 lcd_wdat(Temp>>8);
580 1 lcd_wdat(Temp&0x00ff);
581 1 lcd_wcmd(0x30);
582 1
583 1 }
584 void Lcd_HoriLine(unsigned char x,unsigned char y,unsigned char Length,unsigned char Color)
585 {
586 1 unsigned char i;
587 1 if(Length==0)
588 1 return;
589 1 for(i=0;i<Length;i++)
590 1 {
591 2 Lcd_PutPixel(x+i,y,Color);
592 2 }
593 1 }
594 void lcd_init()
595 {lcd_wcmd(0x30);
596 1 lcd_wcmd(0x0c);
597 1 lcd_wcmd(0x01);
598 1 lcd_wcmd(0x06);
599 1 }
600 void ddd()
601 {unchar i,j;
602 1 for(i=0;i<250;i++)
603 1 {for(j=0;j<250;j++)
604 2 {_nop_();
605 3 _nop_();
606 3 _nop_();
607 3 _nop_();
C51 COMPILER V8.02 雪中梅花 04/27/2004 20:24:42 PAGE 11
608 3 _nop_();
609 3 _nop_();
610 3 _nop_();
611 3 _nop_();
612 3 _nop_();
613 3 _nop_();
614 3 _nop_();
615 3 _nop_();
616 3 _nop_();
617 3 _nop_();
618 3 _nop_();
619 3 _nop_();
620 3 _nop_();
621 3 _nop_();
622 3 _nop_();
623 3 _nop_();
624 3 _nop_();
625 3 _nop_();
626 3 _nop_();
627 3 _nop_();
628 3 }
629 2 }
630 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 602 ----
CONSTANT SIZE = 6176 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -