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

📄 yk1602.lst

📁 内含LCD驱动源代码大全
💻 LST
📖 第 1 页 / 共 2 页
字号:
 275   1              while( DATAPORT & busy );
 276   1      
 277   1              Elcm = 0;
 278   1      }       
 279          
 280          
 281          
 282          
 283          
 284          
 285          // 短延时
 286          void delay5ms(void)
 287          {
 288   1              uint i = 5552;
 289   1              while(i--);
 290   1      }
 291          
 292          //长延时
 293          void delay400ms(void)
 294          {
 295   1              uchar i = 5;
 296   1              uint j;
 297   1              while(i--)
 298   1              {
 299   2                      j=7269;
 300   2                      while(j--);
 301   2              };
 302   1      }
 303          
C51 COMPILER V7.07   YK1602                                                                09/08/2006 10:12:13 PAGE 6   

 304          
 305          /*-------延时---------------*/
 306          void delay(void){
 307   1              int r;
 308   1              int e;
 309   1              for(r=0;r<500;r++)
 310   1              {                                       /*外层循环*/
 311   2                      _nop_ ();                       
 312   2                      _nop_ ();                       
 313   2                      _nop_ ();                       
 314   2                      for(e=0;e<3;e++)
 315   2                      {                               /*内层循环*/
 316   3                      _nop_ ();                       
 317   3                       _nop_ ();                      
 318   3                      _nop_ ();                       
 319   3                      _nop_ ();                       
 320   3                      _nop_ ();                       
 321   3               }
 322   2               }
 323   1      }
 324          
 325          /*----------功能键识别子程序--------------*/
 326          void acct_1(void){
 327   1              
 328   1      tf:     _nop_();
 329   1              if(menu)
 330   1              {
 331   2                      menu=0;
 332   2                      conh++;
 333   2                      if(conh==3) conh=0;
 334   2              }
 335   1              
 336   1              
 337   1              if(conh==1)
 338   1              {
 339   2                      key_hit(min);                           //低位设置
 340   2                      conv();
 341   2                      disp1(3,0);
 342   2                      delay();
 343   2              }
 344   1              if(conh==2)
 345   1              {
 346   2                      key_hit(hour);          //高位设置
 347   2                      conv();
 348   2                      disp1(3,0);
 349   2                      delay();
 350   2                                              
 351   2              }
 352   1      /*      if(conh==3){key_hit(thtl)               //显示高位,低位
 353   1                                      conv();
 354   1                                      
 355   1                                      
 356   1                                      delay();
 357   1                                      delay();
 358   1                                      delay();
 359   1                                      delay();
 360   1                                      delay();
 361   1                              }
 362   1              if(conh==4){key_hit(save);      
 363   1                                      conv();
 364   1                                      disp();
 365   1                                      delay();
C51 COMPILER V7.07   YK1602                                                                09/08/2006 10:12:13 PAGE 7   

 366   1                                              
 367   1                              }*/
 368   1              yk();
 369   1              if(!conh==0) goto tf;                           /*功能设置完毕?未设置则继续执行功能键处理*/
 370   1      }
 371                  
 372                  
 373          /*-----------加减键处理子程序-------------*/
 374          /*按键处理*/
 375          void key_hit(unsigned char add3)
 376          {       
 377   1              if(dw){         
 378   2                      dw=0;           /*减键*/
 379   2                      add3--;
 380   2                      if(add3>=60) add3=0;
 381   2                      if(conh==1) min=add3;
 382   2                      if(conh==2) hour=add3;
 383   2                      conv();
 384   2                      disp1(3,0);
 385   2                              }
 386   1                              
 387   1              if(up){                 /*加键*/
 388   2                      up=0;           /*减键*/
 389   2                      add3++;
 390   2                      if(add3==60) add3=0;
 391   2                      if(conh==1) min=add3;
 392   2                      if(conh==2) hour=add3;
 393   2                      conv();
 394   2                      disp1(3,0);
 395   2                              
 396   2                      }
 397   1                      
 398   1                      
 399   1                      if(conh==1) min=add3;
 400   1                      if(conh==2) hour=add3;
 401   1                      
 402   1              }
 403                  
 404                  
 405          //遥控码识别
 406          void    yk(void){
 407   1              if(temp2==0xe2){
 408   2                              if(temp4==0xf1){
 409   3                                      if(temp3==0x2c){
 410   4                                                      if(temp5==0x16){        //功能键
 411   5                                                              menu=1;
 412   5                                                              temp3=0;
 413   5                                                              temp5=0;
 414   5                                                              }
 415   4                                              
 416   4                                              }
 417   3                                      if(temp3==0x44){
 418   4                                                      if(temp5==0x22){        //加键
 419   5                                                              up=1;
 420   5                                                              temp3=0;
 421   5                                                              temp5=0;
 422   5                                                              }
 423   4                                              }
 424   3                                      if(temp3==0x54){
 425   4                                                      if(temp5==0x2a){        //减键
 426   5                                                              dw=1;
 427   5                                                              temp3=0;
C51 COMPILER V7.07   YK1602                                                                09/08/2006 10:12:13 PAGE 8   

 428   5                                                              temp5=0;
 429   5                                                              }
 430   4                                              
 431   4                                              }
 432   3                                      }
 433   2                      
 434   2                      
 435   2                      }
 436   1              }
 437          
 438          
 439          
 440          //遥控中断除理
 441          
 442          void    int0a()interrupt 0 using 2
 443          {
 444   1      //              TH1=TL1=0;
 445   1                      
 446   1                      //TR0=1;                        //启动定时器
 447   1                      yt++;                           //中断次数
 448   1                      if(yt==1)
 449   1                              {
 450   2                              TH1=TL1=0;
 451   2                              TR1=1;                  //启动定时器
 452   2                              }
 453   1                              
 454   1                      if(yt==2)
 455   1                              {
 456   2                              temp1=TH1;              //为起始
 457   2                              TH1=TL1=0;
 458   2                              if(temp1>=0x1f)
 459   2                                      {       //大于8ms
 460   3                                      start=1;        //置起码标志
 461   3                                      }
 462   2                              else 
 463   2                                      {
 464   3                                      start=0;
 465   3                                      yt=0;
 466   3                                      TR1=0;
 467   3                                      }
 468   2                              }
 469   1                      
 470   1                      
 471   1                      else
 472   1                      {
 473   2                                      if(start==1)
 474   2                                      {       //是起始才可以继续接收
 475   3                                              temp1=TH1;      //装入上次定时值
 476   3                                              TH1=TL1=0;      //重新计数
 477   3                                              if(temp1>=0x05)
 478   3                                                      {       //大于1.2ms
 479   4                                                      h=1;
 480   4                                                      }
 481   3                                              else if(temp1>=0x01)
 482   3                                                      {       //大于0.25ms
 483   4                                                      
 484   4                                                      h=0;
 485   4                                                      }
 486   3                                              da*=2;
 487   3                                              if(h) da++;
 488   3                                              gt++;
 489   3                                              if(gt==8)
C51 COMPILER V7.07   YK1602                                                                09/08/2006 10:12:13 PAGE 9   

 490   3                                                      {               //读8位
 491   4                                                      gt=0;gv++;
 492   4                                                      if(gv==1) temp2=da;
 493   4                                                      if(gv==2) temp3=da;
 494   4                                                      if(gv==3) temp4=da;
 495   4                                                      if(gv==4) 
 496   4                                                              {temp5=da;
 497   5                                                              gv=0;
 498   5                                                              start=0;
 499   5                                                              yt=0;
 500   5                                                              TR1=0;
 501   5                                                              }
 502   4                                                      
 503   4                                                      da=0;
 504   4                                                      }
 505   3                                              
 506   3                                              }
 507   2                      
 508   2                      
 509   2                      
 510   2                      }
 511   1              }
 512          /*------------------------*/
 513          
 514          void main(void)
 515          {
 516   1              init_timer();
 517   1              led6[0]=0;
 518   1              led6[1]=2;
 519   1              led6[2]=2;
 520   1              led6[3]=2;
 521   1              led6[4]=2;
 522   1              led6[5]=2;
 523   1              lcdreset();             //初始化
 524   1              delay400ms();
 525   1              disp1(3,0);
 526   1              disp(2,1,love);         //显示
 527   1              
 528   1              delay400ms();
 529   1              
 530   1      //      DispOneChar(0,1,time[1]);
 531   1              while(1)
 532   1              {
 533   2                      delay400ms();
 534   2                      disp1(3,0);
 535   2                      acct_1();
 536   2                      yk();
 537   2              }
 538   1              
 539   1              
 540   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1081    ----
   CONSTANT SIZE    =     38    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.07   YK1602                                                                09/08/2006 10:12:13 PAGE 10  


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

⌨️ 快捷键说明

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