基于单片机的语音电子门锁毕业论文(编辑修改稿)内容摘要:
0=1。 //开定时中断 0 IT0=0。 //外部中断 0电平触发 IT1=0。 //外部中断 1电平触发 PT0=1。 //定时中断 0高 TMOD = 0x28。 //T0T1 方式控制 TH0= 0x0c。 // T0 高 8 位 TL0= 0x78。 // T0 低 8 位 //初始化完成 ...... } 主程序 /********************************************************** * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 ****************************************************************/ void main(void) { // unsigned char i。 Init()。 //初始化函数 while(1) { if(key_lock==0) //只有键盘未锁定时,才可以操作键盘 { key_set()。 //按键设置函数 } } } 按键处理函数 /******************************************************************************* * 函数名 : key_set() * 函数功能 : 按键设置函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ void key_set() //按键设置函数 { unsigned int i。 key_read()。 //按键函数 if (Trg==1) { TR0=1。 //启动 T0 t1_count=0。 in_led=0。 //输入密码指示灯亮 data_change()。 //调用数据变换子程序 key_menu=1。 } while (key_menu==1) //菜单键按下时 { key_read()。 //按键函数 if (Trg==2) //如 果确定键按下 { t1_count=0。 key_datadd++。 if (key_datadd=5) //如果超过合法值,则清零,(合法值为 04) { if (key_password==0) //密码设置标志 { result1=qian*1000+bai*100+shi*10+ge。 //保存设置结果 if (result==result1) //如果输入密码与设置密码相同 { in_led=1。 //关闭密码输入指示灯 result1=0。 //输入密码清零 t1_count=0。 key_password=1。 //设置密码标志 password_count=0。 //验证密码计数清零 count=0。 //密码错误计数清零 door_out=1。 //打开门锁 } else { count++。 //密码输入错误计数加一 result1=0。 //输入密码清零 alarm=0。 //短时间 报警提示密码错误 Delay()。 Delay()。 Delay()。 Delay()。 Delay()。 Delay()。 Delay()。 Delay()。 alarm=1。 if(count=3) //如果密码输出错误次数超过三次,则报警并锁定键盘 { in_led=1。 //关闭密码输入指示灯 key_lock=1。 //键盘锁定 alarm=0。 //报警产生 } } } else //设置密码 { password_count++。 if (password_count==1) { result2=qian*1000+bai*100+shi*10+ge。 //设置密码 } else if(password_count=2) { result3=qian*1000+bai*100+shi*10+ge。 //设置密码 if (result2==result3) { in_led=1。 //关闭密码输入指示灯 password_led=0。 //打开密码设置成功指示灯 result=result2。 //设置密码成功 } password_count=0。 } } key_menu=0。 //设置完毕, 跳出设置循环 key_datadd=0。 } } else if (Trg==4) //如果增加键按下 { t1_count=0。 if (key_datadd==4) //调整个位 { ge++。 if (ge9) //如果超过范围,清零 { ge=0。 } } else if(key_datadd==3) //调整十位 { shi++。 if (shi9) //如果超过范围,清零 { shi=0。 } } else if(key_datadd==2) //调整白位 { bai++。 if (bai9) //如果超过范围,清零 { bai=0。 } } else if(key_datadd==1) //调整千位 { qian++。 if (qian9) //如果超过范围,清零 { qian=0。 } } } else if (Trg==8) //如果减小键按下 { t1_count=0。 if (key_datadd==4) //调整个位 { ge。 if (ge0) //如果超过范围, { ge=9。 } } else if(key_datadd==3) //调整十位 { shi。 if (shi0) //如果超过范围, { shi=9。 } } else if(key_datadd==2) //调整白位 { bai。 if (bai0) //如果超过范围, { bai=9。 } } else if(key_datadd==1) //调整 千位 { qian。 if (qian0) //如果超过范围, { qian=9。 } } } for (i=0。 i5。 i++) { DigDisplay(key_datadd)。 } } } /******************************************************************************* * 函数名 : key() * 函数功能 : 按键函数 , P1=0xff; ReadData = 0; Trg = 0; Cont = 0; 按下时, =0。 ReadData = 0x01; Trg = 0x01(Trg 只会在这个时候对应位的值为 1,其它时候都为 0)。 Cont = 0x01; 长按住时, =0。 Re。基于单片机的语音电子门锁毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。