基于单片机的门禁系统设计本科毕业设计论文

发布时间 : 星期一 文章基于单片机的门禁系统设计本科毕业设计论文更新完毕开始阅读

datatime1.str[1]=g8563_Store[6]; datatime2.str[0]=usysparam.gjppara.Times[shijianduan][0]; datatime2.str[1]=usysparam.gjppara.Times[shijianduan][1]; if(datatime1.x>=datatime2.x){ datatime2.str[0]=usysparam.gjppara.Times[shijianduan][2]; datatime2.str[1]=usysparam.gjppara.Times[shijianduan][3]; if(datatime1.x<=datatime2.x){ return 1; } goto step; } goto step; break; } }else{//过有效期 temp2=0; if(mydoor.RedState==1){ temp2 |=4; }else{ temp2 &=0xfb; } if(mydoor.status==1 || mydoor.status==0){ temp2 |=8; }else{ temp2 &=0xf7; } cardonflag=0; AlmEve(temp,temp2,9);//用户卡的有效期已过 return 0; } return 1; } } }

void WriteEvent(unsigned char *eve){ WriteAt24C(usysparam.gjppara.myRec.rec.Savep*15+26001,15,eve); // 2-100 waitms(3); if(usysparam.gjppara.myRec.rec.Mf==0){ if(usysparam.gjppara.myRec.rec.Savep==999){ usysparam.gjppara.myRec.rec.Mf=usysparam.gjppara.myRec.rec.Mf|0x80; } } usysparam.gjppara.myRec.rec.Savep=(usysparam.gjppara.myRec.rec.Savep+1)00; if(usysparam.gjppara.myRec.rec.Savep==usysparam.gjppara.myRec.rec.Loadp){//跟上读取记录时候 usysparam.gjppara.myRec.rec.Loadp=usysparam.gjppara.myRec.rec.Loadp+1; usysparam.gjppara.myRec.rec.Mf=usysparam.gjppara.myRec.rec.Mf|0x01; } WriteAt24C(16,9,usysparam.gjppara.myRec.RecStr);//保存指针 waitms(3); }

void ReadEvent(){ ReadAt24C(usysparam.gjppara.myRec.rec.Loadp*15+26001,15,HisEve); // 2-100 waitms(3);

48

if(usysparam.gjppara.myRec.rec.Savep!=usysparam.gjppara.myRec.rec.Loadp) usysparam.gjppara.myRec.rec.Loadp=(usysparam.gjppara.myRec.rec.Loadp+1)00; WriteAt24C(16,9,usysparam.gjppara.myRec.RecStr);//保存指针 waitms(3); }

void AlmEve(unsigned char Source[],unsigned char Sta,unsigned char Type){ //1.事件来源 CopyInf(Source,0,EvEve.Eve.Laiyuan,0,5); //2.日期时间 EvEve.Eve.time[0]=0x20;// EvEve.Eve.time[1]=g8563_Store[YEAR]; EvEve.Eve.time[2]=g8563_Store[MONTH]; EvEve.Eve.time[3]=g8563_Store[DAY]; EvEve.Eve.time[4]=g8563_Store[HOUR]; EvEve.Eve.time[5]=g8563_Store[MINUTE]; EvEve.Eve.time[6]=g8563_Store[SECOND]; EvEve.Eve.Status=Sta; //3.状态 EvEve.Eve.Remark=Type; //4.备注 EvEve.Eve.Xingqi=g8563_Store[WEEK]; //5.星期 WriteEvent(EvEve.str); } /*

* 函数说明: 1.产生门事件 2.注意所有门事件均先产生开门动作,然后产生开门事件(,最后设置红外状态 ) * 输 入: 无 - * 返 回: 无 * 版 本: */

void DoorEve(unsigned char Source[],unsigned char Type){ //1.事件来源 CopyInf(Source,0,eve.Eve.Laiyuan,0,5); //2.日期时间 eve.Eve.time[0]=0x20;// eve.Eve.time[1]=g8563_Store[YEAR]; eve.Eve.time[2]=g8563_Store[MONTH]; eve.Eve.time[3]=g8563_Store[DAY]; eve.Eve.time[4]=g8563_Store[HOUR]; eve.Eve.time[5]=g8563_Store[MINUTE] ; eve.Eve.time[6]=g8563_Store[SECOND]; //3.状态 eve.Eve.Status=0; switch(mydoor.status){ case 0: eve.Eve.Status &=0x8f; break; case 1: eve.Eve.Status &=0x8f;//关门 D6D5D4=000将D6清0 break; case 2: // eve.Eve.Status &=0xbf; eve.Eve.Status |=0x10;//开门 D6D5D4=101 break; case 3: eve.Eve.Status |=0x70;//开门超时 D6D5D4=111 break;

49

} if(mydoor.RedState){ eve.Eve.Status=eve.Eve.Status | 1;//原来红外状态 }else{ eve.Eve.Status=eve.Eve.Status & 0xfe;//原来红外状态 } if((usysparam.gjppara.Fun & 0x40)==0x40){ //是否有红外功能 if(mydoor.status==1){//关门 if(mydoor.Device==2 || mydoor.Device==4){ mydoor.RedState=1; eve.Eve.Status=eve.Eve.Status | 1;//是否关闭红外 }else{ mydoor.RedState=0; eve.Eve.Status=eve.Eve.Status & 0xfe;//是否关闭红外 } }else{ if(mydoor.Device==4){ //非法开门 mydoor.RedState=1; eve.Eve.Status=eve.Eve.Status | 1;//是否关闭红外 } } }else{//没有红外功能 mydoor.RedState=0; eve.Eve.Status=eve.Eve.Status & 0xfe;//是否关闭红外 } //4.备注 eve.Eve.Remark=Type; //5.星期 EvEve.Eve.Xingqi=g8563_Store[WEEK]; WriteEvent(eve.str); }

void DJAction(void){ if(DJtime==0){ if(Act==1){ Act=2; M1=0; M2=0;

DJtime=200; return; }

if(Act==2){ Act=3; M1=0; M2=1; DJtime=5; return; }

if(Act==3){ Act=0; M1=0; M2=0; green=0; red=1; DJflag=0; } } }

50

void openDoor(){

if((mydoor.Device==1) || (mydoor.Device==2) || (mydoor.Device==3)){ M2=0; M1=1; Act=1; DJtime=5; red=0; green=1; DJflag=1; } DoorClosesec=30; DoorSwitchOpenSec=nowSec+6; if(DoorSwitchOpenSec>59){ DoorSwitchOpenMin=NowMin+(DoorSwitchOpenSec/59); DoorSwitchOpenMin1=NowMin+(DoorSwitchOpenSec/59); DoorSwitchOpenSec=DoorSwitchOpenSec`; if(DoorSwitchOpenMin>59){ DoorSwitchOpenHour=NowHour+(DoorSwitchOpenMin/59); DoorSwitchOpenMin=DoorSwitchOpenMin`; DoorSwitchOpenMin1=DoorSwitchOpenMin`; if(DoorSwitchOpenHour>23){ DoorSwitchOpenHour=DoorSwitchOpenHour-24; } }else{ DoorSwitchOpenHour=NowHour; } }else{ DoorSwitchOpenHour=NowHour; DoorSwitchOpenMin=NowMin; DoorSwitchOpenMin1=NowMin; } DoorOpenDelaySec=nowSec+8; if(DoorOpenDelaySec>59){ DoorOpenDelayMin=NowMin+(DoorOpenDelaySec/59); DoorOpenDelaySec=DoorOpenDelaySec`; if(DoorOpenDelayMin>59){ DoorOpenDelayHour=NowHour+(DoorOpenDelayMin/59); DoorOpenDelayMin=DoorOpenDelayMin`; if(DoorOpenDelayHour>23){ DoorOpenDelayHour=DoorOpenDelayHour-24; } }else{ DoorOpenDelayHour=NowHour; } }else{ DoorOpenDelayHour=NowHour; DoorOpenDelayMin=NowMin; }

//超时未关限时3分钟 DoorOpenSec=nowSec; DoorOpenMin=NowMin+3; DoorOpenHour=NowHour; if(DoorOpenMin>59){ DoorOpenHour=NowHour+(DoorOpenMin/59); DoorOpenMin=DoorOpenMin`; if(DoorOpenHour>23){ DoorOpenHour=DoorOpenHour-24;

51

联系合同范文客服:xxxxx#qq.com(#替换为@)