微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机的LCD1602液晶密码锁C语言程序

51单片机的LCD1602液晶密码锁C语言程序

时间:11-28 来源:互联网 点击:
#include

#include

#define uchar unsigned char

sbit rs=P2^0;

sbit rw=P2^1;

sbit en=P2^2;

sbit psb=P2^3;

sbit ret=P2^5;

sbit gg=P3^7;

uchar importcode[]={0,0,0,0,0,0};

uchar i;

uchar kk;

uchar js;

uchar j;

uchar ecode;

uchar bb;

uchar tcount,second;

uchar code key[]={0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee};

uchar code code1[8][6]={{0,6,0,4,9,8},{3,5,1,5,6,5},{2,5,4,3,9,5},{1,4,9,8,7,0},{1,3,9,7,8,5},{1,3,8,7,5,6},{2,9,1,9,9,5},{7,1,4,7,3,8}};

uchar code kp[]={0xf7,0xfd,0xfb,0xfe};

void lcd_int(void);

void functionset(void);

void write_order(uchar command);

void write_date(uchar date);

void display(void);

uchar keyy(void);

uchar gkey(void);

void keyc(void);

uchar comparecode(void);

void display(void);

void display0(void);

void display1(void);

void display2(void);

void display3(void);

void delay(int ms);

void clear_lcd(void);

void dscsh(void);

uchar keyy(void)

{ uchar key;

P1=0xf0;

while(P1!=0xf0);

do{

for(j=0;j<4;j++)

{ P1=kp[j];

if(P1!=kp[j])

{delay(100);

key=P1;

if(key!=kp[j])

{return(key);}

}

}

}while(1);

}

uchar gkey(void)

{

uchar number;

number=keyy();

for(j=0;j<16;j++)

{if(number==key[j])

return(j);

}

}

void keyc(void)

{

uchar v;

v=gkey();

switch(v)

{

case 0:kk++;

if(js<6)

{importcode[js]=0;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 1:kk++;

if(js<6)

{importcode[js]=1;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 2:kk++;

if(js<6)

{importcode[js]=2;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 3:kk++;

if(js<6)

{importcode[js]=3;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 4:kk++;

if(js<6)

{importcode[js]=4;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 5:kk++;

if(js<6)

{importcode[js]=5;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 6:kk++;

if(js<6)

{importcode[js]=6;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 7:kk++;

if(js<6)

{importcode[js]=7;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 8:kk++;

if(js<6)

{importcode[js]=8;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 9:kk++;

if(js<6)

{importcode[js]=9;

js++;

if(js==1)

{TR0=1;}

display();}

break;

case 14:

if(js==6)

{js=0;

ecode=1;}

else

{ecode=0;}

break;

case 10: clear_lcd();

js=0;kk=0;

gg=1;

TR0=0;

for(j=0;j<6;j++)

{importcode[j]=0;}

break;

case 11:gg=1;

break;

}

}

uchar comparecode(void)

{

for(j=0;j<6;j++)

{if(code1[i][j]==importcode[j])

bb=1;

else

{bb=0;break;}

}

return(bb);

}

void delay(int ms)

{ while(--ms);}

void dscsh(void)

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%6;

ET0=1;

EA=1;

}

void main(void)

{

dscsh();

lcd_int();

functionset();

while(1)

{

display0();

keyc();

if(ecode==1)

{ ecode=0;

TR0=0;

bb=comparecode();

for(j=0;j<6;j++)

{importcode[j]=0;}

if(bb==1)

{ i++;

if(i==8)

{i=0;}

kk=0;

gg=0;

display1();

delay(50000);

delay(50000);

clear_lcd();

gg=1;

}

else

{kk=0;

display2();

gg=0;

delay(50000);

delay(50000);

clear_lcd();

}

}

}

}

void t0(void) interrupt 1 using 0

{ tcount++;

if(tcount==20)

{second++;

tcount=0;

if(second==30)

{second=0;

gg=0;

display3();

}

}

}

void display(void)

{

switch(kk)

{case 1:

write_order(0x91);

write_date(0xa3);

write_date(0xaa);

break;

case 2:

write_order(0x92);

write_date(0xa3);

write_date(0xaa);

break;

case 3:

write_order(0x93);

write_date(0xa3);

write_date(0xaa);

break;

case 4:

write_order(0x94);

write_date(0xa3);

write_date(0xaa);

break;

case 5:

write_order(0x95);

write_date(0xa3);

write_date(0xaa);

break;

case 6:

write_order(0x96);

write_date(0xa3);

write_date(0xaa);

break;

}

}

void display0(void)

{

write_order(0x80);

write_date(0xc7);

write_date(0xeb);

write_date(0xca);

write_date(0xe4);

write_date(0xc8);

write_date(0xeb);

write_date(0xc3);

write_date(0xdc);

write_date(0xc2);

write_date(0xeb);

}

void display1(void)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top