




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、密码锁本设计以STC89C52RC单片机为核心,利用AT24C02存储密码,做到掉电存储密码的电子密码锁。电路:程序:#include#include#define uint unsigned int#define uchar unsigned char#defineN 7#defineOP_READ 0xa1/ 器件地址以及读取操作#defineOP_WRITE 0xa0/ 器件地址以及写入操作#defineMAX_ADDR 0x7f/ AT24C02最大地址sbit SCL=P20; sbit SDA=P21;sbit CSH=P30;sbit e=P34;sbit rs=P35;sbit
2、 sp=P36;sbit lock=P31;sfr duan=0x80;sfr key=0x90;uint ci;uchar kc,sc,sc2;int shu1,shu2,jh,jg;uchar code table = LOCK ;uchar code table2=WELLCOME TO USE!;uchar code table3=PASS WORD:;uchar code table4=ERRO!;uchar code table5=OPEN!;uchar code table6=NEW PASS WORD;uchar code table7=SUCCESSFUL!;uchar co
3、de table8=FAIL!;uchar code cmm6=1,2,3,3,2,1;uchar mm6;uchar tablesuanN;void init();void writec(uint com);void writed(uint dat);void delay(uint shu);uchar keyscan();void xieshuzu(uchar a,uchar add);void shuru();void kaiji();void bijiao();void xies(uchar a,uchar add);void delayms(unsigned char ms);voi
4、d gmm();/*/ /*/ /*/ void start()/ 开始位SDA = 1;SCL = 1;_nop_();_nop_();SDA = 0;_nop_();_nop_();_nop_();_nop_();SCL = 0;void stop()/ 停止位SDA = 0;_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();_nop_();SDA = 1;unsigned char shin()/ 从AT24Cxx移入数据到MCUunsigned char i,read_data;for(i = 0; i 8; i+)SCL = 1;read
5、_data = 1;read_data |= (unsigned char)SDA;SCL = 0;return(read_data);bit shout(unsigned char write_data)/ 从MCU移出数据到AT24Cxxunsigned char i;bit ack_bit;for(i = 0; i 8; i+)/ 循环移入8个位SDA = (bit)(write_data & 0x80);_nop_();SCL = 1;_nop_();_nop_();SCL = 0;write_data = 1;SDA = 1;/ 读取应答_nop_();_nop_();SCL = 1
6、;_nop_();_nop_();_nop_();_nop_();ack_bit = SDA;SCL = 0;return ack_bit;/ 返回AT24Cxx应答位void write_byte(unsigned char addr, unsigned char write_data)/ 在指定地址addr处写入数据write_datastart();shout(OP_WRITE);shout(addr);shout(write_data);stop();delayms(10);/ 写入周期unsigned char read_current()/ 在当前地址读取unsigned char
7、 read_data;start();shout(OP_READ);read_data = shin();stop();return read_data;unsigned char read_random(unsigned char random_addr)/ 在指定地址读取start();shout(OP_WRITE);shout(random_addr);return(read_current();void delayms(unsigned char ms)/ 延时子程序unsigned char i;while(ms-)for(i = 0; i 0;i-) for(j=110;j0;j-
8、);/*/ /现盘扫描/uchar keyscan() uchar k,skey; key=0xfe; skey=key; sp=1; if(skey!=0xfe) delay(10); skey=key; if(skey!=0xfe) switch(skey) case(0xee):k=7;kc+;break; case(0xde):k=8;kc+;break; case(0xbe):k=9;kc+;break; case(0x7e):k=0x0a;kc+;break; default:break; while(skey!=0xfe) skey=key; sp=0; return k; ke
9、y=0xfd; skey=key; if(skey!=0xfd) delay(10); skey=key; if(skey!=0xfd) switch(skey) case(0xed):k=4;kc+;break; case(0xdd):k=5;kc+;break; case(0xbd):k=6;kc+;break; case(0x7d):k=0x0b;kc+;break; default:break; while(skey!=0xfd) skey=key; sp=0; return k; key=0xfb; skey=key; if(skey!=0xfb) delay(10); skey=k
10、ey; if(skey!=0xfb) switch(skey) case(0xeb):k=1;kc+;break;case(0xdb):k=2;kc+;break; case(0xbb):k=3;kc+;break;case(0x7b):k=0x0c;kc+;break;default:break;while(skey!=0xfb)skey=key; sp=0;return k; key=0xf7; skey=key; if(skey!=0xf7) delay(10); skey=key; if(skey!=0xf7) switch(skey) case(0xe7):k=0x0d;kc+;br
11、eak; case(0xd7):k=0; kc+;break; case(0xb7):k=0x0e;kc+;break; case(0x77):k=0x0f;kc+;break; default:break; while(skey!=0xf7) skey=key; sp=0; return k; /*/ /输入数据处理/void shuru()uchar k=0,xw=0x80;sc=0;kc=0;xieshuzu(table3,0x80);do while(kc=sc) k=keyscan(); if(kc=1) writec(0x01); tablesuansc=k; /xies(tabl
12、esuansc,xw); xies(tablesuansc,0xc0); writec(xw); writed(0x2A); xw+; if(sc=5) goto out; while(tablesuansc+=9)&(scN) writec(0x01); xieshuzu(table4,0x80); void bijiao()if(tablesuan0=mm0)&(tablesuan1=mm1)&(tablesuan2=mm2)&(tablesuan3=mm3)&(tablesuan4=mm4)&(tablesuan5=mm5) EA=1; lock=1; writec(0x01); xie
13、shuzu(table5,0x80); delay(6500); EA=0; else writec(0x01); xieshuzu(table3,0x80); void gmm() uchar k=0,xw=0x80;sc2=0;kc=0;xieshuzu(table6,0x80);do while(kc=sc2) k=keyscan(); if(kc=1) writec(0x01); mmsc2=k; xies(mmsc2,0xc0); writec(xw); writed(0x2A); xw+; if(sc2=5) goto out2; while(mmsc2+=9)&(sc2N) / writec(0x01); xieshuzu(table8,0x80); goto out3; / out2:; writec(0x01); xieshuzu(table7,0x80);write_byte(2,mm0); /在24c02的地址2中写入数据secdelayms(2);write_byte(3,mm1); /在24c02的地址2中写入数据secdelayms(2);write_byte(4,mm2); /在24c02的地址2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防安全合同管理规定
- 船舶制造材料供应合同
- 新建住宅买卖合同备案流程
- 股权转让合同及相关权益转让协议
- 股权转让居间服务合同样本
- 商铺租赁合同参考模板
- 小班安全玩滑梯课件
- 创业企业的股权结构设计考核试卷
- 方便食品的包装设计与人机工程考核试卷
- 新材料新技术的巨大潜力探索未知的研究领域考核试卷
- 法规解读丨2024新版《突发事件应对法》及其应用案例
- JGJ46-2024 建筑与市政工程施工现场临时用电安全技术标准
- 肺炎的中医护理方案
- 2024年世界职业院校技能大赛高职组“关务实务组”赛项参考试题库(含答案)
- 河北美术出版社小学六年级下册书法练习指导教案
- 五下音乐《美丽的家乡(简谱、五线谱)》课件
- 2024年长沙职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 转学申请表、转学证明
- (完整版)部编四年级语文下词语表
- 高频电子线路完整章节课件(胡宴如)
- 铝挤压设备日常巡检保养记录
评论
0/150
提交评论