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

📄 key_new.lst

📁 这是单片机驱动液晶显示器12864和键盘的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 328   1              _nop_();
 329   1              P0 = 0XFF;
 330   1      //      e = 1;
 331   1              rs = 0;
 332   1              _nop_();
 333   1              rw = 1;
 334   1              _nop_();
 335   1              e = 1;
 336   1      //      delay(10);
 337   1      //      dat = P0;
 338   1      //      delay(10);
 339   1      //      e = 0;
 340   1      //      return(dat&0x7f);
 341   1              return(P0&0x7f);
 342   1      }
 343          
 344          void lcd_dis_num(uint dat)
 345          {
 346   1          uint a=0;
 347   1          dat =dat%10000;
 348   1          a =dat/1000;
 349   1          lcd_wrd(0x30+a);
 350   1          dat =dat%1000;
 351   1          a =dat/100;
 352   1          lcd_wrd(0x30+a);
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 7   

 353   1          dat =dat%100;
 354   1          a=dat/10;
 355   1          lcd_wrd(0x30+a);
 356   1          dat =dat%10;
 357   1          lcd_wrd(0x30+dat);
 358   1      }
 359          void lcd_dis_ch(uchar h,uchar l)
 360          {
 361   1          lcd_wrd(h);
 362   1          lcd_wrd(l);
 363   1      }
 364          
 365          void lcd_add(uchar h,uchar l)       //定位地址
 366          {
 367   1        l--;
 368   1        switch(h)
 369   1        {
 370   2          case 1:
 371   2          {
 372   3            lcd_wrc(0x80+l);
 373   3            break;
 374   3          }
 375   2          case 2:
 376   2          {
 377   3            lcd_wrc(0x90+l);
 378   3            break;
 379   3          }
 380   2          case 3:
 381   2          {
 382   3            lcd_wrc(0x88+l);
 383   3            break;
 384   3          }
 385   2          case 4:
 386   2          {
 387   3            lcd_wrc(0x98+l);
 388   3            break;
 389   3          }
 390   2        }
 391   1      }
 392          
 393          
 394          
 395          
 396          //高位发送,低位读入
 397          uchar check_key(void)
 398          {
 399   1              uchar a = 0;
 400   1              P1 = 0x0f;
 401   1              a = P1&0X0f;
 402   1          return(a);
 403   1      }
 404          uchar key_data_ok(void)
 405          {
 406   1              uchar keydata = 0;
 407   1              uchar key_data_check = 0;
 408   1      
 409   1                      key_data_check = check_key();
 410   1                      if(key_data_check != 0x0f)
 411   1                      {
 412   2                              keydata = key_data();
 413   2                      }
 414   1                      while(key_data_check != 0x0f)
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 8   

 415   1                      {
 416   2                              key_data_check = check_key();
 417   2                      }
 418   1                      lcd_add(4,4);
 419   1                      lcd_dis_num(key_data_check);
 420   1      
 421   1      
 422   1      
 423   1              return(keydata);
 424   1      }
 425          
 426          
 427          unsigned char key_data()      //判断键值
 428          {
 429   1              uchar a=0,b=0,c=0,d=0,i=0;
 430   1              a = 0xef;
 431   1              for(i = 0;i<4;i++)      //读行
 432   1              {
 433   2                  P1 = a;
 434   2                      delay(10);
 435   2                  b = P1;
 436   2                      b = b&0x0f;
 437   2      //      b = b>>4;
 438   2                  if(b!=0x0F)   //表示有键按下
 439   2              {
 440   3                              delay(200);   //软件延时   确认有键按下
 441   3                              b = P1&0X0F;
 442   3      //              b = b>>4;
 443   3                      if(b != 0x0F)
 444   3                      {  
 445   4      //                      return b;
 446   4      
 447   4                                      c=b;
 448   4                              if(c==0X07)
 449   4                              {
 450   5                                      d=i*4+3;
 451   5                              }
 452   4                              else if(c==0X0B)
 453   4                              {
 454   5                                      d=i*4+2;
 455   5                              }
 456   4                              else if(c==0X0D)
 457   4                              {
 458   5                                      d=i*4+1;
 459   5                              }
 460   4                              else if(c==0X0E)
 461   4                              {
 462   5                                      d=i*4;
 463   5                              }
 464   4                                  break;
 465   4                              }
 466   3                      }
 467   2              else
 468   2                  {
 469   3                      a = a<<1;
 470   3                              a = a+0x01;
 471   3                      if(a==0xFF)
 472   3                      {
 473   4      //                      return 0x0f;
 474   4                                      d = 0x0f+1;
 475   4                                      break;
 476   4                      }
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 9   

 477   3              }
 478   2              }
 479   1              return d;
 480   1      }
 481          
 482          
 483          
 484          
 485          void main()
 486          {
 487   1      /*
 488   1              P0 = 0XFF;
 489   1              P1 = 0XFF;
 490   1              P2 = 0XFF;
 491   1              P3 = 0XFF;
 492   1      
 493   1              P0 = 0X00;
 494   1              P1 = 0X00;
 495   1              P2 = 0X00;
 496   1              P3 = 0X00;
 497   1      */      
 498   1      
 499   1              uchar i = 0;
 500   1              uchar v = 0;
 501   1              uchar keydata = 0;
 502   1              uchar key_data_check = 0;
 503   1      //      uchar KeyWord[]="1.单步执行2.单步执行3.单步执行4.单步执行5.单步执行6.单步执行7.单步执行";
 504   1              uchar KeyWord[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ是一种具有并行线或线串行多种接口方式";
 505   1              uchar dat_1[] = {"1.列车检测"};
 506   1              uchar dat_2[] = {"2.单车检测"};
 507   1              uchar dat_3[] = {"3.参数设置"};
 508   1              uchar dat_4[] = {"4.历史数据"};
 509   1      
 510   1              lcd_off();
 511   1              lcd_on();
 512   1              lcd_ini();
 513   1      //      lcd_wrc(0x80);
 514   1      /*
 515   1              for(i=0;i<60;i++)
 516   1              {
 517   1                              lcd_wrd(0x00+i);
 518   1              }
 519   1      */
 520   1      //      delay(100);
 521   1      
 522   1              lcd_add(1,1);
 523   1              for(i=0;i<60;i=i+2)
 524   1              {
 525   2                      lcd_dis_ch(KeyWord[i],KeyWord[i+1]);
 526   2              }
 527   1      
 528   1      //      lcd_dis_ch(0xb5,0xa1);
 529   1      //      lcd_dis_ch(0xb5,0xa1);
 530   1      //      lcd_dis_ch(0xb5,0xa1);
 531   1              ldelay(200);
 532   1      //      i=lcd_read_ac();
 533   1      //      i=lcd_read_ac();
 534   1      //      i=lcd_read_ac();
 535   1      //      delay(200);
 536   1      //      lcd_dis_num(i);
 537   1      //      lcd_dis_num(12458);
 538   1      /*
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 10  

 539   1              lcd_add(2,1);
 540   1              lcd_dis_num(KeyWord[0]);
 541   1              lcd_dis_num(KeyWord[1]);
 542   1      */
 543   1      
 544   1      
 545   1              while(1)
 546   1              
 547   1              {
 548   2                      
 549   2      
 550   2                      key_data_check = check_key();
 551   2                      if(key_data_check != 0x0f)
 552   2                      {
 553   3                              keydata = key_data();
 554   3                      }
 555   2                      while(key_data_check != 0x0f)
 556   2                      {
 557   3                              key_data_check = check_key();
 558   3                      }
 559   2                      lcd_add(4,4);
 560   2                      lcd_dis_num(key_data_check);
 561   2      
 562   2                      lcd_add(4,7);
 563   2                      switch(keydata)
 564   2                      {
 565   3                              case 0:
 566   3                              {
 567   4                                      v = 3;
 568   4                                      lcd_dis_num(v);
 569   4                                      break;
 570   4                              }
 571   3                              case 1:
 572   3                              {
 573   4                                      v = 4;
 574   4                                      lcd_dis_num(v);
 575   4                                      break;
 576   4                              }
 577   3                              case 2:
 578   3                              {
 579   4                                      v = 5;
 580   4                                      lcd_dis_num(v);
 581   4                                      break;
 582   4                              }
 583   3                              case 3:
 584   3                              {
 585   4                                      v = 6;
 586   4                                      lcd_dis_num(v);
 587   4                                      break;
 588   4                              }
 589   3                              case 4:
 590   3                              {
 591   4                                      v = 2;
 592   4                                      lcd_dis_num(v);
 593   4                                      break;
 594   4                              }
 595   3                              case 5:
 596   3                              {
 597   4                                      v = 7;
 598   4                                      lcd_dis_num(v);
 599   4                                      break;
 600   4                              }
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 11  

 601   3                              case 6:
 602   3                              {
 603   4                                      v = 8;
 604   4                                      lcd_dis_num(v);
 605   4                                      break;
 606   4                              }
 607   3                              case 7:
 608   3                              {
 609   4                                      v = 9;
 610   4                                      lcd_dis_num(v);
 611   4                                      break;
 612   4                              }
 613   3                              case 8:
 614   3                              {
 615   4                                      v = 1;
 616   4                                      lcd_dis_num(v);
 617   4                                      break;
 618   4                              }
 619   3                              case 9:
 620   3                              {
 621   4                                      v = 10;
 622   4                                      lcd_dis_num(v);
 623   4                                      break;
 624   4                              }
 625   3                              case 10:
 626   3                              {
 627   4                                      v = 11;
 628   4                                      lcd_dis_num(v);
 629   4                                      break;
 630   4                              }
 631   3                              case 11:
 632   3                              {
 633   4                                      v = 12;
 634   4                                      lcd_dis_num(v);
 635   4                                      break;
 636   4                              }
 637   3                              case 12:
 638   3                              {
 639   4                                      v = 0;
 640   4                                      lcd_dis_num(v);
 641   4                                      break;
 642   4                              }
 643   3                              case 13:
 644   3                              {
 645   4                                      v = 13;
 646   4                                      lcd_dis_num(v);
 647   4                                      break;
 648   4                              }
 649   3                              case 14:
 650   3                              {
 651   4                                      v = 14;
 652   4                                      lcd_dis_num(v);
 653   4                                      break;
 654   4                              }
 655   3                              case 15:
 656   3                              {
 657   4                                      v = 15;
 658   4                                      lcd_dis_num(v);
 659   4                                      break;
 660   4                              }
 661   3                              default:
 662   3                              {
C51 COMPILER V7.07   KEY_NEW                                                               06/14/2007 21:11:22 PAGE 12  

 663   4                                      v = 16;
 664   4                                      lcd_dis_num(v);
 665   4                                      break;
 666   4                              }
 667   3                      }
 668   2      
 669   2              }
 670   1      }
 671          

C51 COMPILATION COMPLETE.  3 WARNING(S),  10 ERROR(S)

⌨️ 快捷键说明

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