標題:
用24C04與1602LCD設(shè)計單片機電子密碼鎖仿真
[打印本頁]
作者:
Cheng.M
時間:
2018-11-9 10:58
標題:
用24C04與1602LCD設(shè)計單片機電子密碼鎖仿真
電子密碼鎖仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(18.24 KB, 下載次數(shù): 60)
下載附件
2018-11-14 02:00 上傳
單片機源程序如下:
//-----------------------------------------------------------------
//原始程序中相鄰兩位密碼不能相同.
//本壓縮包中的HEX由修改后的新程序編譯生成,允許輸入任意密碼.
//-----------------------------------------------------------------
//改動的主要是main函數(shù)中while循環(huán)內(nèi)的代碼.
//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void main()
{
uchar i = 0;
uchar IIC_Password[10];
uchar IS_Valid_User = 0;
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
TMOD = 0x02; //T0設(shè)置為8位自動重裝模式
TH0 = 175;
TL0 = 175;
TR0 = 1; //啟動T0
DelayMS(10);
LCD_Init(); //初始化LCD
IIC_24C04_Init(); //初始化24C04
Display_String(Title_Text,0x00); //在第1行顯示標題
//24C04的內(nèi)容已由初始化BIN文件導(dǎo)入
//將24C04中預(yù)先寫入的密碼讀入pass
RecString(0xa0, 0 , IIC_Password, 6);
IIC_Password[6] = '\0';
while(1)
{
P1 = 0xF0;
if(P1 != 0xF0) KeyNo = Keys_Scan(); //掃描鍵盤獲取鍵序號KeyNo
switch ( KeyNo )
{
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
if ( i<= 5 ) //密碼限制在6位以內(nèi)
{
//如果i為0則執(zhí)行一次清屏
if (i ==0) Display_String(" ",0x40);
UserPassword[i] = KeyNo + '0';
UserPassword[i+1] = '\0';
DSY_BUFFER[i] = '*';
DSY_BUFFER[i+1] = '\0';
Display_String(DSY_BUFFER,0x40);
i++;
}
break;
case 10: //按A鍵開鎖
if (strcmp(UserPassword,IIC_Password) == 0)
{
LED_OPEN = 0; //點亮LED
Clear_Password();
Display_String("Unlock OK! ",0x40);
IS_Valid_User = 1;
}
else
{
LED_OPEN =1; //關(guān)閉LED
Clear_Password();
Display_String("ERROR ! ",0x40);
IS_Valid_User = 0;
}
i = 0;
break;
case 11: //按B鍵上鎖
LED_OPEN =1;
Clear_Password();
Display_String(Title_Text,0x00);
Display_String(" ",0x40);
i = 0;
IS_Valid_User = 0;
break;
case 12: //按C鍵設(shè)置新密碼
//如果是合法用戶則提示輸入新密碼
if ( !IS_Valid_User ) Display_String("No rights !",0x40);
else
{
i = 0;
Display_String("New Password: ",0x00);
Display_String(" ",0x40);
}
break;
case 13: //按D鍵保存新密碼
if ( !IS_Valid_User ) Display_String("No rights !",0x40);
else
{
SendString(0xa0, 0 , UserPassword, 6);
//重新讀入剛寫的密碼
RecString(0xa0, 0 , IIC_Password, 6);
IIC_Password[6] = '\0';
i = 0;
Display_String(Title_Text,0x00);
Display_String("Password Saved! ",0x40);
}
break;
case 14: //按E鍵消除所有輸入
i = 0;
Clear_Password();
Display_String(" ",0x40);
}
Beep();
DelayMS(100);
P1= 0xF0;
while (P1 != 0xF0); //如果有鍵未釋放則等待
while (P1 == 0xF0); //如果沒有再次按下按鍵則等待
}
}
復(fù)制代碼
所有資料51hei提供下載:
34 用24C04與1602LCD設(shè)計電子密碼鎖.rar
(24.48 KB, 下載次數(shù): 100)
2018-11-14 02:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
方山里
時間:
2019-1-10 21:59
幾位密碼的啊
作者:
Scien
時間:
2019-12-7 12:32
代碼不全啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1