资源描述:
《基于51单片机的多功能电子密码锁》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、#include#defineuintunsignedint#defineucharunsignedchar#defineKEYP3 //键盘输入端口#defineNo_key20 //无按键时的返回值#definelcddataP2 //1602的数据输入端口sbit lcden=P1^2;sbit lcdrs=P1^0;sbit lcdrw=P1^1;sbit light=P1^3;sbit light1=P1^4;ucharj;//用来统计输入个数的全局变量ucharaa;
2、//用来在定时器中计数的全局变量ucharcodetable[]="Hello!";ucharcodetable1[]="OK! ";ucharcodetable2[]="Enterplease:" ;ucharcodekey_table[16]= { 1,2,3,10, 4,5,6,11, 7,8,9,12, 0,13,14,15 };ucharpassword[]={2,0,1,0,9,3}; //设定初始密码ucharsave[6]; //保存输入的
3、数据ucharconflag; //确认标志ucharlockflag; //锁键盘标志ucharstartflag; //开始标志 voiddelay(uintz); //延时子函数voidwright_com(ucharcom); //写指令函数voidwright_data(uchardate); //写数据函数voidinit();
4、//初始化voiddisplay_OK(); //显示OKvoiddelete(); //删除输入的最后一个数ucharkeyscan(); //带返回值的键盘扫描程序voidenter_code(uchart); //输入密码函数,把输入的数据存入数组中并在屏幕上显示相应的东西,void confirm(); //确认密码对不对,把输入的数据与密码逐一对比,完全一样刚正确,void succeed_an(); //输入密码成功时的响应,void fail_an
5、(); //输入密码失败时响应void lockkey(); //锁键盘三秒void alarm(); //发出警报声void reset(); //复位函数void display_enter(); //显示输入voidmain(void){ uchartemp; init(); while(1) { if(lockflag) { temp=keyscan(); //锁键期间也要进行键盘扫描 if(temp!=No_key)//重新
6、记时三秒 { aa=0; //重新在定时器中计数 } } else { temp=keyscan(); //反复扫描输入,等待随时输入 if(temp!=No_key)//有按键按下才进行下面的操作 { if(temp==10) { reset(); startflag=1;//开始标志置位 } if(sta
7、rtflag) { enter_code(temp); //每扫描一次键盘就要进行一次处理,保存输入的数值 if(temp==13) //按下确认键盘就要进行密码确认 { confirm(); //进行确认判断 if(conflag) //密码确认为正确 { succeed_an(); //密码正确,作出相应的反应
8、 } else { fail_an(); //密码错误,作相应反应 } } if(temp==14) { delete();