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

📄 lcd_picure.lst

📁 在12864上显示图片!!hehe ,很有成就感的
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -