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

📄 sed1335.lst

📁 采用单片机控制液晶
💻 LST
📖 第 1 页 / 共 2 页
字号:
 261   1         xdata unsigned char rev[1000];
 262   1         LCD_WriteCommand(LCD_MEM_RD);
 263   1         for(i=0;i<LEN;i++)
 264   1         LCD_ReadData(rev[i]);
 265   1         LCD_ReadState(status);
 266   1         return (rev);
 267   1      }
 268          /******************************************************************************************
 269          * 名称:LCD_PutPix(unsigned int X,unsigned int Y)
 270          * 功能:在指定的位置上显示点
 271          * 入口参数:
 272          * 出口参数:
 273          *******************************************************************************************/
 274          void LCD_PutPix(unsigned int X,unsigned int Y)    //X,Y都是从0开始
 275          {
 276   1              unsigned int addr;
 277   1              unsigned char temp;
 278   1              addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
 279   1              SED1335_CsRw(addr);
 280   1              LCD_WriteCommand(LCD_MEM_RD);
 281   1              LCD_ReadData(temp);
 282   1              temp = temp|(unsigned char)(1<<(7-(X%8)));                                               //
 283   1              SED1335_CsRw(addr);
 284   1              LCD_WriteCommand(LCD_MEM_WR);
 285   1              LCD_WriteData(temp);
 286   1      
 287   1      }
 288          /******************************************************************************************
 289          * 名称:LCD_PutChar(unsigned int X,unsigned int Y,unsigned char pchar)
 290          * 功能:在指定的位置上显示字符
 291          * 入口参数:
 292          * 出口参数:
 293          *******************************************************************************************/
 294          void LCD_PutChar(unsigned int X,unsigned int Y,unsigned char pchar)
 295          {
 296   1         unsigned int addr;
 297   1         addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
 298   1         SED1335_CsRw(addr);
 299   1         LCD_WriteData(pchar);
 300   1      
C51 COMPILER V8.06   SED1335                                                               03/28/2007 10:18:02 PAGE 6   

 301   1      }
 302          /*****************************************************************************************
 303          * 名称:LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
 304          * 功能:在指定的位置上显示汉字
 305          * 入口参数:
 306          * 出口参数:
 307          ******************************************************************************************/
 308          void LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
 309          {
 310   1         unsigned int addr;
 311   1         addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
 312   1         SED1335_CsRw(addr);
 313   1      
 314   1      }
*** WARNING C280 IN LINE 308 OF SED1335.C: 'p_code': unreferenced local variable
 315          /******************************************************************************************
 316          * 名称:void LCD_CLS(unsigned int addr_begin,unsigned int len)
 317          * 功能:清除指定位置的指定长度的区域的空间
 318          * 入口参数:
 319          * 出口参数:
 320          ******************************************************************************************/
 321          void LCD_CLS(unsigned int addr_begin,unsigned int len)
 322          {
 323   1        unsigned int i;
 324   1        LCD_WriteCommand(LCD_CSR_DIR);
 325   1        LCD_WriteCommand(LCD_CSR_WR);
 326   1        LCD_WriteData(GET_LOW_BYTE(addr_begin));
 327   1        LCD_WriteData(GET_HIG_BYTE(addr_begin));
 328   1        LCD_WriteCommand(LCD_MEM_WR);
 329   1      
 330   1        for(i=0;i<len;i++)
 331   1        {
 332   2              LCD_WriteData(0x00);
 333   2          
 334   2        }
 335   1      
 336   1      }
 337          /******************************************************************************
 338          * 名称:LCD_Wr_Area(unsigned char X,unsigned char Y,unsigned char Height,unsigned char Length,unsigned cha
             -r *ptr,unsigned char form)
 339          * 功能:在指定的空间写入新的数据块 其中 X<40;Y<240 Length<40, Height<240
 340          * 入口参数:
 341          * 出口参数:
 342          *******************************************************************************/
 343          void LCD_Wr_Area(unsigned char X,unsigned char Y,unsigned char Height,unsigned char Length,unsigned char *
             -ptr,unsigned char form)
 344          {
 345   1              unsigned int addr;
 346   1          int k=0;
 347   1              unsigned char temp; 
 348   1              switch (form&0x01)
 349   1              {
 350   2                      case 0:                                                 //点的排列顺序为从上到下 从左到右的方式
 351   2                      {
 352   3                              for( k=0;k<Length;k++) 
 353   3                      {
 354   4      
 355   4                                      addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
 356   4                                      SED1335_CsRw(addr);
 357   4                                      SED1335_CspDir(down);
 358   4                                      SED1335_WMrite(&ptr[k*Height],Height);
 359   4                                      X=X+1; 
C51 COMPILER V8.06   SED1335                                                               03/28/2007 10:18:02 PAGE 7   

 360   4                                      if(X==((GUI_LCD_XMAX>>3)+1)) 
 361   4                                      {X=0;Y=Y+Height;}                                       //如果超出屏幕的右边界,会另起一行
 362   4                              }
 363   3                      break;
 364   3                      }
 365   2                      case 1:                                                  //点的排列顺序为从左到右 从上到下的方式
 366   2                      {
 367   3                              if((X+Length)>(GUI_LCD_XMAX>>3))
 368   3                              {
 369   4                              for( k=0;k<Height;k++) 
 370   4                      {
 371   5                                      temp =  (GUI_LCD_XMAX>>3)-X;
 372   5                                      addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
 373   5                                      SED1335_CsRw(addr);
 374   5                                      SED1335_CspDir(right);
 375   5                                      SED1335_WMrite(&ptr[k*Length],temp);
 376   5                                      addr = Disp_Base_Addr + (Y+Height)*(GUI_LCD_XMAX>>3);
 377   5                                      SED1335_CsRw(addr);
 378   5                                      SED1335_CspDir(right);
 379   5                                      SED1335_WMrite(&ptr[k*Length+temp],X-temp);
 380   5                                      Y=Y+1;
 381   5      
 382   5                              } 
 383   4                              }
 384   3                              else
 385   3                              {
 386   4                              
 387   4                                      for( k=0;k<Height;k++) 
 388   4                      {
 389   5                                      addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
 390   5                                      SED1335_CsRw(addr);
 391   5                                      SED1335_CspDir(right);
 392   5                                      SED1335_WMrite(&ptr[k*Length],Length);
 393   5                                      Y=Y+1;
 394   5      
 395   5                              } 
 396   4                              
 397   4                              
 398   4                              
 399   4                              }
 400   3                      
 401   3                      
 402   3                      }
 403   2       }
 404   1      }
 405          /******************************************************************************
 406          * 名称:DelayMs(unsigned int Time)
 407          * 功能:延时程序
 408          * 入口参数:
 409          * 出口参数:
 410          *******************************************************************************/
 411          void DelayMs(unsigned int Time)
 412          {
 413   1         unsigned int i;
 414   1         while(Time--)
 415   1         for(i=1000*SYS_TIME;i>0;i--);
 416   1      
 417   1      
 418   1      
 419   1      }
 420          /******************************************************************************** 
 421          滚动演示程序段 
C51 COMPILER V8.06   SED1335                                                               03/28/2007 10:18:02 PAGE 8   

 422          使用SED1335 等的屏幕滚动功能, 可以实现逐点滚动的显示效果. 这个效果的实现, 在 
 423          水平方向是依赖于指令HDOT SET的支持. 我们可以在下面的演示程序中看到HDOT SET指 
 424          令的使用方法. 
 425          *********************************************************************************/ 
 426          // 第一显示区向左滚动 
 427          void RollLeft( void ) { 
 428   1      
 429   1      unsigned char tempI,jj=25; 
 430   1      unsigned int iTemp=0; 
 431   1      
 432   1      while(jj--) { 
 433   2      
 434   2      for(tempI=0;tempI<8;tempI++) { 
 435   3      LCD_WriteCommand(LCD_DOT_DIR);                                                  // 写入HDOT SET 指令 
 436   3      LCD_WriteData( tempI );                                                                 // 写入参数 
 437   3      DelayMs(4);                                                                                     // 调延时子程序 
 438   3      } 
 439   2      
 440   2      iTemp ++; 
 441   2      LCD_WriteCommand( LCD_SCR_OLL );                                                // 设定显示区域起始地址 
 442   2      LCD_WriteData( (unsigned char)(iTemp & 0xff) );                 // 写入参数 
 443   2      LCD_WriteData( (unsigned char)(iTemp /256) );                   // 写入参数 
 444   2      } 
 445   1      } 
 446          
 447          
 448          // 第一显示区向右滚动 
 449          void Rollright( void ) { 
 450   1      
 451   1      unsigned char tempI,jj=25; 
 452   1      unsigned int iTemp=24; 
 453   1                                                                                                                      // return; 
 454   1                                                                                                                      // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数: 
 455   1                                                                                                                      // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭 
 456   1      
 457   1      while(jj--) { 
 458   2      tempI = 8; 
 459   2      LCD_WriteCommand( LCD_SCR_OLL );                                                // 显示区域(起点)设置 
 460   2      LCD_WriteData( (unsigned char)(iTemp & 0xff) );                 // 写入参数 
 461   2      LCD_WriteData( (unsigned char)(iTemp /256) );                   // 写入参数 
 462   2      while( tempI-- ) { 
 463   3      LCD_WriteCommand( LCD_DOT_DIR );                                                // 写入HDOT SET 指令 
 464   3      LCD_WriteData( tempI );                                                                 // 写入参数 
 465   3      DelayMs(4);                                                                                     // 调延时子程序 
 466   3      } 
 467   2      
 468   2      iTemp--; 
 469   2      } 
 470   1      } 
 471          
 472          // 第一显示区向下滚动 
 473          void RollDown( void ) { 
 474   1      
 475   1      unsigned char jj = 50;                                                                  // 演示32次 
 476   1      unsigned int iTemp=paraP9*50; 
 477   1      
 478   1                                                                                                                      // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数: 
 479   1                                                                                                                      // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭 
 480   1      
 481   1      while(jj--) { 
 482   2      iTemp -= paraP9; 
 483   2      LCD_WriteCommand( LCD_SCR_OLL );                                                // 设定显示区域起始地址 
C51 COMPILER V8.06   SED1335                                                               03/28/2007 10:18:02 PAGE 9   

 484   2      LCD_WriteData( (unsigned char)(iTemp & 0xff) );                 // 写入参数 
 485   2      LCD_WriteData( (unsigned char)(iTemp /256) );                   // 写入参数 
 486   2      DelayMs(4);                                                                                     // 调延时子程序 
 487   2      } 
 488   1      LCD_WriteCommand( LCD_SCR_OLL );                                                // 设定显示区域起始地址 
 489   1      LCD_WriteData( 0 );                                                                     // 写入参数 
 490   1      LCD_WriteData( 0 );                                                                     // 写入参数 
 491   1      DelayMs(30); 
 492   1      } 
 493          
 494          // 第一显示区向上滚动 
 495          void RollUp( void ) { 
 496   1      
 497   1      unsigned int iTemp=0; 
 498   1      unsigned char jj = 50;                                                          // 演示30次 
 499   1      
 500   1      // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数: 
 501   1      // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭 
 502   1      
 503   1      while(jj--) { 
 504   2      
 505   2      iTemp += paraP9; 
 506   2      
 507   2      LCD_WriteCommand( LCD_SCR_OLL );                                                // 设定显示区域起始地址 
 508   2      LCD_WriteData( (unsigned char)(iTemp & 0xff) );                 // 写入参数 
 509   2      LCD_WriteData( (unsigned char)(iTemp /256) );                   // 写入参数 
 510   2      
 511   2      DelayMs(3); // 调延时子程序 
 512   2      } 
 513   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2325    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    1000
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      44
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -