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

📄 yue1112212.lst

📁 本系统的控制部分是以89C51为核心
💻 LST
📖 第 1 页 / 共 3 页
字号:
 275   1              Clr_Scr();//清屏
 276   1              LCD_Write_string(1,0,idea2);//标题-磁通计-
 277   1              LCD_Write_string(2,0,shape);
 278   1              LCD_Write_string(2,4,poles);//
 279   1              LCD_Write_string(3,0,"Q:           ");
 280   1              LCD_Write_string(4,0,range);//
 281   1              LCD_Write_string(4,4,work);//
 282   1              LCD_Write_string(4,6," off") ;
 283   1      
 284   1      }
 285          /***************************按键中断**********************************/
 286          void int1_(void) interrupt 2
 287          { uchar js; uchar biao;
 288   1        hd7279send_byte(0xa4);
 289   1        hd7279send_byte(0x15);
 290   1        js=hd7279receive_byte();
 291   1        hd_7279cs=1;
 292   1        if(js==11)
 293   1           {
 294   2              biao3=~biao3; //磁通计与高斯计的转换
 295   2              Clr_Scr();//清屏
 296   2              Delaynms(1000);
 297   2              if (biao3==0)
 298   2                  { Lcd_Mark1( );}
 299   2              else
 300   2                  {  Lcd_Mark2( );}
 301   2              Delaynms(1000);
 302   2              biao=1;
 303   2               }
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 6   

 304   1        if(biao)
 305   1           {  ajcl(js);}
 306   1      }
 307          
 308          /********************************按键处理******************************************/
 309          void ajcl(js)
 310          {
 311   1        switch(js)
 312   1         {  case 0 :  axszj(0);
 313   2            break;
 314   2            case 1 :  axszj(1);
 315   2             break;
 316   2            case 2 : axszj(2);
 317   2             break;
 318   2            case 3 : axszj(3);
 319   2            break;
 320   2            case 4 : axszj(4);
 321   2            break;
 322   2            case 5 : axszj(5);
 323   2            break;
 324   2            case 6 : axszj(6);
 325   2            break;
 326   2            case 7 : axszj(7);
 327   2             break;
 328   2            case 8 : axszj(8);
 329   2            break;
 330   2            case 9 : axszj(9);
 331   2             break;
 332   2            case 10: axszj(12);
 333   2             break;
 334   2            case 12: if(biao3==0)
 335   2                     {
 336   3                     if(biao1==1)       //测量开始关闭按键
 337   3                        { biao1=0;
 338   4                          LCD_Write_string(3,6," off") ;
 339   4                        }
 340   3                      else
 341   3                        { biao1=1;
 342   4                          LCD_Write_string(3,6," on ") ;
 343   4                        } //
 344   3                      }
 345   2                      else
 346   2                      {
 347   3                        Clr_Scr();//清屏
 348   3                        Delaynms(1000);
 349   3                        LCD_Write_string(1,0,"Please insert ");//标题-磁通计-
 350   3                        LCD_Write_string(2,0,"the magnet");//标题-磁通计-
 351   3                        Write_char(0,0x0c);  //显示打开,光标关,反白关
 352   3                        TR0=1;
 353   3                      }
 354   2                     break;
 355   2           case 13:   if (biao4==1)           //单位选择按键
 356   2                      { biao4=0;}
 357   2                       else
 358   2                       { biao4=1;}
 359   2                      if(biao2==0&&biao4==1)
 360   2                      {LCD_Write_string(3,0,"200mT   ");}
 361   2                      if(biao2==1&&biao4==1)
 362   2                      { LCD_Write_string(3,0,"2T      ");}
 363   2                      if(biao2==0&&biao4==0)
 364   2                      {LCD_Write_string(3,0,"2000Gs  ");}
 365   2                      if(biao2==1&&biao4==0)
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 7   

 366   2                      {LCD_Write_string(3,0,"20000Gs ");}
 367   2                       break;
 368   2            case 14:if(biao2==0)         //量程选择按键
 369   2                     { biao2=1;
 370   3                     }
 371   2                     else
 372   2                     {biao2=0;
 373   3                     }
 374   2                     if(biao2==0&&biao4==1)
 375   2                     {LCD_Write_string(3,0,"200mT   ");}
 376   2                     if(biao2==1&&biao4==1)
 377   2                     { LCD_Write_string(3,0,"2T      ");}
 378   2                     if(biao2==0&&biao4==0)
 379   2                     {LCD_Write_string(3,0,"2000Gs  ");}
 380   2                     if(biao2==1&&biao4==0)
 381   2                     {LCD_Write_string(3,0,"20000Gs ");}
 382   2                     break;
 383   2            case 15: LCD_set_xy(2,3);
 384   2                     Write_char(0,0x0e);  //显示打开,光标开 ,反白关
 385   2                     break;     //形状判断按键
 386   2            case 16:  LCD_set_xy(2,7);
 387   2                     Write_char(0,0x0e);
 388   2                     break;     //极数输入按键
 389   2            case 17: biao1=0;     //测量范围输入按键  关AD
 390   2                     xueren=0;     //测量范围从设时,确定标志位归零
 391   2                     makerang();
 392   2                     break;
 393   2            case 18: xueren+=1;    //按下确定键
 394   2                     if(xueren==2)
 395   2                         { Clr_Scr();//清屏
 396   3                           Delaynms(1000);
 397   3                           Lcd_Mark1( );
 398   3      
 399   3                         }
 400   2                     if(xueren==1)
 401   2                         {
 402   3                          m=4;n=3;
 403   3                          LCD_set_xy(m,n);
 404   3                          srjs2=0;
 405   3                          biao5=1;//biao5为1表示输入下限
 406   3                         }
 407   2                     break;
 408   2            case 19:  //按下删除键
 409   2                      if(biao5==0)
 410   2                         {
 411   3                           LCD_Write_string(3,0,"Upper:      ");
 412   3                           LCD_set_xy(m,n);
 413   3                         }
 414   2                     else
 415   2                        {
 416   3                           LCD_Write_string(4,0,"Lower:      ");
 417   3                           LCD_set_xy(m,n);
 418   3                        }
 419   2      
 420   2            break;
 421   2         }
 422   1      }
 423          /**********************************************************/
 424          void makerang(void)
 425          {   EX1=0;  //开外中断一
 426   1          Clr_Scr();//清屏
 427   1          Delaynms(1000);
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 8   

 428   1          LCD_Write_string(1,0," Please input ");
 429   1           LCD_Write_string(2,0,"     rang   ");
 430   1          LCD_Write_string(3,0,"Upper:");
 431   1          LCD_Write_string(4,0,"Lower:");
 432   1          m=3;n=3;//输入上限的位置
 433   1          LCD_set_xy(m,n);
 434   1          Write_char(0,0x0e);  //显示打开,光标开 ,反白关
 435   1          srjs1=0;       //输入计数mt
 436   1          biao5=0;    //biao5为零表示输入上限
 437   1          EX1=1;  //开外中断一
 438   1      }
 439          /**********************按下数字键************************/
 440          void axszj(uchar js)
 441          {
 442   1           LCD_Write_number(js) ;
 443   1           if (biao5==0)
 444   1                 {sz2[srjs1]=js;
 445   2                  srjs1++;
 446   2                 }
 447   1           else
 448   1              {
 449   2               sz3[srjs2]=js ;
 450   2               srjs2++;
 451   2              }
 452   1      
 453   1      }
 454          /**************************判断合格与不合格********************************************/
 455          void panluan(void)
 456          {uchar i;
 457   1       Write_char(0,0x0c);  //显示打关,光标关,反白关
 458   1       for(i=0;i<9;i++)
 459   1       {
 460   2              if(sz1[i]>sz2[i]||sz1[i]<sz3[i])
 461   2               {
 462   3                Delaynms(1000);
 463   3                LCD_Write_string(4,0," unqualified");
 464   3                break;
 465   3               }
 466   2               if(sz1[i]<sz2[i]&&sz1[i]>sz3[i])
 467   2               {
 468   3                Delaynms(1000);
 469   3                LCD_Write_string(4,0," Qualified");
 470   3                break;
 471   3               }
 472   2               if(i==8)
 473   2               {
 474   3                Delaynms(1000);
 475   3                LCD_Write_string(4,0," Qualified");
 476   3               }
 477   2      }//for
 478   1      }
 479          /**********************************显示*************************/
 480          void disp(void)
 481          { float u;long v,x,y,z,w,q,p,r;
 482   1        uchar u1=0;
 483   1        uchar i;
 484   1        u=(((float)out-0x800)*10)/0x7ff;
 485   1        if(u<0)
 486   1        {u=u*(-1);
 487   2         u1=1;}  //求绝对值
 488   1       if(biao2==0)       //mt
 489   1       {
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 9   

 490   2       r=(u/25)*10000000;
 491   2       x=r/1000000;     //点后最低位
 492   2       y=(r/100000)%10;  //最高位
 493   2       z=(r/10000)%10;    //次高位
 494   2       q=(r/1000)%10;    //最低位
 495   2       p=(r%1000)/100;//点后最高位
 496   2       v=(r/100)%10;
 497   2       w=r%10;
 498   2       }
 499   1      else          //t
 500   1       {
 501   2       r=(u/2.5)*100000;
 502   2       x=r/100000;     //点后最低位
 503   2       y=(r/10000)%10;  //最高位
 504   2       z=(r/1000)%10;    //次高位
 505   2       q=(r/100)%10;    //次高位
 506   2       p=(r%100)/10;    //次高位
 507   2       v=r%10;
 508   2       }
 509   1      if(biao2==0&&biao4==1)    //四位小数
 510   1       {i=0;
 511   2       LCD_Write_string(2,0,"B:          ");
 512   2       LCD_set_xy(2,1);
 513   2       if(u1==1)
 514   2       {LCD_Write_number(13) ;}
 515   2       if(x)
 516   2       {LCD_Write_number(x) ;
 517   3       sz1[i]=x;i++;}
 518   2       if(y)
 519   2       {LCD_Write_number(y) ;
 520   3       sz1[i]=y;i++;}
 521   2       if(z)
 522   2       {LCD_Write_number(z) ;
 523   3       sz1[i]=z;i++;}
 524   2       else
 525   2       {LCD_Write_number(0) ;
 526   3       sz1[i]=0;i++; }
 527   2       LCD_Write_number(12) ;
 528   2       sz1[i]=12;i++;
 529   2       if(q)
 530   2       {LCD_Write_number(q) ;
 531   3       sz1[i]=q; i++;}
 532   2       if(p)
 533   2       {LCD_Write_number(p) ;
 534   3       sz1[i]=p;i++;}
 535   2       if(v)
 536   2       {LCD_Write_number(v) ;
 537   3       sz1[i]=v;i++;}
 538   2       if(w)
 539   2       {LCD_Write_number(w) ;
 540   3       sz1[i]=w;i++;}
 541   2       LCD_Write_string(2,6,"mT");
 542   2       LCD_Write_string(3,0,"200mT   ");//
 543   2       Delaynms(1000);
 544   2       Delaynms(1000);
 545   2       Delaynms(1000);
 546   2      }
 547   1      if(biao2==1&&biao4==1)           //三位小数
 548   1      {i=0;
 549   2       LCD_Write_string(2,0,"B:          ");
 550   2       LCD_set_xy(2,1);
 551   2       if(u1==1)
C51 COMPILER V7.50   YUE1112212                                                            01/22/2004 15:11:07 PAGE 10  

 552   2       {LCD_Write_number(13) ;}
 553   2       if(x)
 554   2       {LCD_Write_number(x) ;
 555   3       sz1[i]=x;i++;}

⌨️ 快捷键说明

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