- 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ù)制代碼
|