51电子密码锁

51电子密码锁

ID:46579054

大小:104.18 KB

页数:7页

时间:2019-11-25

51电子密码锁_第1页
51电子密码锁_第2页
51电子密码锁_第3页
51电子密码锁_第4页
51电子密码锁_第5页
资源描述:

《51电子密码锁》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineCOMXBYTE[0x7fff]//8279命令状态地址#defineDATXBYTE[0x77fF]//8279数据地址ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//0,1,2,3,4,5,6,70x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71//8,9,A,B,C,D,E

2、,F};//共阳极数码管显示段码ucharidatadiss[8];//显示用数据暂存器8位数据ucharidatamima[6];//密码用数据暂存器6位数据sbitclflag=ACC^7;//记录状态字最高位sbitSDA=P1^1;//24c02数据端sbitSCL=P1^0;//24c02时钟端sbiterror=P1^2;//闭锁指示端sbitright=P1^3;//开锁指示端和开锁输出ucharkeyin();//8279读键号子程序uchardeky();//8279监测有无按键按下子程序voiddisp(ucharidata*d);//8279显示子程序voidsta

3、rt_bit(void);//2402开始位voidstop_bit(void);//2402停止位voidmast_ack(void);//2402主答函数bitwrite_8bit(ucharch);//2402写一个字节(8位)数据ucharpage_wr(uintfirstw_ad,uintcounter,uchar*firstr_ad);//2402页面写函数ucharpage_rd(uintfirstrd_ad,uintcount,uchar*firstwr_ad);//页面读函数voidmimakey(void);//密码锁设置密码输入密码子程序main()//主函数{uc

4、hari;COM=0xd1;//11010001总清除命令do{ACC=COM;}//读状态字直到清除完成while(clflag==1);//读状态字最高位COM=0x00;//键盘/显示器工作方式左端送入8×8显示双键锁定编码扫描COM=0x34;//时钟分频20分频right=0;error=1;//默认闭锁//************以下测试用*****************//for(i=0;i<6;i++){mima[i]=i+2;}//设置初始密码为234567测试用while(page_wr(0,6,&mima[0])==0);//写入2402//测试用当2402存好密

5、码后该部分程序可以撤除//************以上测试用*****************//while(1){mimakey();//密码锁设置密码、输入密码子程序}}voidmimakey(void)//密码锁设置密码、输入密码子程序{uchari,key;//i循环变量key键号暂存器bitkeyok;//解锁标志位for(i=0;i<6;i++){diss[i]=i;}//在“无输入和设置密码时”默认显示012345disp(diss);//送显示key=keyin();//等待键按下读键号//*************以下为输入密码状态*************//if((

6、key==0x0b)&(keyok==0))//在闭锁状态下,密码输入键按下时,进入输入密码状态{for(i=0;i<6;i++)//6位密码输入{key=keyin();//读一位键if(key==0x0d)break;//是取消键时输入密码取消if(key>=0x0a){do{key=keyin();}while(key>=0x0a);}//不是取消键且输入键号不是0~9的数字键时等待1位数字键输入mima[i]=key;//密码数字存于mima暂存器中diss[i]=15;//每输入一位密码数码管显示“F”disp(diss);//送显示}if(key!=0x0d)//6位密码输入

7、完成时看是否要确认;未完成6位输入时返回{key=keyin();//等待按键输入if(key==0x0d);//是取消键时输入密码取消else//不是取消键时等待输入密码确认{if(key!=0x0c)while(keyin()!=0x0c);//等待确认键按下while(page_rd(0,6,&diss[0])==0);//在2402中读取密码keyok=1;//把解锁标志位设为1解锁for(i=0;i<6;i++)//比较6

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。