仿真文件和完整源碼下載地址:http://www.zg4o1577.cn/bbs/dpj-22586-1.html
論文下載地址:http://www.zg4o1577.cn/f/電子密碼鎖論文最終稿.docx
下面是mima.c子程序:
#include <reg52.h>
#include "mima.h"
#include "1602.h"
#include "矩陣鍵盤.h"
#include "delay_ms.h"
/*比較密碼函數,密碼正確返回1,不正確返回0*/
bit mimaduibi(unsigned char *string1,unsigned char *string2)
{
unsigned char count;
for(count = 0; count < 6; count++)
{
if(string1[count] != string2[count])
return 0;
}
return 1;
}
/*選擇輸入密碼或修改密碼函數,輸入密碼返回A,修改密碼返回B*/
unsigned char step_choose(void)//選擇輸入密碼或修改密碼處理函數
{
uchar key;
key = 0xff;
write_com(0x06);//寫一個字符后地址指針加 1
write_com(0x01);//顯示清零,數據指針清零
lcd_pos(0,0);
write_n_char(" Input password ");
lcd_pos(1,0);
write_n_char(" Press key A ");
while((key != A) && (key != B))
key = keyscan();
return key;
}
/*輸入密碼函數,密碼正確返回1,錯誤返回0*/
bit input_mima(uchar * mima)//輸入密碼函數
{
unsigned char count,key;
lcd_pos(1,0);
for(count = 0; count < 7; count++)
{
delay_ms(100);
if(count < 6)
{
do{key = keyscan();}//掃描鍵盤
while(key == 0xff);
if((key != backspace) && (key != A) && (key != enter))//不是退格也不是確認鍵
{
write_data('*');//是數字鍵顯示*
mima[count] = key;
// continue;
}
if(key == backspace)//是退格鍵
{
if(count > 0)
{
lcd_pos(1,--count);//光標前移一位
write_data(' ');//清空一位
mima[count] = ' ';//寫空
lcd_pos(1,count);
count--;//密碼計數器減一 ,因為循環后會+1,所以在這里要加1
}
}
if(key == enter)//沒完成密碼輸入返回錯誤信息
{
lcd_pos(0,0);
return(0);
}
}
if(count==6)
{
do{key = keyscan();}
while((key != backspace)&&(key != enter));
if(key == backspace)
{
lcd_pos(1,--count);
write_data(' ');
mima[count]=' ';
lcd_pos(1,count);
count--;
}
if(key == enter)//密碼位數正確
{
return(1);//返回1正確信號
}
}
}
}