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

📄 雪中梅花.lst

📁 利用89C52单片机与12864液晶在液晶上显示图片
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -