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

📄 12864.lst

📁 51单片机的程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 404   1        LCD_EN = 0;           /* 使能信号为L */ 
 405   1        LCD_RS = 0;           /* 置寄存器选择为L */ 
 406   1        LCD_RW = 0;           /* 置读/写选择为L */ 
 407   1        LCD_PORT = Command;   /* 将控制指令代码输出到的数据端口 */ 
 408   1        LCD_EN = 1;           /* 使能信号为H */ 
 409   1        Delay_us(1);          /* 延时2us */ 
 410   1        LCD_EN = 0;           /* 使能信号为L */ 
 411   1        LCD_CS1 = 1;          /* 置片选1为L */ 
 412   1        LCD_CS2 = 1;          /* 置片选2为L */ 
 413   1      } 
 414          
 415          
 416          /*---------------------------------------------------------------------------- 
 417          下面这个函数用于向液晶模块写入显示数据。 
 418          函数入口参数:Data------ 向液晶模块写入的显示数据 。 
 419                      CS_Num-------左右半屏的选数值 
 420          ----------------------------------------------------------------------------*/ 
 421          void LCD_WriteData(uchar Data,uchar CS_Num) 
 422          { 
 423   1        LCD_Check_Busy();
 424   1        if(CS_Num==1)          /*选择左半屏*/
 425   1         {
 426   2           LCD_CS1 = 0;
 427   2               LCD_CS2 = 1;
C51 COMPILER V8.02   12864                                                                 04/20/2007 19:40:37 PAGE 8   

 428   2              }
 429   1        else if(CS_Num==2)  /*选择右半屏*/
 430   1         {
 431   2           LCD_CS1 = 1;
 432   2               LCD_CS2 = 0;
 433   2              }
 434   1        LCD_EN = 0;
 435   1        LCD_RS = 1;       /* 置寄存器选择为H */ 
 436   1        LCD_RW = 0;       /* 置读/写选择为L */  
 437   1        LCD_PORT = Data;  /* 将显示数据输出到的数据端口 */ 
 438   1        LCD_EN = 1;       /* 使能信号为H */ 
 439   1        Delay_us(1);      /* 延时2us */ 
 440   1        LCD_EN = 0;       /* 使能信号为L */ 
 441   1        LCD_CS1= 1;       /* 置片选1为L */ 
 442   1        LCD_CS2= 1;       /* 置片选2为L */ 
 443   1      } 
 444          
 445          
 446          /*---------------------------------------------------------------------------
 447          *下面这个函数用于向液晶模块左右半屏写入图象显示数据。
 448          *函数入口参数:DisBuf-----向液晶模块写入的图象显示数据
 449                          Side_Num-----液晶模块左右半屏的选择
 450          ---------------------------------------------------------------------------*/
 451          void LCD_Graph_Play(uchar *DisBuf,uchar Side_Num)
 452           {
 453   1         uchar i,k,COM;
 454   1         
 455   1         for(i=0;i<8;i++)                               
 456   1         {
 457   2               COM=0xB8+i;
 458   2           LCD_WriteCommand(COM,Side_Num);    
 459   2               COM=0x40;
 460   2               LCD_WriteCommand(COM,Side_Num);  
 461   2                       
 462   2           for(k=0;k<64;k++)
 463   2            {
 464   3                  LCD_WriteData(DisBuf[i*64+k],Side_Num);
 465   3                 }
 466   2              }
 467   1               Delay_us(2);
 468   1        }
 469          
 470          /*---------------------------------------------------------------------------
 471          *下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
 472          *函数入口参数:DisBuf-----向液晶模块写入的汉字显示数据
 473                          Side_Num------液晶模块左右半屏的选择数
 474                                  Page_Num------开始显示页数(0----7),共八页
 475                               Clm_Num------开始显示列数 (16的倍数),共64列
 476                                  Word_Num------每页显示的汉字个数(最多为4个)
 477          ---------------------------------------------------------------------------*/
 478          void LCD_Play(uchar Page_Num,uchar Clm_Num,uchar Word_Num,uchar *DisBuf,uchar Side_Num)
 479           {
 480   1        uchar i,k,COM;
 481   1                                
 482   1        COM=0xB8+Page_Num;
 483   1        LCD_WriteCommand(COM,Side_Num);    
 484   1        COM=0x40+Clm_Num;
 485   1        LCD_WriteCommand(COM,Side_Num);
 486   1        for(i=0;i<Word_Num;i++)
 487   1         {             
 488   2          for(k=0;k<16;k++)
 489   2           {
C51 COMPILER V8.02   12864                                                                 04/20/2007 19:40:37 PAGE 9   

 490   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);
 491   3                }
 492   2              }
 493   1      
 494   1        Page_Num++;
 495   1        COM=0xB8+Page_Num;
 496   1        LCD_WriteCommand(COM,Side_Num);    
 497   1        COM=0x40+Clm_Num;
 498   1        LCD_WriteCommand(COM,Side_Num);
 499   1        for(i=0;i<Word_Num;i++)
 500   1         {
 501   2          for(k=16;k<32;k++)
 502   2           {
 503   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);
 504   3                }
 505   2              }
 506   1        Delay_us(2);
 507   1       }
 508          
 509          
 510          /*---------------------------------------------------------------------------
 511          下面这个函数用于液晶模块的清屏。
 512          ---------------------------------------------------------------------------*/
 513          void LCD_CLR(uchar Side_Num)
 514           {
 515   1         uchar i,k,COM;
 516   1         
 517   1         for(i=0;i<8;i++)                               
 518   1         {
 519   2               COM=0xB8+i;
 520   2           LCD_WriteCommand(COM,Side_Num);    
 521   2               COM=0x40;
 522   2               LCD_WriteCommand(COM,Side_Num);  
 523   2                       
 524   2           for(k=0;k<64;k++)
 525   2            {
 526   3                  LCD_WriteData(0x00,Side_Num);
 527   3                 }
 528   2              }
 529   1               Delay_us(2);
 530   1        }
 531          
 532          
 533          /*---------------------------------------------------------------------------
 534          下面这个函数用于向液晶模块初始化。
 535          如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
 536          ---------------------------------------------------------------------------*/
 537          void LCD_Initial(void) 
 538          {   
 539   1        LCD_RST = 0;    /* 置复位信号为低电平 */ 
 540   1        Delay_us(2);  
 541   1        LCD_RST = 1;    /* 置复位信号为高电平 */  
 542   1        LCD_WriteCommand(0x3F,Left);    /*显示开*/
 543   1        LCD_WriteCommand(0x3F,Right);
 544   1        LCD_WriteCommand(0xC0,Left);    /*起始行*/
 545   1        LCD_WriteCommand(0xC0,Right);                     
 546   1        LCD_WriteCommand(0xB8,Left);    /*起始页*/
 547   1        LCD_WriteCommand(0xB8,Right);  
 548   1        LCD_WriteCommand(0x40,Left);    /*起始列*/
 549   1        LCD_WriteCommand(0x40,Right); 
 550   1      } 
 551          
C51 COMPILER V8.02   12864                                                                 04/20/2007 19:40:37 PAGE 10  

 552          
 553          
 554          /*---------------------------------------------------------------------------
 555          下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
 556          ---------------------------------------------------------------------------*/
 557          void main(void) 
 558          { 
 559   1       
 560   1        LCD_Initial();  
 561   1        LCD_CLR(Left);
 562   1        LCD_CLR(Right);
 563   1        LCD_Play(3,0,4,Table,Left);
 564   1        LCD_Play(3,0,4,Table0,Right);
 565   1        Delay_x10ms(250);
 566   1        Delay_x10ms(250);
 567   1        Delay_x10ms(250);
 568   1        Delay_x10ms(250);
 569   1        LCD_CLR(Left);
 570   1        LCD_CLR(Right);      
 571   1        LCD_Graph_Play(Table1,Left);
 572   1        LCD_Graph_Play(Table2,Right);
 573   1        LCD_Play(6,0,4,Table8,Left);
 574   1        LCD_Play(6,0,4,Table9,Right);
 575   1        Delay_x10ms(250);
 576   1        Delay_x10ms(250);
 577   1        Delay_x10ms(250);
 578   1        Delay_x10ms(250);
 579   1        LCD_Graph_Play(Table5,Left);
 580   1        LCD_Graph_Play(Table5,Right);
 581   1        LCD_Play(6,0,4,Table3,Left);
 582   1        LCD_Play(6,0,4,Table4,Right);
 583   1        Delay_x10ms(250);
 584   1        Delay_x10ms(250);
 585   1        Delay_x10ms(250);
 586   1        Delay_x10ms(250);
 587   1        LCD_Graph_Play(Table6,Left);
 588   1        LCD_Graph_Play(Table7,Right);
 589   1        Delay_x10ms(250);
 590   1        Delay_x10ms(250);
 591   1        Delay_x10ms(250);
 592   1        Delay_x10ms(250);   
 593   1       } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    631    ----
   CONSTANT SIZE    =   3328    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     34      14
   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 + -