#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
extern unsigned char KeyDown();
extern void Lcd1602_Delay1ms(uint c);
extern void LcdInit();
extern void LcdWriteCom(uchar com);
extern void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);
extern void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);
uchar code password[]={1,2,3,4,1,1};
sbit led=P3^0;
main()
{
uchar num,i=0,j;
uchar passwordtemp[6];
uchar passwordlength,PLEN;
bit flag;
PLEN=sizeof(password)/sizeof(password[0]);
PLEN=9;
LcdInit() ;
Lcd1602_Delay1ms(10);
LcdWriteCom(0x01);
LCD_Write_String(0,0," Welcome! ");
LCD_Write_String(0,1,"Input password!");
while(1)
{
num=Keydown();
if(num!=0xff)
{
if(i==0)
LCD_Write_String(0,0," ");
if(i<16)
{
passwordtemp[ i]=num;
LCD_Write_Char(i,1,'*');
}
i++;
if(i==8)
{
passwordlength=i-1;
i=0;
if(passwordlength==PLEN)
{
flag=1;
for(j=0;j<PLEN;j++)
flag=flag&&(passwordtemp[j]==password[j]);
}
if(flag)
{
LCD_Write_String(0,1," ");
LCD_Write_String(0,1,"Right Open!>>>>");
led=0;
Lcd1602_Delay1ms(30000);
led=1;
flag=0;
}
else
{
LCD_Write_String(0,1," ");
LCD_Write_String(0,1,"Wrong! Retry!");
}
}
}
}
}
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
#define GPIO_KEY P1
uchar KeyValue;
uchar KeyState;
void Delay10ms();
unsigned char KeyDown();
unsigned char KeyDown()
{
char a;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
{
Delay10ms();
if(GPIO_KEY!=0x0f)
{
KeyState=1;
GPIO_KEY=0X0F;
Delay10ms();
switch(GPIO_KEY)
{
case(0x07):KeyValue=0;break;
case(0X0b):KeyValue=1;break;
case(0X0d):KeyValue=2;break;
case(0X0e):KeyValue=3;break;
}
GPIO_KEY=0XF0;
Delay10ms();
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0))
{
Delay10ms();
a++;
}
a=0;
}
}
return KeyValue;
}
void Delay10ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
#include"reg52.h"
#define LCD1602_DATAPINS P0
#define uchar unsigned char
#define uint unsigned int
uchar x;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
sbit LCD1602_E=P2^7;
void Lcd1602_Delay1ms(uint c);
void LcdWriteCom(uchar com);
void LcdWriteData(uchar dat) ;
void LcdInit();
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);
void Lcd1602_Delay1ms(uint c)
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void LcdWriteCom(uchar com)
{
LCD1602_E = 0;
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DATAPINS = com;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
void LcdWriteData(uchar dat)
{
LCD1602_E = 0;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DATAPINS = dat;
Lcd1602_Delay1ms(1);
LCD1602_E = 1;
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
void LcdInit()
{
LcdWriteCom(0x38);
LcdWriteCom(0x0c);
LcdWriteCom(0x06);
LcdWriteCom(0x01);
}
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
while (*s)
{
LCD_Write_Char(x,y,*s);
s ++; x++;
}
}
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LcdWriteCom(0x80 + x);
}
else
{
LcdWriteCom(0xC0 + x);
}
LcdWriteData( Data);
}
main.c(32): warning C206: 'Keydown': missing function-prototype
|