红外遥控电控密码锁_第1页
红外遥控电控密码锁_第2页
红外遥控电控密码锁_第3页
红外遥控电控密码锁_第4页
红外遥控电控密码锁_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、红外遥控电控密码锁/*红外遥控锁全部程序*/#include#defineucharunsignedchar#defineuintunsignedintucharcodetable1=0x08,0x10,0x20,0x40;/正转ucharcodetable2=0x40,0x20,0x10,0x08;/反转sbithw_cs=P3A3;/定义红外线接收器的输出引脚,INT1口sbitbeep=P2A0;蜂鸣器使能端sbitled0=P0A0;sbitled1=P0A1;sbitled2=P0A2;ucharhw_data33=0;ucharhw_code4=0;ucharhw_temp4=0;

2、ucharmima5=0;/定义密码接收数组ucharmima_check15=1,1,1,1,1;/存放修改的密码ucharmima_check25=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

3、;/电机旋转方向标志位ucharworning;/告警计数标识位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_tim

4、e2;init();beep_fun();/开机自检,蜂鸣器响,led0亮led0=0;while(che-)delay(5000);delay(5000);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led0=0;doif(hw_jsok=1)hw_data_pro();hw_jsok=0;if(hw_temp1=0xff)&(hw_temp0=0x00)for(m=0;m4;m+)hw_codem=hw_tempm;beep_fun();if(hw_code2=0x45)/电源键,接收状态清零ucharcon=6;/l

5、ed1闪烁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(tms5)mima_check1tms+=hw_code2;led0=1;/输入一个密码 led0 闪烁一次delay(5000);delay(5000);led0=0;elsetms=1;mc_flag=0;beep_fun();/提示第1次输入密码完成beep_fun();beep_fu

6、n();beep_fun();if(mc_flag=0)if(tms5)mima_check2tms+=hw_code2;led0=1;/输入一个密码led0闪烁一次delay(5000);delay(5000);led0=0;elsebeep_fun();/提示第2次输入密码完成beep_fun();beep_fun();beep_fun();mima_check_fun2();/比较第1和第2次的输入结果if(_check=4)/如果n=4,密码相同则进入确认uchari,com=6;_check=0;/清除密码校验结果mima_check10=0x46;/修正数组中的第一个数据for(i

7、=0;i5;i+)mima_checki=mima_check1i;while(com-)/led1闪烁,指示修改密码成功delay(5000);delay(5000);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led1=0;while(hw_code2!=0x07);/确认键退出密码修改,对应面板上的静音键che=10;/led0闪烁5次,退出修改密码while(che-)delay(5000);delay(5000);delay(5000);led2=led2;delay(5000);delay(5000);dela

8、y(5000);led2=1;while(1)if(hw_jsok=1)hw_data_pro();hw_jsok=0;if(hw_temp1=0xff)&(hw_temp0=0x00)for(m=0;m4;m+)hw_codem=hw_tempm;beep_fun();if(hw_code2=0x45)/电机反转关门(按电源键)if(direction_key=0)direction_key=1;/将标志位设置为正转direction=0;/电机的方向改变,开门led2=0;/电机启动指示motor();/步进电机led2=1;/电机停止指示if(hw_code2=0x46)/mode键,负

9、责密码数组复位,模式标志置位inti;for(i=0;i5;i+)/密码数组清零mimai=0;mima_st=0;/密码接收状态清零mode_flag=1;/模式标志位置位i=6;/led1闪烁3次,指示模式键有效while(i-)delay(5000);delay(5000);delay(5000);led1=led1;delay(5000);delay(5000);delay(5000);led1=1;if(mode_flag)if(mima_st0;wor_time1-)for(wor_time2=50;wor_time20;wor_time2-)beep_fun();/*密码校验函数

10、*/voidmima_check_fun()inti;check=0;for(i=0;i5;i+)if(mimai=mima_checki)check+;/*密码校验函数2*/voidmima_check_fun2()inti;_check=0;for(i=1;i5;i+)if(mima_check1i=mima_check2i)_check+;/*电机正反方向旋转函数*/voidmotor()uchari,j=128;while(j-)for(i=0;i34)hw_data0=hw_time;hw_time=0;elsehw_data+p=hw_time;hw_time=0;if(p=32)hw_jsok=1;startflag=0;p=0;elsestartflag=1;hw_time=0;/*把接受到的时间数据,解码成二进制数据*/voidhw_data_pro()uchari,j,k,temp;k=1;for(j=0;j4;j+)for(i=0;i1;if(hw_datak7)temp=temp|0x80;k+;hw_tempj=t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论