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

📄 mouse.c

📁 单片机用于密码设计,4*4键盘用于密码输入,与设定密码一样时,输入成功,否则失败
💻 C
📖 第 1 页 / 共 2 页
字号:
 #include <AT89X52.H>
unsigned char ps[]={1,2,3,4,5};
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,
                              0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
                               0x6d,0x7d,0x07,0x7f,0x6f,
                               0x77,0x7c,0x39,0x5e,0x79,0x71,
                               0x00,0x40,0x73,0xff};
unsigned char dispbuf[8]={18,16,16,16,16,16,16,16};
unsigned char dispcount; 
unsigned char flashcount;
unsigned char temp;
unsigned char key; 
unsigned char keycount;
unsigned char pslen=5;
unsigned char getps[6];
bit keyoverflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa,bb;
unsigned int cc;
bit okflag;
bit alarmflag;
bit hibitflag;
unsigned char oka,okb;
void main(void)
{ 
  unsigned char i,j;
  TMOD=0x01;
  TH0=(65536-500)/256;
  TL0=(65536-500)%256;
  TR0=1;
  ET0=1;
  EA=1;
  while(1)
    {
      P3=0xff;
      P3_4=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        { 
		  for(i=10;i>0;i--) 

          for(j=248;j>0;j--); 

          temp=P3; 

          temp=temp & 0x0f; 

          if (temp!=0x0f) 

            { 

              temp=P3; 

              temp=temp & 0x0f;              

              switch(temp) 

                { 

                  case 0x0e: 

                    key=7; 

                    break; 

                  case 0x0d: 

                    key=8; 

                    break; 

                  case 0x0b: 

                    key=9; 

                    break; 

                  case 0x07: 

                    key=10; 

                    break; 

                } 

              temp=P3; 

              P1_1=~P1_1; 

              if((key>=0) && (key<10)) 

                { 

                  if(keycount<6) 

                    { 

                      getps[keycount]=key; 

                      dispbuf[keycount+2]=19; 

                    } 

                  keycount++; 

                  if(keycount==6) 

                    { 

                      keycount=6; 

  

                    } 

                    else if(keycount>6) 

                      { 

                        keycount=6; 

                        keyoverflag=1;//key overflow                        

                      } 

                } 

                else if(key==12)//delete key 

                  { 

                    if(keycount>0) 

                      { 

                        keycount--; 

                        getps[keycount]=0; 

                        dispbuf[keycount+2]=16; 

                      } 

                      else 

                        { 

                          keyoverflag=1; 

                        } 

                  } 

                  else if(key==15)//enter key 

                    { 

                      if(keycount!=pslen) 

                        { 

                          errorflag=1; 

                          rightflag=0; 

                          second3=0; 

                        } 

                        else 

                          { 

                            for(i=0;i<keycount;i++) 

                              { 

                                if(getps[i]!=ps[i]) 

                                  { 

                                    i=keycount; 

                                    errorflag=1; 

                                    rightflag=0; 

                                    second3=0; 

                                    goto a; 

                                  } 

                              } 

                            errorflag=0; 

                            rightflag=1; 

a:                          i=keycount; 

                          } 

                    } 

              temp=temp & 0x0f;              

              while(temp!=0x0f) 

                { 

                  temp=P3; 

                  temp=temp & 0x0f;              

                } 

              keyoverflag=0;//????????? 

            } 

        } 

      P3=0xff; 

      P3_5=0; 

      temp=P3; 

      temp=temp & 0x0f; 

      if (temp!=0x0f) 

        { 

          for(i=10;i>0;i--) 

          for(j=248;j>0;j--); 

          temp=P3; 

          temp=temp & 0x0f; 

          if (temp!=0x0f) 

            { 

              temp=P3; 

              temp=temp & 0x0f;              

              switch(temp) 

                { 

                  case 0x0e: 

                    key=4; 

                    break; 

                  case 0x0d: 

                    key=5; 

                    break; 

                  case 0x0b: 

                    key=6; 

                    break; 

                  case 0x07: 

                    key=11; 

                    break; 

                } 

              temp=P3; 

              P1_1=~P1_1; 

              if((key>=0) && (key<10)) 

                { 

                  if(keycount<6) 

                    { 

                      getps[keycount]=key; 

                      dispbuf[keycount+2]=19; 

                    } 

                  keycount++; 

                  if(keycount==6) 

                    { 

                      keycount=6; 

                    } 

                    else if(keycount>6) 

                      { 

                        keycount=6; 

                        keyoverflag=1;//key overflow                        

                      } 

                } 

                else if(key==12)//delete key 

                  { 

                    if(keycount>0) 

                      { 

                        keycount--; 

                        getps[keycount]=0; 

                        dispbuf[keycount+2]=16; 

                      } 

                      else 

                        { 

                          keyoverflag=1; 

                        } 

                  } 

                  else if(key==15)//enter key 

                    { 

                      if(keycount!=pslen) 

                        { 

                          errorflag=1; 

                          rightflag=0; 

                          second3=0; 

                        } 

                        else 

                          { 

                            for(i=0;i<keycount;i++) 

                              { 

                                if(getps[i]!=ps[i]) 

                                  { 

                                    i=keycount; 

                                    errorflag=1; 

                                    rightflag=0; 

                                    second3=0; 

                                    goto a4; 

                                  } 

                              } 

                            errorflag=0; 

                            rightflag=1; 

a4:                          i=keycount; 

                          } 

                    } 

              temp=temp & 0x0f;              

              while(temp!=0x0f) 

                { 

                  temp=P3; 

                  temp=temp & 0x0f;              

                } 

              keyoverflag=0;//????????? 

            } 

        } 

  

      P3=0xff; 

      P3_6=0; 

      temp=P3; 

      temp=temp & 0x0f; 

      if (temp!=0x0f) 

        { 

          for(i=10;i>0;i--) 

          for(j=248;j>0;j--); 

          temp=P3; 

          temp=temp & 0x0f; 

          if (temp!=0x0f) 

            { 

              temp=P3; 

              temp=temp & 0x0f;              

              switch(temp) 

                { 

                  case 0x0e: 

                    key=1; 

                    break; 

                  case 0x0d: 

                    key=2; 

                    break; 

                  case 0x0b: 

                    key=3; 

                    break; 

                  case 0x07: 

                    key=12; 

                    break; 

                } 

              temp=P3; 

              P1_1=~P1_1; 

              if((key>=0) && (key<10)) 

                { 

                  if(keycount<6) 

                    { 

                      getps[keycount]=key; 

                      dispbuf[keycount+2]=19; 

⌨️ 快捷键说明

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