分享

智能门禁系统

 共同成长888 2013-07-30

智能门禁系统

bsp;                            

                                          Clear_Password();

                                          Key_Num=0;

                                          State = 1;

                                          break;

                                   }

                            case 12://取消键

                                  

                                   LCD_CLEAR();

                                   LCD_SHOW("Cancel");

                                   SET_Address2();

                                   LCD_SHOW("Do it again!");

                                   Clear_Password();

                                   LCD_CLEAR();                                   

                                   LCD_SHOW("Welcome!");

                                   SET_Address2();

                                   LCD_SHOW("A?B?C?D?E?F?..");

                                  

                                   Key_Num=0;

                                   State = 1;

                                   break;

                            case 13://更改键

                                   LCD_CLEAR();

                                   LCD_SHOW("Modify passwd!");

                                   SET_Address2();

                                   LCD_SHOW("Check you ID:");

                                   PlayRespond(6);                             //语音提示****"请输入密码"!·!!!!!

                                   Protect_Clock();                                                         

                                   State = 2;

                                   break;

                            case 14://进入语音

                                   LCD_CLEAR();

                                   LCD_SHOW("Open voice!");

                                   SET_Address2();

                                   LCD_SHOW("Check you ID:");

                                                

                                   PlayRespond(6);                             //语音提示****"请输入密码"!·!!!!!

                                   Protect_Clock();                                                         

                           

                                   State = 5;

                                   break;   

                            case 15://关闭语音

                                   LCD_CLEAR();

                                   LCD_SHOW("VOICE OFF");

                                   SET_Address2();

                                   LCD_SHOW("Remember it!");

                                   Voice_State=0;

                                   PlayRespond(11);                                   //语音提示****"语音功能关闭!·!!!!!

                                   Protect_Clock();                                                                       

                                   LCD_CLEAR();                                   

                                   LCD_SHOW("Welcome!");

                                   SET_Address2();

                                   LCD_SHOW("A?B?C?D?E?F?..");

                                   break;

                            default   :

                                   break;

                     }//与switch(KeyValue)相对应

      }//与while(有键按下)

      if(Voice_State)

      {

        Protect_Clock_fast();

        res = ProtectA_BSR_GetResult();   

              Protect_Clock();                                                                                            

              if(res > 0)                                                 //识别出命令

              {

                            switch(res)

                            {

                            case NAME_ID:                 //触发命令响应

                                                        DOOR_OPEN();/*开门*/

                                                        LIGHT_OPEN();

                                                       

                                                        LCD_CLEAR();

                                                        LCD_SHOW("DOOR OPENED");

                                                        PlayRespond(12);                                  //语音提示*****“主人您好,门已经开了!·!!!!!                                                 

                                                        Protect_Clock();                                                  

                                                        SET_Address2();

                                                        LCD_SHOW("Best Wishes!");

                                                        DOOR_OFF();

                                                        LIGHT_OFF();

                                                        LCD_CLEAR();

                                                        LCD_SHOW("Welcome!");

                                                        SET_Address2();

                                                        LCD_SHOW("A?B?C?D?E?F?...");

                                                        Key_Num=0;//**********?

                                                        State = 1;//********?

                                                break;

                           }

             }

         }//if(Voice_state=1)

     

}//while(1)

}//main()

///////////////////////////////////////////////

void Clear_Password()

{

       int i;

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

       {

              Password[i] = 0;

              Password_Temp[i] = 0;

       }

       Key_Num = 0;

}

/////////////////////////////////////////////////

unsigned int F_Affirm_New_Password()

{

       int i;

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

       if(Password[i]!=Password_Temp[i])

              {return 0;}

      

       return 1;

}

///////////////////////////////////////////////////

unsigned int F_Affirm_Password()

{

       int i;

       unsigned temp;

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

       {

              temp = F_FlashRead(0xfe00 + i);             //确定返回值是r1

              if(

              Password[i] != temp)

              return 0;

       }

       return 1;

}

/////////////////////////////////////////////////////

void Save_New_Pwd_To_Flash()

{

       int i;

       F_FlashErase(0xfe00);

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

       {

              F_FlashWrite1Word(0xfe00+i,Password[i]);

       }

}

///////////////////////////////////////////////////////

void LCD_SHOW(char Sentence[])

{

       int i;

       for(i=0; Sentence[i] != '\0'; i++)

              LCD_ADD(Sentence[i]);

}

////////////////////////////////////////////////////////

void PlayRespond(int Result)

{

       BSR_StopRecognizer();

       SACM_S480_Initial(1);

       SACM_S480_Play(Result, 3, 3);

       while((SACM_S480_Status()&0x0001) != 0)

       {

              SACM_S480_ServiceLoop();

              ClearWatchDog();

       }

       SACM_S480_Stop();

       BSR_InitRecognizer(BSR_MIC);

       BSR_EnableCPUIndicator(); 

}

////////////////////////////////////////////////////////

int TrainWord(int WordID, int RespondID)

{

       int res;

       PlayRespond(RespondID);//----------------------------------请输入触发名称-     (0)-----------

       while(1)

       {    

              ClearWatchDog();

             

              Protect_Clock_fast();

              res = BSR_Train(WordID,BSR_TRAIN_TWICE);

              Protect_Clock();

             

              if(res == 0) break;

              switch(res)

              {

              case -1:                                                                //没有检测出声音-----------(1)

                     PlayRespond(RSP_NOVOICE);

                     return -1;

              case -2:                                                                //需要重新训练一遍-----(2)

                     PlayRespond(RSP_AGAIN);

                     break;

              case -3:                                                                //环境太吵--------(3)

                     PlayRespond(RSP_NOISY);

                     return -1;            

              case -4:                                                                //数据库满

                    return -1;

              case -5:                                                                //检测出声音不同

                     if(WordID == NAME_ID)      PlayRespond(RSP_NAMEDIFF);//两次输入名称不同(4)

                     else                             PlayRespond(RSP_CMDDIFF);//两次输入命令不同(5)

                     return -1;

              case -6:                                                                //序号错误

                     return -1;

              }

       Protect_Clock();

       }

       return 0;

       Protect_Clock();

}

附录(三):器件列表

凌阳单片机最小系统一套;

16*2 16位液晶显示器一块;

4*4键盘一个;

C945 三极管若干;

继电器一块;

555定时器若干;

超声波探头一对;

LM567音频解码器一个;

电阻电容若干;

74LS00与非门一块;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多