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

📄 lcd.lst

📁 这是一个用12864液晶显示屏的驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 302   1                      else
 303   1                      {
C51 COMPILER V7.50   LCD                                                                   04/25/2007 10:47:47 PAGE 6   

 304   2                              CS2=0;CS1=1;
 305   2                                      col=col-64;
 306   2                      }
 307   1                      for(j=0;j<2;j++)
 308   1                      {
 309   2                                  write_cmd(PAGE+page+j); write_cmd(COL+col);
 310   2                                  for (i=0;i<16;i++)
 311   2                              write_data(str[n*32+16*j+i]);
 312   2                      }
 313   1      }
 314          
 315          
 316          /*
 317          
 318          //*******************************指定位置显示汉字16*16****************************
 319          
 320          void disp_str(uchar page,uchar col,uchar code *str,uchar n)  
 321          {
 322                                  
 323                          uchar j=0,i=0;
 324                          for(j=0;j<2;j++)
 325                          {
 326                                      write_cmd(PAGE+page+j); write_cmd(COL+col);
 327                                      for (i=0;i<16;i++)
 328                                  write_data(str[n*32+16*j+i]);
 329                          }
 330          }
 331          //**********************************反显程序**************************************
 332          
 333          void cpl_disp_str(uchar page,uchar col,uchar code *str,uchar n) 
 334          {
 335            
 336                          uchar j=0,i=0;
 337                          for(j=0;j<2;j++)
 338                          {
 339                                      write_cmd(PAGE+page+j); write_cmd(COL+col);
 340                                      for (i=0;i<16;i++)
 341                                          write_data(~str[n*32+16*j+i]);
 342                          }
 343          }
 344          
 345          
 346          
 347          
 348          //*******************************显示ASCII码程序**********************************
 349          void disp_ascII(uchar page,uchar col,uchar code *english,uchar n)
 350          {
 351                          uchar j,i;
 352                          for(j=0;j<2;j++)
 353                          {
 354                                      write_cmd(PAGE+page+j);write_cmd(COL+col);
 355                                      for(i=0;i<8;i++)
 356                                              write_data(english[n*16+8*j+i]);
 357                          }
 358          }
 359          */
 360          
 361                                                                                                          
 362          //**************************************************************************
 363          void displaye(uchar page,uchar col,uchar code *english,uchar n)
 364          {
 365   1                      uchar j,i;
C51 COMPILER V7.50   LCD                                                                   04/25/2007 10:47:47 PAGE 7   

 366   1                      if(col<64)
 367   1                      {
 368   2                              CS2=1;CS1=0;
 369   2                       }
 370   1                      else
 371   1                      {
 372   2                              CS2=0;CS1=1;
 373   2                                      col=col-64;
 374   2                      }
 375   1                      for(j=0;j<2;j++)
 376   1                      {
 377   2                                  write_cmd(PAGE+page+j);write_cmd(COL+col);
 378   2                                  for(i=0;i<8;i++)
 379   2                                          write_data(english[n*16+8*j+i]);
 380   2                      }
 381   1      }
 382          /*
 383          void cpl_disp_ascII(uchar page,uchar col,uchar code *english,uchar n)
 384          {
 385                          uchar j,i;
 386                          for(j=0;j<2;j++)
 387                          {
 388                                      write_cmd(PAGE+page+j);write_cmd(COL+col);
 389                                      for(i=0;i<8;i++)
 390                                              write_data(~english[n*16+8*j+i]);
 391                          }
 392          }
 393          
 394           */  
 395          //***************************初始化LCD屏*************************************
 396          
 397          void init()  
 398          {
 399   1                      delay(100);
 400   1                      CS2=1; CS1=0;
 401   1                      delay(100);
 402   1                      write_cmd(DISP_OFF);
 403   1                      write_cmd(PAGE);
 404   1                      write_cmd(START_LINE);
 405   1                      write_cmd(COL);
 406   1                      write_cmd(DISP_ON);
 407   1                      CS2=0; CS1=1;
 408   1                      delay(100);
 409   1                      write_cmd(DISP_OFF);
 410   1                      write_cmd(PAGE);
 411   1                      write_cmd(START_LINE);
 412   1                      write_cmd(COL);
 413   1                      write_cmd(DISP_ON);
 414   1      }
 415          
 416          
 417          uchar key()
 418          {
 419   1              uchar temp,key_value;
 420   1              P2=0xff;
 421   1                      temp=0x0f&P2;
 422   1                      if(temp!=0x0f)
 423   1                      {
 424   2                              delay(100);
 425   2                                      temp=0x0f&P2;
 426   2                              if(temp!=0x0f)
 427   2                                      {
C51 COMPILER V7.50   LCD                                                                   04/25/2007 10:47:47 PAGE 8   

 428   3                                      if(temp==0x0e)             
 429   3                                              key_value=0;   //LEFT
 430   3                                      else if(temp==0x0d)
 431   3                                              key_value=1;   //DOWN
 432   3                                      else if(temp==0x0b)
 433   3                                              key_value=2;   //UP
 434   3                                      else if(temp==0x07)
 435   3                                              key_value=3;   //RIGHT
 436   3                                       }
 437   2                      }
 438   1                      while((P2&0x0f)!=0x0f);
 439   1                      return key_value;
 440   1      
 441   1      }
 442          
 443          
 444          
 445                  
 446          void screen0()  //state=0
 447          {
 448   1              uchar i,temp;
 449   1              //cls();
 450   1                      for(i=0;i<6;i++)
 451   1                              display(0,16+16*i,str1,i);
 452   1                      for(i=0;i<3;i++)
 453   1                      {
 454   2                              display(6,16*i,str2,i);
 455   2                                      display(6,80+16*i,str2,i+3);
 456   2                      }
 457   1      
 458   1                      for(i=0;i<3;i++)
 459   1                      {
 460   2                              display(2,16*i,time,i);//星期二
 461   2                      }
 462   1      
 463   1      
 464   1                      display(2,80,time,3);
 465   1                      display(2,112,time,4);
 466   1      
 467   1                      displaye(4,8*5,num,2);
 468   1                      displaye(4,8*5+8,num,3);
 469   1                      displaye(4,8*5+8*2,num,10);
 470   1                      displaye(4,8*5+24,num,4);
 471   1                      displaye(4,8*5+32,num,6);
 472   1      
 473   1      
 474   1                      temp=key();
 475   1                      if(temp==0)          //left
 476   1                      {
 477   2                              state=1;
 478   2                                      cls();
 479   2                      }                
 480   1              
 481   1      }
 482          
 483          
 484          void screen1()  //state=1
 485          {
 486   1                  
 487   1                  uchar i,temp;
 488   1              //cls();
 489   1                      for(i=0;i<4;i++)
C51 COMPILER V7.50   LCD                                                                   04/25/2007 10:47:47 PAGE 9   

 490   1                              display(0,16*i,str3,i);
 491   1                      for(i=0;i<2;i++)
 492   1                      {
 493   2                              display(6,16*i,enter,i);
 494   2                                      display(6,96+16*i,enter,i+2);
 495   2                      }
 496   1                      displaye(6,80,num,1);
 497   1                      temp=key();
 498   1                      if(temp==1)               //right
 499   1                      {
 500   2                              state=0;  //State Change
 501   2                                      cls();
 502   2                      }
 503   1                      else if(temp==2)
 504   1                      {
 505   2                              state=7;
 506   2                                      cls();
 507   2                      }
 508   1                      else if(temp==3)
 509   1                      {
 510   2                              state=2;
 511   2                                      cls();
 512   2                      }
 513   1      }
 514          
 515          
 516          void screen2()  //state=2
 517          {
 518   1              uchar i,temp;
 519   1                      for(i=0;i<4;i++)
 520   1                              display(0,16*i,wenben,i);
 521   1                      for(i=0;i<2;i++)
 522   1                      {
 523   2                              display(6,16*i,enter,i);
 524   2                                      display(6,96+16*i,enter,i+2);
 525   2                      }
 526   1                      displaye(6,80,num,2);
 527   1                      temp=key();
 528   1                      if(temp==1)             //right
 529   1                      {
 530   2                              state=0;  //State Change
 531   2                                      cls();
 532   2                      }
 533   1                      else if(temp==2)
 534   1                      {
 535   2                              state=1;
 536   2                                      cls();
 537   2                       }
 538   1                       else if(temp==3)
 539   1                       {          state=3;
 540   2                                      cls();
 541   2                              
 542   2                       }
 543   1      
 544   1      }
 545          
 546          void screen3()     //state=3;
 547          {
 548   1              uchar i,temp;
 549   1                      for(i=0;i<4;i++)
 550   1                              display(0,16*i,yuyin,i);
 551   1                      for(i=0;i<2;i++)
C51 COMPILER V7.50   LCD                                                                   04/25/2007 10:47:47 PAGE 10  

 552   1                      {
 553   2                              display(6,16*i,enter,i);
 554   2                                      display(6,96+16*i,enter,i+2);
 555   2                      }
 556   1                      displaye(6,80,num,3);
 557   1                      temp=key();
 558   1                      if(temp==1)             //right
 559   1                      {
 560   2                              state=0;  //State Change
 561   2                                      cls();
 562   2                      }
 563   1                      else if(temp==2)   //UP
 564   1                      {
 565   2                              state=2;
 566   2                                      cls();
 567   2                       }
 568   1                       else if(temp==3)  //down
 569   1                       {
 570   2                               state=4;
 571   2                                       cls();
 572   2                       }
 573   1      
 574   1      }
 575          
 576          void screen4()     //state=4;
 577          {
 578   1              uchar i,temp;
 579   1                      for(i=0;i<4;i++)
 580   1                              display(0,16*i,lingsheng,i);
 581   1                      for(i=0;i<2;i++)
 582   1                      {
 583   2                              display(6,16*i,enter,i);
 584   2                                      display(6,96+16*i,enter,i+2);
 585   2                      }
 586   1                      displaye(6,80,num,4);
 587   1                      temp=key();
 588   1                      if(temp==1)             //right
 589   1                      {
 590   2                              state=0;  //State Change
 591   2                                      cls();
 592   2                      }
 593   1                      else if(temp==2)   //UP
 594   1                      {
 595   2                              state--;
 596   2                                      cls();
 597   2                       }
 598   1                       else if(temp==3)  //down
 599   1                       {
 600   2                               state=5;
 601   2                                       cls();
 602   2                       }
 603   1      
 604   1      }
 605          
 606          void screen5()     //state=5
 607          {
 608   1              uchar i,temp;
 609   1                      for(i=0;i<2;i++)

⌨️ 快捷键说明

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