|
本帖最后由 故人以北 于 2016-12-23 16:27 編輯
這是一個設計電子密碼鎖的程序
keil 編譯時出現錯誤 求大神幫忙
- #include<reg51.h>
- #include<string.h>
- #define uchar unsigned char
- #define unit unsigned int
- uchar Pre_KeyNo=16,KeyNo=16;
- uchar code Title_Text[]="Your Password...";
- uchar DSY_BUFFER[10]="";
- uchar UserPassword[10]="";
- void LCD_Init();
- //void Display_String(uchar * str,uchar LineNo);
- void Display_String(uchar,x,uchar y,uchar *str);
- void IIC_24C04_Init();
- void Beep();
- uchar RecString(uchar Slave,uchar Subadder,uchar *Buffer,uchar N);
- uchar SendString(uchar Slave,uchar Subadder,uchar *Buffer,uchar N);
- uchar Keys_Scan();
- sbit LED_OPEN=P2^7;
- sbit BEEP=P3^7;
- void DelayMS(uint x)
- {
- uchar i;
- while (x--) for (i=0;i<120;i++);
- }
- void Beep()
- {
- uchar i;
- for(i=0;i<100;i++)
- {
- DelayMS(1);BEEP=~BEEP;
- }
- }
- void Clear_Password()
- {
- UserPassword[0]='\0';
- DSY_BUFFER[0]='\0';
- }
- void main()
- {
- uchar i = 0;
- uchar IIC_Password[10];///={"876543"};
- uchar IS_Valid_User = 0;
- P0 = 0xFF;
- P1 = 0xFF;
- P2 = 0xFF;
- DelayMS(10);
- LCD_Init();
- IIC_24C04_Init();
- Display_String(0,0,Title_Text);
- RecString(0xa0,0,IIC_Password,6);
- IIC_Password[6] ='\0';
- while(1)
- {
- P1 = 0xF0;
- if(P1!= 0xF0)KeyNo = Keys_Scan();
- switch(KeyNo)
- {
- case0;case1;case2;case3;case4;
- case5;case6;case7;case8;
- if (i<= 5)
- {
- if(i==0)Display_String(0,1," ");
- UserPassword[i] = KeyNo + '0';
- UserPAssword[i+1] = '\0';
- DSY_BUFFER[i] = '*';
- DSY_BUFFER[i+1] = '\0';
- Display_String(0,1,DSY_BUFFER);
- i++;
- }
- break;
- case 11://按B鍵開鎖
- if(strcmp(UserPassword,IIC_Password)==0)
- {
- LED_OPEN = 0;
- Clear_PAssword();
- Display_String(0,1,"Unlock OK! ");
- IS_Valid_User = 1;
- }
- else
- {
- LED_OPEN =1;
- Clear_Password();
- Display_String(0,1,"ERROR ");
- IS_Valid_User = 0;
- }
- i = 0;
- break;
- case 10://按A鍵上鎖
- LED_OPEN =1;
- Clear_Password();
- Display_String(0,0,Title_Text);
- Display_String(0,1," ");
- i = 0;
- IS_Valid_User = 0;
- break;
- case 12://按C鍵設置新密碼
- //如果是合法用戶則提示輸入新密碼
- if(!IS_Valid_User)Display_string(0,1,"No Rights! ");
- else
- {i = 0;
- Display_String(0,0"New Password ");
- Display_String(0,1," ");
- }
- break;
- case 13://按13鍵保存新密碼
- if (!IS_Valid_User)Display_String(0,1,"No Right! ");
- else
- {
- SendString(0xa0,0,UserPassword,6);
- for(i=0;i<7;i++)IIC_Password[i]=UserPassword[i];
- //重新讀入剛寫的密碼
- //RecString(0xa0,0,IIC_Password,6);
- //IIC_Password[6] = '\0';
- i = 0;
- Display_String(0,0,Title_Text);
- Display_String(0,1"Password Saved");
- }
- break;
- case 15://按F鍵消除所以輸入
- i = 0;
- Clear_Password();
- Display_String(0,1," ");
- }
- Beep();
- DelayMS(100);
- P1 = 0xF0;
- while(P1 !=0xF0);
- while(P1 == 0xF0);
- }
- }
復制代碼
RET
FINI:NOP
END
|
-
-
新建文件夾.rar
2016-12-23 16:27 上傳
點擊文件名下載附件
4.73 KB, 下載次數: 11
|