📄 1602+24c08+4x4+
字号:
428 { TH1=(65536-50000)/256;
429 1 TL1=(65536-50000)%256;
430 1 if(count1<20)
431 1 { count1++;
432 2 }
433 1 else //计时到1S
434 1 { TR1=0;
435 2 count1=0;
436 2 mimaflag=0;
437 2
438 2 red=1;
439 2 bell=1;
440 2 //显示FFFFFFFF
441 2 write_com(0x01);
442 2 write_com(0x80);
443 2 for(count3=0;count3<16;count3++)
444 2 {
445 3 write_date(table1[count3]); //显示INPUT THE PASSCODE
446 3 delay(5);
447 3 }
448 2 write_com(0x80+0x40);
449 2 for(count3=0;count3<16;count3++)
450 2 {
451 3 write_date(table2[count3]); //开机显示FFFFFFFF
452 3 delay(5);
453 3 }
454 2 }
455 1 }
456 //***********************************************定时0**********************************************
457 void time_0() interrupt 1
458 { TH0=(65536-50000)/256;
459 1 TL0=(65536-50000)%256;
460 1 if(count4<8)
461 1 { key_scan();
462 2 }
463 1 else
464 1 { TR0=0;
465 2 count4=0;
466 2 }
467 1 }
468 //初始化函数
469 void init()
470 { uchar i;
471 1 lcden=0;
472 1 write_com(0x38); //打开显示模式设置
473 1 write_com(0x0c); //打开显示,光标等等设置未零
474 1 write_com(0x06); //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移,
475 1 write_com(0x01); //清零指令
476 1 write_com(0x80); //指针所指位置
477 1 //定时器初始化
478 1 TMOD=0x11; //T0,T1工作方式1
479 1 TH0=(65536-2000)/256;
480 1 TL0=(65536-2000)%256; //T0初始化2MS
481 1
482 1 TH1=(65536-50000)/256;
483 1 TL1=(65536-50000)%256; //T1初始化50MS
484 1
485 1 TR1=0;
486 1 ET1=1;
487 1 EA=1;
488 1 TR0=0;
489 1 ET0=1;
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 9
490 1
491 1 count0=0; //初始没有密码输入,故为零
492 1 enterflag=0; //没有确认键按下
493 1 mimaflag=0; //密码正确与否键先置零
494 1
495 1 red=1; //红灯不亮
496 1 //************密码存入EPROM中**********************************
497 1 sda=1;
498 1 delay(5);
499 1 scl=1;
500 1 delay(5);
501 1 for(i=0;i<8;i++)
502 1 { write_add(i,8);
503 2 delay2(100);
504 2 }
505 1 for(i=0;i<8;i++)
506 1 { mima[i]=read_add(i);
507 2 delay(5);
508 2 }
509 1 }
510 void main()
511 { rw=0;
512 1 init();
513 1 write_com(0x80); //指针所指位置
514 1 for(count3=0;count3<16;count3++)
515 1 { write_date(table1[count3]); //第一行显示INPUT THE PASSPORD:
516 2 delay(5);
517 2 }
518 1 write_com(0x80+0x40);
519 1 for(count3=0;count3<16;count3++)
520 1 { write_date(table2[count3]); //开机显示FFFFFFFF
521 2 delay(5);
522 2 }
523 1 while(1)
524 1 { key_scan(); //调用键盘扫描函数
525 2 lcd_display();
526 2 }
527 1 }
528 //***************键盘扫描函数开始********************************
529 void key_scan()
530 {//**********扫描第一行*********
531 1 P1=0xfe;
532 1 temp=P3;
533 1 temp=temp&0xf0;
534 1 if(temp!=0xf0)
535 1 { delay(100);
536 2 if(temp!=0xf0)
537 2 { temp=P3;
538 3 switch(temp)
539 3 { case 0xee:
540 4 key_manage1(); break;
541 4 case 0xde:
542 4 key_manage2(); break;
543 4 case 0xbe:
544 4 key_manage3(); break;
545 4 case 0x7e:
546 4 key_manage4(); break;
547 4 }
548 3 while(temp!=0xf0)
549 3 { temp=P3;
550 4 temp=temp&0xf0;
551 4 }
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 10
552 3 }
553 2 }
554 1 //**************扫描第二行***********************************
555 1 P1=0xfd;
556 1 temp=P3;
557 1 temp=temp&0xf0;
558 1 if(temp!=0xf0)
559 1 { delay(100);
560 2 if(temp!=0xf0)
561 2 { temp=P3;
562 3 switch(temp)
563 3 { case 0xed:
564 4 key_manage5(); break;
565 4 case 0xdd:
566 4 key_manage6(); break;
567 4
568 4 case 0xbd:
569 4 key_manage7(); break;
570 4
571 4 case 0x7d:
572 4 key_manage8(); break;
573 4 }
574 3 while(temp!=0xf0)
575 3 { temp=P3;
576 4 temp=temp&0xf0;
577 4 }
578 3 }
579 2 }
580 1 //*********************************************扫描第三行***********************************
581 1 P1=0xfb;
582 1 temp=P3;
583 1 temp=temp&0xf0;
584 1 if(temp!=0xf0)
585 1 { delay(100);
586 2 if(temp!=0xf0)
587 2 { temp=P3;
588 3 switch(temp)
589 3 { case 0xeb:
590 4 key_manage9(); break;
591 4 case 0xdb:
592 4 key_manage10(); break;
593 4 case 0xbb:
594 4 key_manage11(); break;
595 4 case 0x7b:
596 4 key_manage12(); break;
597 4 }
598 3 while(temp!=0xf0)
599 3 { temp=P3;
600 4 temp=temp&0xf0;
601 4 }
602 3 }
603 2 }
604 1 //***************************************************扫描第四行****************************************
605 1 P1=0xf7;
606 1 temp=P3;
607 1 temp=temp&0xf0;
608 1 if(temp!=0xf0)
609 1 { delay(100);
610 2 if(temp!=0xf0)
611 2 { temp=P3;
612 3 switch(temp)
613 3 { case 0xe7:
C51 COMPILER V9.01 PASSWORD 10/15/2012 19:44:20 PAGE 11
614 4 key_manage13(); break;
615 4 case 0xd7:
616 4 key_manage14(); break;
617 4 case 0xb7:
618 4 key_manage15(); break;
619 4 case 0x77:
620 4 key_manage16(); break;
621 4 }
622 3 while(temp!=0xf0)
623 3 { temp=P3;
624 4 temp=temp&0xf0;
625 4 }
626 3 }
627 2 }
628 1 }
629
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1712 ----
CONSTANT SIZE = 188 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 67 2
IDATA SIZE = ---- ----
BIT SIZE = 4 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -