C51微控制器學習 密碼鎖的實現

2021-09-24 10:36:04 字數 4733 閱讀 2655

#include//#include#define uint unsigned int

#define uchar unsigned char

#define data1602 p0

#define led p2

/*******引腳定義*******/

//按鍵的控制引腳

sbit s1 = p3^7;

sbit s2 = p3^6;

sbit s3 = p3^5;

sbit s4 = p3^4;

sbit s5 = p3^3;

sbit s6 = p3^2;

//lcd1602的控制引腳

sbit rs = p1^0;

sbit rw = p1^1;

sbit e = p1^2;

sbit bf = data1602^7; //bf表示data1602的最高位,判斷是忙還是閒

sbit alam = p1^5;//蜂鳴器引腳

//sbit key = p3^3;//開鎖

bit isinitpass = 1;//是否在初始化密碼

bit pass=0; //密碼正確標誌

bit isreset = 0; //是否在重設密碼

uchar countnum = 0; //選擇數字位數

uchar countpass = 1;//輸入密碼位數

uchar errorcont = 0; //錯誤次數計數

uchar timenum=0; //計時間次數

uchar truetime='5'; // 鎖定時間

//液晶顯示資料陣列

uchar code initlock1 = ;

uchar code initlock2 = ;

uchar code setnew = ;

uchar code input = ; //input

uchar code start_line1 = ;

uchar code start_line2 = ;

uchar code superpassword = ;

uchar code correct = ; //輸入正確

uchar code error = ; //輸入錯誤

uchar code codepass = ;

uchar code lockopen = ; //open

uchar code reset = ;

uchar code oldpassword = ; //輸入舊密碼

uchar code setok = ;

uchar code null = ;

uchar code resetok = ;

uchar code initword = ;

uchar code errortry = ;

uchar code again = ;

uchar code wait = ;

uchar code table=;//流水燈

uchar initpassword[6]=; //初始化密碼暫存陣列

uchar currentpassword[6]=;//輸入密碼暫存陣列

uchar adminpassword[6]=;//管理員密碼

uchar passnum[10] = ; //存放所有數字

/*******延時函式*******/

void delay(uint z)//z毫秒

/*******空函式*******/

/*void nop(void) //空操作

*//*******忙檢測函式*******/

bit lcd_busy()

/*******寫命令函式*******/

void lcd_write_cmd(uchar cmd)//cmd為需要寫的命令

/*******寫資料函式*******/

void lcd_write_data(uchar dat)//dat為需要寫的資料

/*******it0中斷初始化函式*******/

void it_init()

/*******定時器t0中斷初始化函式*******/

void time_init()

/*******lcd初始化函式*******/

void lcd_init()

/*******lcd寫顯示位址函式*******/

void lcd_write_address(uchar x,uchar y)

/*******lcd顯示函式*******/

void lcd_display(uchar x,uchar y,uchar buf) //x:列 y:行,buf:顯示的字元

/*******一聲提示音,表示有效輸入*******/

void onealam()

/*******兩聲提示音,表示操作成功*******/

void twoalam()

}/*******三聲提示音,表示錯誤*******/

void threealam()

}/*******流水燈函式*******/

void led_display()

led = 0x00;

delay(1000);

led = 0xff;

}/*******初始化介面函式*******/

void init_display()

/*******按鍵控制輸入密碼函式*******/

void pushbtn_password()

delay(300);

} if(s3 == 0) //第一次檢測按鍵被按下

delay(250);

} if(s4 == 0)

if(isinitpass)

lcd_display(6+countpass,1,initpassword[countpass-1]);

else

lcd_display(9+countpass,1,currentpassword[countpass-1]);

lcd_write_cmd(0x10);

delay(300);

} if(s5 == 0)

}} lcd_write_cmd(0x0c); //游標不閃爍

}/*******最初設定密碼函式*******/

void init_password()

/*******判斷是否輸入正確函式*******/

void judge()

else if((currentpassword[0]==adminpassword[0])&&(currentpassword[1]==adminpassword[1])&&(currentpassword[2]==adminpassword[2])&&(currentpassword[3]==adminpassword[3])&&(currentpassword[4]==adminpassword[4])&&(currentpassword[5]==adminpassword[5]))

else

errorcont++; //錯誤次數+1

if(jg==1)

else if(jg==2)

else if(jg==3)

else if(jg==4)

else }

/*******顯示輸入密碼函式*******/

void input_password()

}tr0 = 0; //關閉定時器t0

truetime = '5';

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

lcd_display(i,0,start_line1[i]);

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

lcd_display(i,1,start_line2[i]);

pushbtn_password();

judge();

}while(pass==0); }

/*******main函式*******/

void main()

}void resetpassword() interrupt 0

}tr0 = 0; //關閉定時器t0

truetime = '5';

}*/if(errorcont==3)

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

lcd_display(i,0,oldpassword[i]);

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

lcd_display(i,1,start_line2[i]);

pushbtn_password();

judge();

}while(pass==0&&errorcont<3);

delay(1000);

if(pass == 1)

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

lcd_display(i,0,start_line1[i]);

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

lcd_display(i,1,start_line2[i]);

isinitpass = 0;

isreset = 0;

}void timecount() interrupt 1

基於51微控制器的密碼鎖

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

微控制器實用密碼鎖

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

51微控制器與C51

微控制器又稱單片微控制器,是在一塊晶元中整合了cpu 處理器 ram 資料儲存器 rom 程式儲存器 定時器 計數器和多種功能的i o 輸入 輸出 介面等一台計算機所需要的基本功能部件,從而可以完成複雜的運算 邏輯控制 通訊等功能。51微控制器是對所有相容intel 8031指令系統的微控制器的統稱...