📄 yue1112212.lst
字号:
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 + -