欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機實現電子密碼鎖仿真+代碼
[打印本頁]
作者:
Zerozz
時間:
2018-11-30 14:05
標題:
51單片機實現電子密碼鎖仿真+代碼
51單片機實現的智能門禁系統仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(15.51 KB, 下載次數: 46)
下載附件
2018-11-30 17:08 上傳
單片機源程序如下:
#include<reg52.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^5;
sbit RW=P3^6;
sbit EN=P3^4;
sbit LED=P0^1;
sbit BEN=P3^2;
uchar code table1[]="Input username:";
uchar code table2[]="Enter password:";
uchar code table3[]="error!try again";
uchar code table4[]="welcome!!!";
uchar code username[]="620";
uchar code password[]="615";
uchar i=-1,flag=0,KeyNumber,KeyCount=-1,keyword[16]={0};
bit temp=0;
void delay(uint z){
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void lcd_wcmd(uchar cmd){
RS=0;
RW=0;
P2=cmd;
delay(5);
EN=1;
delay(5);
EN=0;
}
void lcd_wdat(uchar date){
RS=1;
RW=0;
P2=date;
delay(5);
EN=1;
delay(5);
EN=0;
}
void lcd_init(){
EN=0;
lcd_wcmd(0x06);
lcd_wcmd(0x0c);
lcd_wcmd(0x38);
lcd_wcmd(0x01);
lcd_wcmd(0x02);
}
void display1(uchar a[]){
for(i=0;i<strlen(a);i++){
lcd_wdat(a[i]);
}
}
uchar keyscan(void)
{
uchar cord_h=0,cord_l=0;
P1=0x0f;
cord_h=P1&0x0f;
if(cord_h!=0x0f)
{
delay(100);
if(cord_h!=0x0f)
{
cord_h=P1&0x0f;
P1=cord_h|0xf0;
cord_l=P1&0xf0;
while((P1&0Xf0)!=0xf0);
return(cord_h+cord_l);
}
}
return(0);
}
//void lcd_pos(uchar pos)
//{
// lcd_wcmd(0x80+0x40+pos);
//}
void key_word(uint key)
{
switch(key)
{
case 0xee:
KeyCount++;
keyword[KeyCount]='0';
//lcd_pos(KeyCount);
if(flag==1)
lcd_wdat('*');
else
lcd_wdat('0');
break;
case 0xde:
KeyCount++;
keyword[KeyCount]='1';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('1');
else
lcd_wdat('*');
}
else
lcd_wdat('1');
break;
case 0xbe:
KeyCount++;
keyword[KeyCount]='2';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('2');
else
lcd_wdat('*');
}
else
lcd_wdat('2');
break;
case 0x7e:
KeyCount++;
keyword[KeyCount]='3';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('3');
else
lcd_wdat('*');
}
else
lcd_wdat('3');
break;
case 0xed:
KeyCount++;
keyword[KeyCount]='4';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('4');
else
lcd_wdat('*');
}
else
lcd_wdat('4');
break;
case 0xdd:
KeyCount++;
keyword[KeyCount]='5';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('5');
else
lcd_wdat('*');
}
else
lcd_wdat('5');
break;
case 0xbd:
KeyCount++;
keyword[KeyCount]='6';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('6');
else
lcd_wdat('*');
}
else
lcd_wdat('6');
break;
case 0x7d:
KeyCount++;
keyword[KeyCount]='7';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('7');
else
lcd_wdat('*');
}
else
lcd_wdat('7');
break;
case 0xeb:
KeyCount++;
keyword[KeyCount]='8';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('8');
else
lcd_wdat('*');
}
else
lcd_wdat('8');
break;
case 0xdb:
KeyCount++;
keyword[KeyCount]='9';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('9');
else
lcd_wdat('*');
}
else
lcd_wdat('9');
break;
case 0xbb:
KeyCount++;
keyword[KeyCount]='A';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('A');
else
lcd_wdat('*');
}
else
lcd_wdat('A');
break;
case 0x7b:
KeyCount++;
keyword[KeyCount]='B';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('B');
else
lcd_wdat('*');
}
else
lcd_wdat('B');
break;
case 0xe7:
keyword[KeyCount--]='\0';
lcd_wcmd(0x80+0x40+KeyCount+1);
lcd_wdat(' ');
lcd_wcmd(0x80+0x40+KeyCount+1);
break;
case 0xd7:
if(flag==1){
if(strcmp(keyword,password)==0){
lcd_wcmd(0x01);
delay(5);
display1(table4);
P0=0X00;
BEN=~BEN;
}
else{
lcd_wcmd(0x01);
display1(table3);
lcd_wcmd(0xc0);
for(i=0;i<=KeyCount;i++)
keyword[i]=0;
KeyCount=-1;
}
}
else{
if(strcmp(keyword,username)==0){
lcd_wcmd(0x01);
delay(5);
display1(table2);
lcd_wcmd(0xc0);
flag=1;
for(i=0;i<=16;i++)
keyword[i]=0;
KeyCount=-1;
}
else{
lcd_wcmd(0x01);
display1(table3);
lcd_wcmd(0xc0);
KeyCount=-1;
}
}
break;
case 0xb7:
if(flag==1){
lcd_wcmd(0xc0);
temp=~temp;
for(i=0;i<strlen(keyword);i++)
{
if(temp)
lcd_wdat(keyword[i]);
else
lcd_wdat('*');
}
}
break;
case 0x77:
KeyCount++;
keyword[KeyCount]='@';
//lcd_pos(KeyCount);
if(flag==1){
if(temp==1)
lcd_wdat('@');
else
lcd_wdat('*');
}
else
lcd_wdat('@');
break;
default:
break;
}
}
void main(){
P1=0x0f;
P0=0xff;
lcd_init();
display1(table1);
lcd_wcmd(0x80+0x40);
while(1){
key_word(keyscan());
}
}
復制代碼
所有資料51hei提供下載:
門禁系統.rar
(69.82 KB, 下載次數: 41)
2018-11-30 14:03 上傳
點擊文件名下載附件
1602門禁系統
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1