资源描述:
《红外遥控电控密码锁》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、红外遥控电控密码锁/**********************************************************************红外遥控锁全部程序***********************************************************************/#include#defineucharunsignedchar#defineuintunsignedintucharcodetable1[]={0x08,0x10,0x20,0x40};//正转ucharcod
2、etable2[]={0x40,0x20,0x10,0x08};//反转sbithw_cs=P3^3;//定义红外线接收器的输出引脚,INT1口sbitbeep=P2^0;//蜂鸣器使能端sbitled0=P0^0;sbitled1=P0^1;sbitled2=P0^2;ucharhw_data[33]={0};ucharhw_code[4]={0};ucharhw_temp[4]={0};ucharmima[5]={0};//定义密码接收数组ucharmima_check1[5]={1,1,1,1,1};//存放修改的密码ucharmima_c
3、heck2[5]={0,0,0,0,0};//存放修改的密码ucharmima_check[]={0x46,0x16,0x0c,0x18,0x5e};ucharp;ucharstartflag;ucharhw_jsok;ucharhw_time;ucharmode_flag;//定义模式标志位,复位uchardirection_key;//旋转标志位ucharmima_st;//接收密码状态ucharcheck;//密码校验结果标志uchar_check;uchardirection;//电机旋转方向标志位ucharworning;//告警计数标
4、识位uchartms;//密码修改数组控制标志位ucharmc_flag=1;//密码修改标志位voidinit();//定时器0和外部中断1初始化voiddelay(ucharxms);//voidbeep_fun();//蜂鸣器voidhw_data_pro();voidmima_fun();//密码接收函数voidmima_check_fun();//密码校验函数voidmima_check_fun2();voidmotor();//电机转动90度,正反方向(标志位来决定方向)main(){ucharm,che,wor_time1,wor_
5、time2;init();beep_fun();//开机自检,蜂鸣器响,led0亮led0=0;che=10;//led0闪烁5次,等待修改密码while(che--){delay(5000);delay(5000);delay(5000);led1=~led1;delay(5000);delay(5000);delay(5000);}led0=0;do{if(hw_jsok==1){hw_data_pro();hw_jsok=0;if((hw_temp[1]==0xff)&&(hw_temp[0]==0x00)){for(m=0;m<4;m++
6、){hw_code[m]=hw_temp[m];}beep_fun();if(hw_code[2]==0x45)//电源键,接收状态清零{ucharcon=6;//led1闪烁3次,指示模式键有效tms=0;//数组状态计数mc_flag=1;while(con--){delay(5000);delay(5000);delay(5000);led1=~led1;delay(5000);delay(5000);delay(5000);}led1=1;}if(mc_flag==1){if(tms<5){mima_check1[tms++]=hw_co
7、de[2];led0=1;//输入一个密码led0闪烁一次delay(5000);delay(5000);led0=0;}else{tms=1;mc_flag=0;beep_fun();//提示第1次输入密码完成beep_fun();beep_fun();beep_fun();}}if(mc_flag==0){if(tms<5){mima_check2[tms++]=hw_code[2];led0=1;//输入一个密码led0闪烁一次delay(5000);delay(5000);led0=0;}else{beep_fun();//提示第2次输入
8、密码完成beep_fun();beep_fun();beep_fun();}}mima_check_fun2();//比较第1和第2次的