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

📄 lcddev_ra8806.lst

📁 RA8806底层驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
 512   1              LCD_DataWrite(0x00);
 513   1                
 514   1      
 515   1              LCD_GotoXY(0,0); 
 516   1              LCD_CmdWrite(MISC);             
 517   1              LCD_DataWrite(XCK_FREQUENCY);
 518   1      
 519   1              LCD_CmdWrite(ITCR);             
 520   1              LCD_DataWrite(IDLE_TIME);
 521   1      
 522   1      } 
 523          void Lcd_DispText(unsigned char X1,
 524                            unsigned char Y1,
 525                                            unsigned char *pTextStr,
 526                                            unsigned char Textlen) 
 527          {        
 528   1              INT8U i; 
 529   1              Access_Page1();
 530   1              Only_Show_Page1();
 531   1              LCD_Text();
 532   1      
 533   1              LCD_GotoXY( X1, Y1); 
 534   1              LCD_CmdWrite(0xB0);
 535   1              for(i=0; i<Textlen; i++) 
 536   1                      LCD_DataWrite(pTextStr[i]);  
 537   1      }
 538          
 539          void Lcd_Picture(unsigned char        X1,
 540                           unsigned char        Y1,
 541                                           unsigned char *pDispStr,
 542                                           unsigned  int  DispLenX,
 543                                           unsigned  int  DispLenY)
 544          {        unsigned int i,j; 
 545   1           if(X1 > 39) return; 
 546   1           if(Y1 > 239) return;  
 547   1               //LCD_Graphic();    
 548   1                          //LCD_CmdWrite(WLCR);               //[00H] , Default --> 0x00
 549   1                      //LCD_DataWrite(0x24);  
 550   1                   LCD_GotoXY(0,0);  
 551   1               for(j=0; j<DispLenY; j++)
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 10  

 552   1               {         
 553   2                   LCD_GotoXY(X1,Y1 + j);                             
 554   2                   LCD_StringWrite(&pDispStr[j*(DispLenX/8) + i],DispLenX/8,1);  
 555   2               }
 556   1      }
 557          void Lcd_RevsePicture(unsigned char        X1,
 558                           unsigned char        Y1,
 559                                           unsigned char *pDispStr,
 560                                           unsigned  int  DispLenX,
 561                                           unsigned  int  DispLenY)
 562          {        unsigned char i,j; 
 563   1           if(X1 > 39) return; 
 564   1           if(Y1 > 239) return;  
 565   1                          //LCD_CmdWrite(WLCR);               //[00H] , Default --> 0x00
 566   1                      //LCD_DataWrite(0x24);  
 567   1                   LCD_GotoXY(0,0);  
 568   1               for(j=0; j<DispLenY; j++)
 569   1               {         
 570   2                   LCD_GotoXY(X1,Y1 + j);                             
 571   2                   LCD_StringWrite(&pDispStr[j*(DispLenX/8) + i],DispLenX/8,0);  
 572   2               }
 573   1      }
 574          
 575          /******************************************************************************************************
 576          **
 577          **                                        16x32或者是32x32操作函数驱动
 578          **
 579          *******************************************************************************************************/
 580          void Lcd_Hz32x32(INT16U UniCode,INT8U X0,INT8U Y0, INT8U DispMode) 
 581          {  
 582   1           INT16U CodeID;     
 583   1               INT8U j;       
 584   1           if(X0 > 39) return; 
 585   1           if(Y0 > 239) return;   
 586   1         //==================================================== 在字库里搜索汉字
 587   1           for(CodeID=0; CodeID < hzNum; CodeID++)
 588   1               {
 589   2              //----------------------------------------------- 找到 指定汉字的 Index 后, 跳出循环
 590   2              if ( (hzIndex[2*CodeID] == UniCode/256) && (hzIndex[2*CodeID+1] == UniCode%256) ) 
 591   2                  break; 
 592   2                      else if(CodeID == (hzNum-1))        //未检索到的汉字,显示个"##"提示吧
 593   2                      {
 594   3                  //GUI_DispCharAt('#',x0,y0);
 595   3                  //GUI_DispCharAt('#',x0+Char_XSIZE,y0);
 596   3                  return;
 597   3              }
 598   2           } 
 599   1         //==================================================== 根据搜索到汉字代码显示汉字
 600   1               for(j=0; j<32; j++)
 601   1               {         
 602   2                   LCD_GotoXY(X0, Y0 + j);                            
 603   2                   LCD_StringWrite( &hzdot[CodeID*4*32+j*4], 4, DispMode);  
 604   2               }
 605   1      } 
 606           ///*
 607          void Lcd_Char16x32(INT8U UniCode,INT8U X0,INT8U Y0, INT8U DispMode) 
 608          {  
 609   1           INT16U CodeID;     
 610   1               INT8U j;       
 611   1           if(X0 > 39) return; 
 612   1           if(Y0 > 239) return;   
 613   1      
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 11  

 614   1         //==================================================== 在字库里搜索汉字
 615   1           for(CodeID=0; CodeID < charNum; CodeID++)
 616   1               {
 617   2              //----------------------------------------------- 找到指定汉字的 Index 后, 跳出循环
 618   2              if (charIndex[CodeID] == UniCode)   break; 
 619   2                      else if(CodeID == (charNum-1))        //未检索到的汉字,显示个"##"提示吧
 620   2                      {
 621   3                  //GUI_DispCharAt('#',x0,y0);
 622   3                  //GUI_DispCharAt('#',x0+Char_XSIZE,y0);
 623   3                  return;
 624   3              }
 625   2           }
 626   1                
 627   1         //==================================================== 根据搜索到字符代码显示字符
 628   1               for(j=0; j<32; j++)
 629   1               {         
 630   2                   LCD_GotoXY(X0, Y0 + j);                            
 631   2                   LCD_StringWrite( &chardot[CodeID*2*32+j*2], 4, DispMode);  
 632   2               }
 633   1      } 
 634          /*******************************************************************************************************
 635          ** 名    称:      void Lcd_Graphic_Str32x32(INT8U *HzCode, INT8U X0, INT8U Y0, INT8U DispMode)
 636          ** 功    能:显示48x48点阵字符串数据
 637          ** 入口参数:HzCode    字符串首地址
 638          **           X0        显示字符串X轴坐标
 639          **           Y0            显示字符串Y轴坐标
 640          **           DispMode  显示模式设置
 641          ** 出口参数:无    
 642          **----------------------------------------------------------------------------------------------------
 643          ** 作 者  : 严  俊  生
 644          ** 日 期  : 2009-01-26 
 645          *******************************************************************************************************/ 
 646          void Lcd_Graphic_Str32x32(INT8U *HzCode, INT8U X0, INT8U Y0, INT8U DispMode)
 647          {
 648   1           INT8U i = 0;
 649   1               while(HzCode[i] != '\0')
 650   1               {
 651   2              if(HzCode[i] > 0x80)
 652   2                      {  
 653   3                        Lcd_Hz32x32(HzCode[i]*256+HzCode[i+1],X0 + i*2, Y0, DispMode);
 654   3                        i++;
 655   3                        i++;
 656   3                      }
 657   2                      else
 658   2                      { 
 659   3                        Lcd_Char16x32(HzCode[i],X0 + i*2, Y0, DispMode);
 660   3                        i++;
 661   3                      } 
 662   2               }
 663   1      }       
 664          /******************************************************************************************************
 665          **
 666          **                                        24x48或者是48x48操作函数驱动
 667          **
 668          *******************************************************************************************************/
 669          void Lcd_Hz48x48(INT16U UniCode,INT8U X0,INT8U Y0, INT8U DispMode) 
 670          {  
 671   1           INT16U CodeID;     
 672   1               INT8U j;       
 673   1           if(X0 > 39) return; 
 674   1           if(Y0 > 239) return;   
 675   1         //==================================================== 在字库里搜索汉字
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 12  

 676   1           for(CodeID=0; CodeID < hzNum48; CodeID++)
 677   1               {
 678   2              //----------------------------------------------- 找到 指定汉字的 Index 后, 跳出循环
 679   2              if ( (hzIndex48[2*CodeID] == UniCode/256) && (hzIndex48[2*CodeID+1] == UniCode%256) ) 
 680   2                  break; 
 681   2                      else if(CodeID == (hzNum48-1))        //未检索到的汉字,显示个"##"提示吧
 682   2                      {
 683   3                  //GUI_DispCharAt('#',x0,y0);
 684   3                  //GUI_DispCharAt('#',x0+Char_XSIZE,y0);
 685   3                  return;
 686   3              }
 687   2           } 
 688   1         //==================================================== 根据搜索到汉字代码显示汉字
 689   1               for(j=0; j<48; j++)
 690   1               {         
 691   2                   LCD_GotoXY(X0, Y0 + j);                            
 692   2                   LCD_StringWrite( &hzdot48[CodeID*6*48+j*6], 6, DispMode);  
 693   2               }
 694   1      } 
 695           ///*
 696          void Lcd_Char24x48(INT8U UniCode,INT8U X0,INT8U Y0, INT8U DispMode) 
 697          {  
 698   1           INT16U CodeID;     
 699   1               INT8U j;       
 700   1           if(X0 > 39) return; 
 701   1           if(Y0 > 239) return;   
 702   1      
 703   1         //==================================================== 在字库里搜索汉字
 704   1           for(CodeID=0; CodeID < charNum48; CodeID++)
 705   1               {
 706   2              //----------------------------------------------- 找到 指定汉字的 Index 后, 跳出循环
 707   2              if (charIndex48[CodeID] == UniCode)   break; 
 708   2                      else if(CodeID == (charNum48-1))        //未检索到的汉字,显示个"##"提示吧
 709   2                      {
 710   3                  //GUI_DispCharAt('#',x0,y0);
 711   3                  //GUI_DispCharAt('#',x0+Char_XSIZE,y0);
 712   3                  return;
 713   3              }
 714   2           }
 715   1                
 716   1         //==================================================== 根据搜索到字符代码显示字符
 717   1               for(j=0; j<48; j++)
 718   1               {         
 719   2                   LCD_GotoXY(X0, Y0 + j);                            
 720   2                   LCD_StringWrite( &chardot48[CodeID*3*48+j*3], 6, DispMode);  
 721   2               }
 722   1      } 
 723          /*******************************************************************************************************
 724          ** 名    称:      void Lcd_Graphic_Str48x48(INT8U *HzCode, INT8U X0, INT8U Y0, INT8U DispMode)
 725          ** 功    能:显示48x48点阵字符串数据
 726          ** 入口参数:HzCode    字符串首地址
 727          **           X0        显示字符串X轴坐标
 728          **           Y0            显示字符串Y轴坐标
 729          **           DispMode  显示模式设置
 730          ** 出口参数:无    
 731          **----------------------------------------------------------------------------------------------------
 732          ** 作 者  : 严  俊  生
 733          ** 日 期  : 2009-01-26 
 734          *******************************************************************************************************/ 
 735          void Lcd_Graphic_Str48x48(INT8U *HzCode, INT8U X0, INT8U Y0, INT8U DispMode)
 736          {
 737   1           INT8U i = 0;
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 13  

 738   1               while(HzCode[i] != '\0')
 739   1               {
 740   2              if(HzCode[i] > 0x80)
 741   2                      {  
 742   3                        Lcd_Hz48x48(HzCode[i]*256+HzCode[i+1],X0 + i*3, Y0, DispMode);
 743   3                        i++;
 744   3                        i++;
 745   3                      }
 746   2                      else
 747   2                      { 
 748   3                        Lcd_Char24x48(HzCode[i],X0 + i*3, Y0, DispMode);
 749   3                        i++;
 750   3                      } 
 751   2               }
 752   1      }       
 753          // */ 
 754          
 755                       /*-------------------------------   End    -----------------------------*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2435    ----
   CONSTANT SIZE    =  24580    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----     101
   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 + -