24c02微控制器密碼鎖

2021-04-22 23:21:40 字數 4856 閱讀 8285

#include

#include"intrins.h"

#include"key.h"

#include"xsh.h"

#include"24c02.h"

#define ulong unsigned long

bit  bjcb=0;//報警標誌      

xg=0,//修改密碼標誌位

bj=0,//報警標誌位

sj=0;//鎖鍵盤標誌位

// xg=0;//修改密碼標誌位

uchar pswd0_0[16]=;//密碼輸入快取儲存單元

//uchar code pswd0_1[16]=;//使用者初始密碼儲存單元

//uchar pswd1_0[16]=;//讀出密碼快取儲存單元

uchar pswd1_1[16]=;//管理員初始密碼儲存單元

sbit out=p3^5;//輸出埠

sbit l1=p0^2;//上電指示

sbit l2=p0^1;//開鎖指示

sbit l3=p0^0;//報警指示

uint   mg=0,//密碼個數

ksc=0,//開鎖次數

bjc=0,//報警次數

tcnty=0,//使用者按鍵定時次數累加

tcntg=0,//管理員輸入密碼定時次數

yhsh,//使用者輸入標誌位

glsh,//管理員輸標誌位

shw;//密碼輸完標誌位

void yhmimaxig();//密碼修改程式

void glmimaxig();//管理員修改程式

void bjyin(ulong t)

if(mg==1) //有密碼鍵按下開定時器限時

} while(num!=15);

if(mg!=16)

}  

/密碼比較電路

if(flag==1&&num==15) 

for(i=0;i<16;i++)

else

bjcb=0; }}

if(bjcb!=0)

goto loop; 

}else if(bjc==3)

goto loop;

} }       

else

if(bjcb==0)

l2=0;

l1=1;

out=1;

mg=0;//密碼個數清零

loop1:do    //鍵盤掃瞄等待功能鍵按下

if(flag==1&&num==14&&mg>=1)//輸入錯誤刪除

if(mg==16)

while(num!=15);

} } 

while(num!=15);

if(mg!=16&&num==15)

}if(flag==1&&num==15)

display_1(ksc);

do    //鍵盤掃瞄等待功能鍵按下

while(num!=11); //按下返回鍵,鎖鎖返回

}};break;

case 11: }}

}while(flag!=0);//如果設定密碼鍵按下

goto loop1;

// i2cwrite24c02_page(0x00,pswd1_1,mg);} }

else

while(num!=12);//判斷是否為管理員功能鍵按下  

gl:do//管理員輸入密碼

if(flag==1&&num==14&&mg>=1)//刪除鍵按下

if(mg==1)

//開定時器to限5秒開鎖

} while(num!=15);

if(mg!=16&&num==15)

}//管理員密碼比較///

//read_page24c02(0x10,pswd0_1,16)

for(i=0;i<16;i++) //從24c02裡讀出16個密碼

if(flag==1&&num==15) 

if(mg==16)

while(num!=15);

} } 

while(num!=15);

if(mg!=16&&num==15)

}if(flag==1&&num==15)

display_4();

do    //鍵盤掃瞄等待功能鍵按下

while(num!=11); //按下返回鍵,鎖鎖返回 }}

if(flag==1&&num==10)

while(num!=11);//按下返回鍵,鎖鎖返回

goto loop;

}if(flag==1&&num==11)//按下返回鍵,鎖鎖返回 }}

} #ifndef _key_h

#define _key_h

#include

#define uchar unsigned char

#define uint unsigned int

bit flag=0;//按鍵按下標誌位

sbit beep=p3^7;//蜂鳴器埠

delay(int z)//延時1ms

uchar num;//按鍵返回值

按鍵音程式//

void yin()

}}  

鍵盤程式///

int key()

do 

while(temp!=0x0f);

flag=1;

yin();} }

p2=0xbf; 

temp=p2&0x0f;

if(temp!=0x0f)

do 

while(temp!=0x0f);

flag=1;

yin();}}

p2=0xdf;

temp=p2&0x0f;

if(temp!=0x0f)

do 

while(temp!=0x0f);

flag=1;

yin();}}

p2=0xef;

temp=p2&0x0f;

if(temp!=0x0f)

do 

while(temp!=0x0f);

flag=1;

yin();} }

return(num);

}#endif

#ifndef _xsh_h

#define _xsh_h

#include

#define uchar unsigned char

#define uint unsigned int

sbit shj=p1^0;//串列埠資料口

sbit sck=p1^1;//串列埠時鐘

uchar code tab[20]=; //共陽數碼管

uchar code sb0[3]=,/*開鎖後顯示*/

code sb1[3]=,/*開鎖前顯示*/

code sb2[6]=,/*修改顯示*/

code sb3[6]=,/*第一二次報警顯示*/

code sb4[6]=,/*管理員進入顯示*/

code sb5[6]=;/*第三次報警顯示*/

//*顯示電路*/

void writedata(uchar num)//傳送乙個位元組

}void display_0(uchar temp)//開鎖前狀態 

writedata(q); 

writedata(s);

writedata(g);

}void display_1(uchar temp)//開鎖後狀態 

writedata(q);

writedata(s);

writedata(g);

}void display_2()//修改密碼顯示  }

void display_3()//報警顯示  }

void display_4()//管理員模式顯示  }

void display_5()//管理員模式顯示  }

#endif

#ifndef _24c02_h

#define _24c02_h

#include

#define writedeviceaddress 0xa0

#define readdeviceaddress 0xa1

sbit sda=p1^5;//i2c資料端

sbit scl=p1^6;//i2c時鐘端

///24c0224c08讀寫驅動程式///

void delayms(unsigned int number)

}void i2cstart(void)

void i2cstop(void)

void i2cack(void)

void i2cnoack(void)

void i2cwrite8bit(unsigned char input)

delayms(20);

}unsigned char i2cread8bit(void)

return(rbyte);

}void i2cwrite24lc16b(unsigned char wdata,unsigned char romaddress)

//寫入多個位元組到24c02中

//傳入引數:位址、待寫入的資料的首位址、資料長度

bit i2cwrite24c02_page(uchar romaddress,uchar *wrdata,uchar length)

{ uint i;

i2cstart();

i2cwrite8bit(writedeviceaddress);

i2cack();

i2cwrite8bit(romaddress);

i2cack();

for(i=0;i

微控制器實用密碼鎖

unsigned char num,i,j unsigned char passwordtemp 16 最大輸入16個 unsigned char inputtimes 密碼輸入錯誤次數 unsigned char passwordlength,plen 輸入密碼長度,實際密碼長度 bit flag...

基於51微控制器的密碼鎖

本次的專案是基於51微控制器的密碼鎖,適合用來作為課程設計 主要實現了 密碼鎖功能,通過矩陣按鍵輸入密碼,輸入範圍為0 f,共有四位 同時,也可以使用更改按鍵更改密碼,在更改時需要輸入原密碼來進入更改模式,四位密碼顯示h標識,成功修改後,紅綠指示燈會同時閃爍 在輸入密碼正確後,綠色指示燈點亮,舵機啟...

基於微控制器的智慧型密碼鎖

基於微控制器的智慧型密碼鎖 該密碼鎖控制器 鍵盤上有0 9個數字按鍵,功能鍵 確認和取消等,可設定復合鍵。密碼的位數及密碼可以任意設定,當輸入數字和設定的密碼相同的時候,鎖開啟,否則無法開啟。採用iic通訊方式,密碼鎖的密碼掉電不丟失。include include define uint unsi...