为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

可以改密码的单片机电子密码锁

2017-11-22 9页 doc 23KB 26阅读

用户头像

is_833902

暂无简介

举报
可以改密码的单片机电子密码锁可以改密码的单片机电子密码锁 邮件群发 4*4键盘输入,可以更改密码,有24C02存储密码。我用的是6位。也可以多几位,更改相应变量即可。很简单。24C02里面我事先写入了初始密码2 3 4 6 7 0 。调试成功,可以直接用。STC89C51RC单片机 ,万能板焊接 //实验板上24C02已写入数据 {2,3,4,6,7,0} #include #include ins.H> #define uchar unsigned char #define uint unsigned int char code SKEY[16...
可以改密码的单片机电子密码锁
可以改密码的单片机电子密码锁 邮件群发 4*4键盘输入,可以更改密码,有24C02存储密码。我用的是6位。也可以多几位,更改相应变量即可。很简单。24C02里面我事先写入了初始密码2 3 4 6 7 0 。调试成功,可以直接用。STC89C51RC单片机 ,万能板焊接 //实验板上24C02已写入数据 {2,3,4,6,7,0} #include #include ins.H> #define uchar unsigned char #define uint unsigned int char code SKEY[16]={4,8,11,15,3,7,10,14,2,6,0,13,1,5,9,12}; char code act[4]={0xfe,0xfd,0xfb,0xf7}; char data rd[6]={1,9,8,5,1,1}; char ct=0; sbit contel=P2^1; sbit cin=P0^3; sbit set=P0^4; sbit wrong=P0^5; sbit SDA=P2^6; sbit SCL=P2^7; bdata char com_data; sbit mos_bit=com_data^7; sbit low_bit=com_data^0; void delay_iic(int n); uchar rd_24c01(char a); void wr_24c01(char a,char b); void wtsec(); /**************************************/ void delay_iic(int n) { int i; for(i=1;i } void delay(unsigned int k) { unsigned int data i,j; for(i=0;i { for(j=0;j {;} } } //************************************* void start() { SDA=1;_nop_();_nop_();_nop_();_nop_(); SCL=1;_nop_();_nop_();_nop_();_nop_(); SDA=0;_nop_();_nop_();_nop_();_nop_(); SCL=0;_nop_();_nop_();_nop_();_nop_(); } //***************************************** void stop() { SDA=0;_nop_();_nop_();_nop_();_nop_(); SCL=1;_nop_();_nop_();_nop_();_nop_(); SDA=1;_nop_();_nop_();_nop_();_nop_(); } //*********************** void ack() { SCL=1;_nop_();_nop_();_nop_();_nop_(); SCL=0;_nop_();_nop_();_nop_();_nop_(); } //*********************** void shift8(char a) { data uchar i; com_data=a; for(i=0;i { SDA=mos_bit; SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); com_data=com_data*2; } } //****************** uchar rd_24c01(char a) { data uchar i,command; SDA=1;_nop_();_nop_();_nop_();_nop_(); SCL=0;_nop_();_nop_();_nop_();_nop_(); start(); command=160; shift8(command); ack(); shift8(a); ack(); start(); command=161; shift8(command); ack(); SDA=1;_nop_();_nop_();_nop_();_nop_(); for(i=0;i { com_data=com_data*2; SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); low_bit=SDA; SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); } stop(); return(com_data); } //***************** void wr_24c01(char a,char b) { data uchar command; _nop_();_nop_();_nop_();_nop_();_nop_(); SDA=1;_nop_();_nop_();_nop_();_nop_(); SCL=0;_nop_();_nop_();_nop_();_nop_(); start(); command=160; shift8(command); ack(); shift8(a); ack(); shift8(b); ack(); stop(); _nop_();_nop_();_nop_();_nop_();_nop_(); } //键盘扫描 char scan_key(void) { char i,j,in,ini=0,inj=0,temp,del; bit find=0; P1=0x0f; temp=P1; if(temp!=0x0f) //按键有松开过 for(del=10;del>0;del--); //键盘去抖延迟 if(temp!=0x0f) { for(i=0;i { P1=act; in=P1; in=in>>4; in=in|0xf0; for(j=0;j { if(act[j]==in) {find=1; inj=j;ini=i; } } } } if(find==0)return -1; return (ini*4+inj); } //输入函数 void put_secret() { char wrt[6]; char et,ft; char wt,x=1; char *p,*t; p=rd; t=wrt; for(wt=0;wt { et=scan_key(); if(et!=-1) { wrt[wt]=SKEY[et]; wt=wt+x; cin=0; delay(200); cin=1; } } ct=0; for (ft=0;ft { if(wrt==rd) {ct=ct+x; } ft=ft+x; } if(ct==6) contel=1; else wrong=0; } void wtsec() { char t[6]; char e,f,i=10; char w,x=1; char *m,*n; m=rd; n=t; for(w=0;w { e=scan_key(); if(e!=-1) { t[w]=SKEY[e]; w=w+x; cin=0; delay(200); cin=1; } } for (f=0;f { wr_24c01(i,t[f]); delay_iic(250); rd[f]=rd_24c01(i); delay_iic(250); f=f+x; i=i+x; } } //============================ void main(void) { char c,f, key_val,x=1,ii=10; contel=0; wrong=1; cin=1; set=0; delay(2000); for (f=0;f { rd[f]=rd_24c01(ii); delay_iic(250); f=f+x; ii=ii+x; } set=1; delay(1000); while(1) { c=scan_key(); if(c!=-1) key_val=SKEY[c]; switch(key_val) { case 12:cin=0;delay(1000);cin=1;put_secret();break ; case 13:ct=0;wrong=1;contel=0;cin=1;set=1;break; case 14:if(ct==6){set=0;wtsec();set=1;} set=1;ct=0;break; default:break; } } }
/
本文档为【可以改密码的单片机电子密码锁】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索