LCD遥控密码锁的设计与制作 毕业论文.doc

上传人:白大夫 文档编号:4508376 上传时间:2019-11-13 格式:DOC 页数:49 大小:636.56KB
返回 下载 相关 举报
LCD遥控密码锁的设计与制作 毕业论文.doc_第1页
第1页 / 共49页
LCD遥控密码锁的设计与制作 毕业论文.doc_第2页
第2页 / 共49页
LCD遥控密码锁的设计与制作 毕业论文.doc_第3页
第3页 / 共49页
LCD遥控密码锁的设计与制作 毕业论文.doc_第4页
第4页 / 共49页
LCD遥控密码锁的设计与制作 毕业论文.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《LCD遥控密码锁的设计与制作 毕业论文.doc》由会员分享,可在线阅读,更多相关《LCD遥控密码锁的设计与制作 毕业论文.doc(49页珍藏版)》请在三一文库上搜索。

1、 0 MECHANICAL sbit scl=P24; sbit fuwei=P36; sbit KAI=P10; sbit lcden=P27; sbit lcdrs=P26; sbit w1=P20; sbit w2=P21; sbit w3=P22; sbit w4=P23; uchar num,n=0,temp,count4,flag,date,r;/r 记录错误次数 uchar mima4; uchar yuanmima4; uchar tab_key4; bit mimaflag;/密码正确与否的标志 bit xiugaiflag;/修改密码标志 bit enter1flag;/确

2、认密码修改 unsigned char KeyValue; void delay() ; void key_scan(); void key_scan1(); void DELAY(uint DELAY) uint h; for(;DELAY0;DELAY-) for(h=0;h110;h+) ; void msgbox(unsigned char MODE,unsigned char DATA)/选择写数据 or 命令 0 为命令 1 为数据 P0=DATA; if(0=MODE) lcdrs=0;/写命令 else lcdrs=1;/写数据 DELAY(5); lcden=1; DELAY

3、(5); lcden=0; void lcdchar(unsigned char add,unsigned char ch) if(0!=add) msgbox(0,add); msgbox(1,ch); void lcdstring(unsigned char add,unsigned char *str) int I; msgbox(0,add); for(I=0;*(str+I)!=0I+) msgbox(1,*(str+I); DELAY(2); void initlcd() lcden=0; msgbox(0,0x38); /显示模式设置 16*2 5*7 8 位 msgbox(0,

4、0x0c); /开关光标显示设置 msgbox(0,0x06);/指针自动+1 msgbox(0,0x01);/清屏 msgbox(0,0x80);/0x80+0x10 /* void start() /开始信号 sda=1; delay(); scl=1; delay(); sda=0; delay(); void stop() /停止 sda=0; delay(); scl=1; delay(); sda=1; delay(); void respons() /应答 uchar i; scl=1; delay(); while(sda=1) scl=0; delay(); void ini

5、t() /SHU SHI sda=1; delay(); scl=1; delay(); void write_byte(uchar date) /写到 24c02 uchar i,temp; temp=date; for(i=0;i8;i+) temp=temp1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); scl=0; delay(); sda=1; delay(); uchar read_byte() uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i8;i+) scl=1; d

6、elay(); k=(k1)|sda; scl=0; delay(); return k; void write_add(uchar address,uchar date) /从单元写 start(); write_byte(0xa0); respons(); write_byte(address); respons(); write_byte(date); respons(); stop(); uchar read_add(uchar address) /从单元读 start(); write_byte(0xa0); respons(); write_byte(address); respo

7、ns(); start(); write_byte(0xa1); respons(); date=read_byte(); stop(); return date; void mimacmp() uchar i0,i1,i2,i3; i0=i1=i2=i3=0; if(mima0=tab_key0) i0=1; if(mima1=tab_key1) i1=1; if(mima2=tab_key2) i2=1; if(mima3=tab_key3) i3=1; flag=i0*i1*i2*i3; /全为 1 密码正确 void key_manage1() tab_keyn=0; n+; if(x

8、iugaiflag=1) mimacount4=0; count4+; void key_manage2() tab_keyn=1; n+; if(xiugaiflag=1) mimacount4=1; count4+; void key_manage3() tab_keyn=2; n+; if(xiugaiflag=1) mimacount4=2; count4+; void key_manage4() tab_keyn=3; n+; if(xiugaiflag=1) mimacount4=3; count4+; void key_manage5() xiugaiflag=1; n=0; v

9、oid c02int()/24c02 初始化 init(); write_add(1,0); DELAY(100); /init(); write_add(10,0); DELAY(100); / init(); write_add(20,0); DELAY(100); / init(); write_add(30,0); DELAY(100); void key_manage6() /确认件 if(enter1flag=1) c02int(); init(); write_add(1,mima0); DELAY(100); / init(); write_add(10,mima1); DEL

10、AY(100); / init(); write_add(20,mima2); DELAY(100); / init(); write_add(30,mima3); DELAY(100); yuanmima0=mima0=read_add(1); DELAY(100); yuanmima1=mima1=read_add(10); DELAY(100); yuanmima2=mima2=read_add(20); DELAY(100); yuanmima3=mima3=read_add(30); DELAY(100); enter1flag=xiugaiflag=0; DELAY(1000);

11、KAI=0; lcdstring(0x80,“ PASSWORD RENEW “); DELAY(1000); lcdstring(0x80,“INPUT THE PASS“); lcdstring(0x80+0x40,“ WODE: _ “); void readmima() DELAY(100); yuanmima0=mima0=read_add(1); DELAY(100); yuanmima1=mima1=read_add(10); DELAY(100); yuanmima2=mima2=read_add(20); DELAY(100); yuanmima3=mima3=read_ad

12、d(30); DELAY(100); void intmima() /初始化密码 3333 DELAY(100); write_add(1,3); DELAY(100); write_add(10,3); DELAY(100); write_add(20,3); DELAY(100); write_add(30,3); DELAY(100); void gaimimacmp() uchar i0,i1,i2,i3; i0=i1=i2=i3=0; if(mima0=yuanmima0) i0=1; if(mima1=yuanmima1) i1=1; if(mima2=yuanmima2) i2=

13、1; if(mima3=yuanmima3) i3=1; flag=i0*i1*i2*i3;/比较结果 1 为正确 void main() w1=w2=w3=w4=0; n=flag=r=KAI=0; readmima(); DELAY(30); initlcd(); lcdstring(0x80,“INPUT THE PASS “);/开始显示输入密码 lcdstring(0x80+0x40,“ WODE: _ “); while(P3=0xff while(1) key_scan1(); key_scan(); if(xiugaiflag=1) if(count4=1) lcdchar(0

14、x80+0x48,*); while(P3=0xff if(count4=2|count4=3) lcdchar(0,*); while(P3=0xff if(count4=4) lcdchar(0,*); DELAY(10); msgbox(0,0x01);/清屏 flag=0; gaimimacmp(); n=count4=0; if(flag=1) enter1flag=1; flag=n=0; lcdstring(0x80,“CHANGE PASSWORD “); elseif(enter1flag=1) lcdstring(0x80,“PRESS THE ENTER“); else

15、flag=n=0;/不正确事件 lcdstring(0x80,“ WRONG POSSWORD “); DELAY(1000); xiugaiflag=0; lcdstring(0x80,“INPUT THE PASS“); lcdstring(0x80+0X40,“ WODE: _ “); /修改密码键没按下 if(xiugaiflag=0) if(n=1) lcdchar(0x80+0x48,*);/星号显示 while(P3=0xff if(n=2|n=3) lcdchar(0,*); while(P3=0xff if(n=4) lcdchar(0,*); msgbox(0,0x01);

16、/清屏 mimacmp(); n=0; if(flag=1) lcdstring(0x80,“password is right“); DELAY(1000); lcdstring(0x80,“INPUT THE PASS“); lcdstring(0x80+0X40,“ WODE: _ “); KAI=!KAI; r=0; flag=n=0; else lcdstring(0x80,“WRONG POSSWORD“); r=r+1; /错误次数记录 DELAY(1000);/显示到重新输入 if(r=3) /判断 3 次 while(1) msgbox(0,0x01); lcdstring(

17、0x80,“ Three errors “); while(1); lcdstring(0x80,“INPUT THE PASS“); lcdstring(0x80+0x40,“ WODE: _ “); void key_scan() if(P3!=0Xff) temp=P3; while(P3!=0Xff) switch(temp) case 0xfe: key_manage1(); break; case 0xfd: key_manage2(); break; case 0xfb: key_manage3(); break; case 0xf7: key_manage4(); break; case 0xef: key_manage5(); break; case 0xdf: key_manage6(); break; case 0xbf: intmima(); readmima(); break; void key_scan1() if(w1=1) while(w1=1) ; key_manage1(); if(w2=1) while(w2=1) ; key_manage2(); if(w3=1) while(w3=1) ; key_manage3(); if(w4=1) while(w4=1) ; key_manage4();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1