⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_12864.lst

📁 the driver of 12864 and it includes line
💻 LST
📖 第 1 页 / 共 3 页
字号:
 504   4                              }
 505   3                              else if(b==0)
 506   3                              {
 507   4                                   for(i=a;i<0;i++)   
 508   4                               Locat_Dot(a1+i,b1);
 509   4                              }
 510   3                              else
 511   3                              {
 512   4                                  for(i=b;i<0;i++)
 513   4                                  {
 514   5                                        a=a1+i/y_add;
 515   5                                        Locat_Dot(a,b1+i);
 516   5                                      }
 517   4                              }
 518   3                      } 
 519   2          }//x<0: 反向
 520   1      }
 521          
 522          /*----------------显示图形-----------------*/
 523          void img_disp (uchar code *img)
 524          {
 525   1        uchar i,j;
 526   1        for(j=0;j<32;j++)
 527   1        {
 528   2          for(i=0;i<8;i++)
 529   2          {
 530   3            wr_lcd (comm,0x34);
 531   3            wr_lcd (comm,y+j);
 532   3            wr_lcd (comm,x1+i);
 533   3            wr_lcd (comm,0x30);
 534   3            wr_lcd (dat,img[j*16+i*2]);
 535   3            wr_lcd (dat,img[j*16+i*2+1]);
 536   3          }
 537   2        }
 538   1        for(j=32;j<64;j++)
 539   1        {
 540   2          for(i=0;i<8;i++)
 541   2          {
 542   3            wr_lcd (comm,0x34);
 543   3            wr_lcd (comm,y+j-32);
 544   3            wr_lcd (comm,x2+i);
 545   3            wr_lcd (comm,0x30);
 546   3            wr_lcd (dat,img[j*16+i*2]);
 547   3            wr_lcd (dat,img[j*16+i*2+1]);
 548   3          }
 549   2        }
 550   1        wr_lcd (comm,0x36);
 551   1      }
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 10  

 552          /*-------------下半屏显示图形--------------*/
 553          void img_disp1 (uchar code *img)
 554          {
 555   1        uchar i,j;
 556   1        for(j=0;j<32;j++)
 557   1        {
 558   2          for(i=0;i<8;i++)
 559   2          {
 560   3            wr_lcd (comm,0x34);
 561   3            wr_lcd (comm,y+j);
 562   3            wr_lcd (comm,x2+i);
 563   3            wr_lcd (comm,0x30);
 564   3            wr_lcd (dat,img[j*16+i*2]);
 565   3            wr_lcd (dat,img[j*16+i*2+1]);
 566   3          }
 567   2        }
 568   1        wr_lcd (comm,0x36);
 569   1      }
 570          /*--------------显示点阵----------------*/
 571          void lat_disp (uchar data1,uchar data2)
 572          {
 573   1        uchar i,j,k,x;
 574   1        x=x1;
 575   1        for(k=0;k<2;k++)
 576   1        {
 577   2          for(j=0;j<16;j++)
 578   2          {
 579   3            for(i=0;i<8;i++)
 580   3            {
 581   4              wr_lcd (comm,0x34);
 582   4              wr_lcd (comm,y+j*2);
 583   4              wr_lcd (comm,x+i);
 584   4              wr_lcd (comm,0x30);
 585   4              wr_lcd (dat,data1);
 586   4              wr_lcd (dat,data1);
 587   4            }
 588   3            for(i=0;i<8;i++)
 589   3            {
 590   4              wr_lcd (comm,0x34);
 591   4              wr_lcd (comm,y+j*2+1);
 592   4              wr_lcd (comm,x+i);
 593   4              wr_lcd (comm,0x30);
 594   4              wr_lcd (dat,data2);
 595   4              wr_lcd (dat,data2);
 596   4            }
 597   3          }
 598   2          x=x2;
 599   2        }
 600   1        wr_lcd (comm,0x36);
 601   1      }
 602          /*-----------------------------------------------*/
 603          //当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
 604          void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
 605          {
 606   1        uchar i,j;
 607   1        for(j=0;j<yl;j++)
 608   1        {
 609   2          for(i=0;i<xl;i++)
 610   2          {
 611   3            wr_lcd (comm,0x34);
 612   3            wr_lcd (comm,y0+j);
 613   3            wr_lcd (comm,x0+i);
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 11  

 614   3            wr_lcd (comm,0x30);
 615   3            wr_lcd (dat,data1);
 616   3            wr_lcd (dat,data2);
 617   3          }
 618   2        }
 619   1        wr_lcd (comm,0x36);
 620   1      }
 621          /*--------------清DDRAM------------------*/
 622          void clrram (void)
 623          {
 624   1        wr_lcd (comm,0x30);
 625   1        wr_lcd (comm,0x01);
 626   1      }
 627          /*---------------------------------------*/
 628          void wr_lcd (uchar dat_comm,uchar content)
 629          {
 630   1        chk_busy ();
 631   1        if(dat_comm)
 632   1         {
 633   2          P0=P0|0x01;   //data
 634   2              delay(20);
 635   2          P0=P0&0xfd;   //write
 636   2              delay(20);
 637   2         }
 638   1        else 
 639   1         {
 640   2          P0=P0&0xfe;   //command
 641   2              delay(20);
 642   2          P0=P0&0xfd;   //write
 643   2              delay(20);
 644   2         }
 645   1        data1=content;   //output data or comm
 646   1        P0=P0|0x04;
 647   1        delay(50);
 648   1        P0=P0&0xfb;
 649   1        
 650   1      }
 651          uint Read_state()
 652          { 
 653   1        uint rd_data;
 654   1        P2MDOUT=0x00;
 655   1        data1=0xff; 
 656   1        chk_busy ( );
 657   1        P0=P0|0x01; //rs=1;
 658   1        delay(20);
 659   1        P0=P0|0x02;//rw=1;
 660   1        delay(20);
 661   1        P0=P0|0x04;//e=1;
 662   1        delay(20);
 663   1        rd_data=data1;
 664   1        delay(20);
 665   1        P0=P0&0xfb;
 666   1        P2MDOUT=0xff;
 667   1        return( rd_data); 
 668   1      }
 669          
 670          
 671          void chk_busy (void)
 672           
 673          {
 674   1                      
 675   1       //P74OUT=0xf3;
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 12  

 676   1        
 677   1        data1=0xff;
 678   1              _nop_();
 679   1        delay(10);
 680   1        P0=P0|0x02;
 681   1        delay(20);
 682   1        P0=P0&0xfe;
 683   1        delay(20);
 684   1        
 685   1        P0=P0|0x04;
 686   1        delay(20);
 687   1        P0 =P0&0xfb;
 688   1      //  while(data1&0x80);
 689   1       
 690   1        delay(20);
 691   1        //P74OUT=0xff;
 692   1      }
 693          
 694          void delay (uint us)   //delay time
 695          {
 696   1        while(us--);
 697   1      }
 698          void delay1 (uint ms)
 699          {
 700   1        uint i,j;
 701   1        for(i=0;i<ms;i++)
 702   1        for(j=0;j<150;j++)
 703   1        delay(1);
 704   1      }
 705          
 706          
 707          /*------------------主程序--------------------*/
 708          void main ()
 709          {
 710   1        System_initial( );
 711   1        Port_initial( ) ;
 712   1        init_lcd ();
 713   1        while (1)
 714   1        {
 715   2        /*
 716   2          lat_disp (0x00,0x00);
 717   2          chn_disp (tab1);
 718   2          con_disp (0xff,0xff,0x8c,0x80,2,16);
 719   2          delay1 (8000);
 720   2          clrram();  
 721   2          lat_disp (0xcc,0xcc);
 722   2          delay1 (8000);
 723   2          lat_disp (0x00,0x00);
 724   2          chn_disp1 (tab31);
 725   2          img_disp1 (tab32);
 726   2         delay1 (8000);
 727   2         */
 728   2          clrram();
 729   2              delay1 (80); 
 730   2          //lat_disp (0xff,0x00);
 731   2          //delay1 (8000); 
 732   2          //img_disp (tab5);
 733   2               lat_disp (0x00,0x00);
 734   2               delay1 (80);  
 735   2               Line(0,0,30,10);
 736   2               Line(0,50,30,50);
 737   2               Line(0,50,40,30);
C51 COMPILER V8.02   LCD_12864                                                             05/20/2002 14:31:23 PAGE 13  

 738   2               Line(20,50,30,60);
 739   2               Line(10,0,10,60);
 740   2           delay1 (8000);
 741   2               
 742   2        }
 743   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2218    ----
   CONSTANT SIZE    =   3682    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      57
   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 + -