choice_transmit.lst

来自「校园打铃系统」· LST 代码 · 共 1,254 行 · 第 1/4 页

LST
1,254
字号
 296   4                           i++;
 297   4                           break;
 298   4                       }
 299   3                }
 300   2            }
 301   1         else            //整数部分为0
C51 COMPILER V7.06   CHOICE_TRANSMIT                                                       06/07/2007 15:48:06 PAGE 6   

 302   1            {
 303   2             for (i=0;i<8;i++)
 304   2               {
 305   3                if(i==6)
 306   3                   {
 307   4                      LCDDisplaybuffer[i]='.';
 308   4                   }
 309   3                 else
 310   3                   {
 311   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 312   4                    frequency/=10;
 313   4                   }
 314   3             }
 315   2          }
 316   1      
 317   1         for (j=0;j<7;j++)     //可以通过改变j的范围来增减显示的位数
 318   1             {
 319   2                LCD_write_char(x++,y,LCDDisplaybuffer[i-1]);
 320   2                i--;
 321   2      
 322   2             }
 323   1      
 324   1      
 325   1      
 326   1      }
 327          
 328          /*********************************************************************************
 329          ** 函数名:INT_NUM_Display(unsigned int Num)**************************************
 330          ** 功能:显示整数*****************************************************************
 331          ** 入口参数:unsigned int Num (Num 为调用这个子程序时传入的数据)****************
 332          *********** 这里可以通过改变div的值来增减显示的位数 ******************************
 333          ******这个例子显示5位数***********************************************************
 334          ** 出口参数:无 ******************************************************************
 335          **注意各变量的数据类型,根据数的范围来改变形参的数据类型**************************
 336          **********************************************************************************/
 337          /*void INT_NUM_Display(unsigned int Num,uchar x,uchar y)
 338          {
 339               uchar i;
 340               unsigned int div=10000;
 341               for (i=0;i<8;i++)
 342                   {
 343                       LCDDisplaybuffer[i]=CHR[Num/div];
 344                       Num%=div;
 345                       div/=10;
 346                    }
 347          
 348               LCD_write_string(x,y,LCDDisplaybuffer);
 349          
 350          }
 351          
 352          /*********************************************************************************
 353          ** 函数名:HEX_NUM_Display(long int Num,uchar Bit)********************************
 354          ** 功能:16进制数值显示函数*******************************************************
 355          ** 入口参数:unsigned long Num,uchar Bite( Num   需要显示的数值(最长8位)********
 356          *****************************************(  Bite   有效显示位数 )****************
 357          ** 出口参数:无 ******************************************************************
 358          **********************************************************************************/
 359          /*void HEX_NUM_Display(unsigned long  Num,uchar Bite,uchar x,uchar y)   //这里的形参Num类型一定要为
 360                                                                                //unsigned long,不然不会显示
 361          
 362          {
 363              uchar a=0,i=0;
C51 COMPILER V7.06   CHOICE_TRANSMIT                                                       06/07/2007 15:48:06 PAGE 7   

 364              for(a=8-Bite;a<8;a++)
 365                {
 366          
 367                     LCDDisplaybuffer[i]=CHR[(Num<<(a<<2))>>28];
 368                     i++;
 369                }
 370              LCD_write_string(x,y,LCDDisplaybuffer);
 371          }
 372          
 373          /************************ LCD End **************************************************/
 374          
 375          
 376          /**************************Other Part************************************************/
 377          
 378          
 379          /***************send_message**************************/
 380          #define KEY P0
 381          //#define uchar unsigned char
 382          //bit judge_hitkey();
 383          //uchar scan_key();
 384          uchar cd[32]={"                                "};
 385          uchar sp;
 386          void xp(uchar d);
 387          uchar xx,yy,date0;
 388          void manage_key1(void);
 389          void manage_key2(uchar keycode);
 390          void manage_key3(uchar keycode);
 391          void manage_key4(void);
 392          void manage_key5(uchar keycode);
 393          void manage_key6(uchar keycode);
 394          void manage_key7(uchar keycode);
 395          void manage_key8(void);
 396          void manage_key9(uchar keycode);
 397          void manage_key10(uchar keycode);
 398          void manage_key11(uchar keycode);
 399          //void manage_key12(void);
 400          void manage_key13(uchar keycode);
 401          void manage_key14(uchar keycode);
 402          void manage_key15(uchar keycode);
 403          //void manage_key16(void);
 404          void xp(uchar d);
 405          bit judge_hitkey()
 406          {uchar scancode,keycode; 
 407   1         scancode=0x0f;
 408   1         KEY=scancode;
 409   1         keycode=KEY;
 410   1         if(keycode==0x0f)
 411   1         return(0);
 412   1         else
 413   1         return(1);
 414   1         
 415   1      }
 416          uchar scan_key()
 417          { uchar scancode,keycode; 
 418   1       scancode=0xef;
 419   1        while(scancode!=0xff)
 420   1         {  KEY=scancode;
 421   2            keycode=KEY;
 422   2                if((keycode&0x0f)!=0x0f)
 423   2                break;
 424   2                scancode=(keycode<<1)|0x0f;
 425   2         }
C51 COMPILER V7.06   CHOICE_TRANSMIT                                                       06/07/2007 15:48:06 PAGE 8   

 426   1         
 427   1         
 428   1         keycode=~keycode;
 429   1         return(keycode);
 430   1      }
 431          void key_manage(uchar keycode)
 432          {  switch(keycode)
 433   1         {  case 0x11:manage_key1();break;
 434   2            case 0x12:manage_key2(keycode);break;
 435   2                case 0x14:manage_key3(keycode);break;
 436   2            case 0x18:manage_key4();break;
 437   2                case 0x21:manage_key5(keycode);break;
 438   2            case 0x22:manage_key6(keycode);break;
 439   2                case 0x24:manage_key7(keycode);break;
 440   2            case 0x28:manage_key8();break;
 441   2                case 0x41:manage_key9(keycode);break;
 442   2            case 0x42:manage_key10(keycode);break;
 443   2                case 0x44:manage_key11(keycode);break;
 444   2           // case 0x48:manage_key12();break;
 445   2                case 0x81:manage_key13(keycode);break;
 446   2            case 0x82:manage_key14(keycode);break;
 447   2                case 0x84:manage_key15(keycode);break;
 448   2           // case 0x88:manage_key16();break;
 449   2               default:  break;
 450   2      
 451   2         }
 452   1      }
 453          
 454          
 455          void manage_key1(void)
 456          {cd[sp]='1';
 457   1       xp(sp);
 458   1       delay_nms(100);
 459   1      sp++;
 460   1      if(sp==32)
 461   1      sp=31;
 462   1      }
 463          /***************************************
 464          ****************************************/
 465          void manage_key2(uchar keycode )
 466          {
 467   1      do{cd[sp]='2';
 468   2       xp(sp);
 469   2      delay_nms(100);
 470   2       if(KEY==~keycode)
 471   2         {cd[sp]='a';
 472   3         xp(sp);
 473   3      delay_nms(100);
 474   3          if(KEY==~keycode)
 475   3         {cd[sp]='b';
 476   4          xp(sp);
 477   4      delay_nms(100);
 478   4           if(KEY==~keycode)
 479   4          {cd[sp]='c';
 480   5            xp(sp);
 481   5      delay_nms(100);
 482   5           }
 483   4           }
 484   3            }
 485   2      }while(KEY==~keycode);
 486   1      
 487   1      sp++;
C51 COMPILER V7.06   CHOICE_TRANSMIT                                                       06/07/2007 15:48:06 PAGE 9   

 488   1      if(sp==32)
 489   1      sp=31;
 490   1      }
 491          
 492          /***************************************
 493          ****************************************/
 494          
 495          void manage_key3(uchar keycode)
 496          {
 497   1      do{cd[sp]='3';
 498   2       xp(sp);
 499   2      delay_nms(100);
 500   2       if(KEY==~keycode)
 501   2         {cd[sp]='d';
 502   3         xp(sp);
 503   3      delay_nms(100);
 504   3          if(KEY==~keycode)
 505   3         {cd[sp]='e';
 506   4          xp(sp);
 507   4      delay_nms(100);
 508   4           if(KEY==~keycode)
 509   4          {cd[sp]='f';
 510   5            xp(sp);
 511   5      delay_nms(100);
 512   5           }
 513   4           }
 514   3            }
 515   2      }while(KEY==~keycode);
 516   1      
 517   1      sp++;
 518   1      if(sp==32)
 519   1      sp=31;
 520   1      }
 521          /***************************************
 522          ****************************************/
 523          
 524          void manage_key4(void)
 525          {
 526   1      LCD_init();
 527   1      LCD_write_string(1,LINE1,"sending......");
 528   1      for(xx=0;xx<32;xx++) //字符数组 32个
 529   1      {SBUF=0x05a;
 530   2      delay_nms(10);
 531   2      SBUF=cd[xx];
 532   2      delay_nms(10);
 533   2      while(!TI);
 534   2      TI=0;
 535   2      }
 536   1      LCD_init();
 537   1      LCD_write_string(5,LINE1,"OK!");
 538   1      delay_nms(150);
 539   1      LCD_init();
 540   1      LCD_write_string(0,LINE1,cd);
 541   1      }  
 542          
 543          /***************************************
 544          ****************************************/
 545          
 546          void manage_key5(uchar keycode)
 547          {
 548   1      do{cd[sp]='4';
 549   2       xp(sp);
C51 COMPILER V7.06   CHOICE_TRANSMIT                                                       06/07/2007 15:48:06 PAGE 10  

 550   2      delay_nms(100);
 551   2       if(KEY==~keycode)
 552   2         {cd[sp]='g';
 553   3         xp(sp);
 554   3      delay_nms(100);
 555   3          if(KEY==~keycode)
 556   3         {cd[sp]='h';
 557   4          xp(sp);
 558   4      delay_nms(100);
 559   4           if(KEY==~keycode)
 560   4          {cd[sp]='i';
 561   5            xp(sp);
 562   5      delay_nms(100);
 563   5           }
 564   4           }
 565   3            }
 566   2      }while(KEY==~keycode);
 567   1      
 568   1      sp++;
 569   1      if(sp==32)
 570   1      sp=31;
 571   1      }
 572          
 573          /***************************************
 574          ****************************************/
 575          
 576          void manage_key6(uchar keycode)
 577          {
 578   1      do{cd[sp]='5';
 579   2       xp(sp);
 580   2      delay_nms(100);
 581   2       if(KEY==~keycode)
 582   2         {cd[sp]='j';
 583   3         xp(sp);
 584   3      delay_nms(100);
 585   3          if(KEY==~keycode)
 586   3         {cd[sp]='k';
 587   4          xp(sp);
 588   4      delay_nms(100);
 589   4           if(KEY==~keycode)
 590   4          {cd[sp]='l';
 591   5            xp(sp);
 592   5      delay_nms(100);
 593   5           }
 594   4           }
 595   3            }
 596   2      }while(KEY==~keycode);
 597   1      
 598   1      sp++;
 599   1      if(sp==32)

⌨️ 快捷键说明

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