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

📄 777.c

📁 电子密码锁程序和电路用51单片机加上矩阵键盘控制
💻 C
📖 第 1 页 / 共 2 页
字号:
                    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 a3; 

                                  } 

                              } 

                            errorflag=0; 

                            rightflag=1; 

a3:                          i=keycount; 

                          } 

                    } 

              temp=temp & 0x0f;              

              while(temp!=0x0f) 

                { 

                  temp=P3; 

                  temp=temp & 0x0f;              

                } 

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

            } 

        } 

  

      P3=0xff; 

      P3_7=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=0; 

                    break; 

                  case 0x0d: 

                    key=13; 

                    break; 

                  case 0x0b: 

                    key=14; 

                    break; 

                  case 0x07: 

                    key=15; 

                    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 a2; 

                                  } 

                              } 

                            errorflag=0; 

                            rightflag=1; 

a2:                          i=keycount; 

                          } 

                    } 

              temp=temp & 0x0f;              

              while(temp!=0x0f) 

                { 

                  temp=P3; 

                  temp=temp & 0x0f;              

                } 

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

            }                          

        } 

      

    } 

} 

void t0(void) interrupt 1 using 0 

{ 

  TH0=(65536-500)/256; 

  TL0=(65536-500)%256; 

  

  flashcount++; 

  if(flashcount==8) 

    { 

      flashcount=0; 

      P0=dispcode[dispbuf[dispcount]]; 

      P2=dispbit[dispcount]; 

      dispcount++; 

      if(dispcount==8) 

        { 

          dispcount=0; 

        } 

    } 

  

  if((errorflag==1) && (rightflag==0)) 

    { 

      bb++; 

      if(bb==800) 

        { 

          bb=0; 

          alarmflag=~alarmflag; 

        } 

      if(alarmflag==1)//sound alarm signal 

        { 

          P1_7=~P1_7; 

        } 

  

      aa++; 

      if(aa==800)//light alarm signal 

        { 

          aa=0; 

          P1_0=~P1_0; 

        } 

      second3++; 

      if(second3==6400) 

        { 

          second3=0; 

          errorflag=0; 

          rightflag=0; 

          alarmflag=0; 

          bb=0; 

          aa=0; 

        }      

    } 

    else if((errorflag==0) && (rightflag==1)) 

      { 

        P1_0=0; 

        cc++; 

        if(cc<1000) 

          { 

            okflag=1; 

          } 

          else if(cc<2000) 

            { 

              okflag=0; 

            } 

            else 

              { 

                errorflag=0; 

                rightflag=0; 

                P1_7=1; 

                cc=0; 

                oka=0; 

                okb=0; 

                okflag=0; 

                P1_0=1; 

              } 

        if(okflag==1) 

          { 

            oka++; 

            if(oka==2) 

              { 

                oka=0; 

                P1_7=~P1_7; 

              } 

          } 

          else 

            { 

              okb++; 

              if(okb==3) 

                { 

                  okb=0; 

                  P1_7=~P1_7; 

                } 

            } 

      } 

  

  if(keyoverflag==1) 

    { 

      P1_7=~P1_7; 

    } 

} 

⌨️ 快捷键说明

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