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