密码输入正确时:
密码输入错误时:
完整代码(不用担心不可以运行):
#include#include #define uchar unsigned char sbit RS=P1^0; //LCD1602Êý¾Ý/ÃüÁîÑ¡Ôñ붨Ò壬½«RS¶¨ÒåΪP1.0µÄÒý½Å sbit RW=P1^1; // LCD1602¶ÁдѡÔñ붨Ò壬½«RW¶¨ÒåΪP1.1µÄÒý½Å sbit EN=P1^2; // LCD1602ʹÄÜÐźÅ붨Ò壬½«EN¶¨ÒåΪP1.2µÄÒý½Å sbit ledg=P1^3; //¿ªËøÖ¸Ê¾µÆ¶¨ÒåΪP1.3¿Ú sbit ledr=P1^7; //¿ªËøÊ§°ÜָʾµÆ¶¨ÒåΪP1.7¿Ú sbit relay=P1^4; //¼ÌµçÆ÷Êä³ö¶Ë¶¨ÒåΪP1.4¿Ú sbit buzz=P1^6; //·äÃùÆ÷Êä³ö¶Ë¶¨ÒåΪP1.6¿Ú char table0[]="error"; char table1[]="open"; char table2[]="password:"; int temp,ch,m0,m1,p,n0,n1,n2,n3,n4,n5; void delay(int z) { int x,c; for(x=z;x>0;x--) for(c=100;c>0;c--); } keyscan() //¼üÅÌɨÃè×Ó³ÌÐò { temp=P2&0xf0; P2=0xfe; //ɨÃèµÚ0ÐÐ delay(1); temp=P2&0xf0; while(temp!=0xf0) { switch(temp) { case 0xe0:ch='7';break; //µÚ0ÐеÄÈý¸ö¼üÖµÅÐ¶Ï case 0xd0:ch='8';break; case 0xb0:ch='9';break; default:ch=p; break; //pÊÇÏû¶¶Ö¸Ê¾Î» } while(temp!=0xf0) //µÈ´ý°´¼üÊÍ·Å { temp=P2; temp=temp&0xf0; } } P2=0xfd; //ɨÃèµÚ1ÐÐ delay(1); temp=P2&0xf0; while(temp!=0xf0) { switch(temp) //µÚ1ÐеÄÈý¸ö¼üÖµÅÐ¶Ï { case 0xe0:ch='4';break; case 0xd0:ch='5';break; case 0xb0:ch='6';break; default:ch=p;break; } while(temp!=0xf0) //µÈ´ý°´¼üÊÍ·Å { temp=P2; temp=temp&0xf0; } } P2=0xfb; //ɨÃèµÚ2ÐÐ delay(1); temp=P2&0xf0; while(temp!=0xf0) { switch(temp) //µÚ2ÐеÄÈý¸ö¼üÖµÅÐ¶Ï { case 0xe0:ch='1';break; case 0xd0:ch='2';break; case 0xb0:ch='3';break; default:ch=p;break; } while(temp!=0xf0) //µÈ´ý°´¼üÊÍ·Å { temp=P2; temp=temp&0xf0; } } P2=0xf7; //ɨÃèµÚ3ÐÐ delay(1); temp=P2&0xf0; while(temp!=0xf0) { switch(temp) //µÚ3ÐеÄÈý¸ö¼üÖµÅÐ¶Ï { case 0xe0:ch='A';break; case 0xd0:ch='0';break; case 0xb0:ch='B';break; default:ch=p;break; } while(temp!=0xf0) //µÈ´ý°´¼üÊÍ·Å { temp=P2; temp=temp&0xf0; } } return ch; //·µ»Ø¼üÖµ } void wcom(uchar com) //LCD1602дÃüÁÊý { RS=0; P3=com; delay(1); //дÃüÁîÑÓʱ¿ÉÒÔΪ1 EN=1; delay(1); //дÃüÁîÑÓʱ¿ÉÒÔΪ1 EN=0; } void wdat(uchar dat) //LCD1602дÊý¾Ýº¯Êý { RS=1; P3=dat; delay(1); //дÊý¾ÝÑÓʱ¿ÉÒÔΪ1 EN=1; delay(4); //дÊý¾ÝÑÓʱÖÁÉÙΪ4 EN=0; } void init() //LCD1602³õʼ»¯º¯Êý { EN=0; wcom(0x38); wcom(0x0c); wcom(0x06); wcom(0x01); } void error() //ÃÜÂë´íÎóÏÔʾ×Ó³ÌÐò { char m2; wcom(0xc6); for(m2=0;m2<5;m2++) { wdat(table0[m2]); } } void open() //ÃÜÂëÕýÈ·£¬¿ªËøÏÔʾ×Ó³ÌÐò { char m2; wcom(0xc6); for(m2=0;m2<4;m2++) { wdat(table1[m2]); } } void pass() //PasswordÏÔʾ { char m2; wcom(0x80); for(m2=0;m2<9;m2++) { wdat(table2[m2]); } } change(int m) //¼üÅÌÊýֵת»»Îª¡°*¡±ÏÔʾ { delay(500); wcom(m); wdat('*'); } main() //Ö÷³ÌÐò { RW=0; ledg=0; ledr=0; relay=1; buzz=1; init(); delay(5); pass(); wcom(0x89); //0x89=0x80+0x09£¬LCD1602´ÓµÚ1ÐеÚ9¸ö×Ö·û¿ªÊ¼ÏÔʾ while(keyscan()==p) //µÈ´ý¼üÅ̰´Ï { delay(3); keyscan(); } wdat(keyscan()); //½«¼üÅ̰´ÏµÄÊýÖµÒÀ´Îдµ½LCD1602Òº¾§ÆÁ n0=keyscan(); change(0x89); delay(10); ch=p; while(keyscan()==p) { delay(3); keyscan(); } wdat(keyscan()); n1=keyscan(); change(0x8a); ch=p; while(keyscan()==p) { delay(3); keyscan(); } wdat(keyscan()); n2=keyscan(); change(0x8b); ch=p; while(keyscan()==p) { delay(3); keyscan(); } wdat(keyscan()); n3=keyscan(); change(0x8c); ch=p; while(keyscan()==p) { delay(3); keyscan(); } wdat(keyscan()); n4=keyscan(); change(0x8d); ch=p; while(keyscan()==p) { delay(3); keyscan(); } wdat(keyscan()); n5=keyscan(); change(0x8e); if(n0=='9'&&n1=='9'&&n2=='1'&&n3=='1'&&n4=='2'&&n5=='1')//ÃÜÂëÆ¥Åä³É¹¦ { int m3=1; open(); //¿ªËøÏÔʾ relay=0; delay(3000); relay=1; //ÈôÏ£Íû¼ÌµçÆ÷Ëù½Ó¶þ¼«¹ÜÔÚÁÁÒ»¶Îʱ¼äºóϨÃð£¬Ôò½«±¾ÐмÓÉÏ while(m3) { int m4,m5; ledg=0; for(m4=200;m4>0;m4--) { keyscan(); if(keyscan()=='A') //ÊäÈë¡°A¡±£¬Çå³ýָʾµÆ { m4=0; m3=0; } } ledg=1; if(m3!=0) { for(m5=200;m5>0;m5--) { keyscan(); if(keyscan()=='A') { m3=0; } } } } } else //ÃÜÂëÆ¥Åä²»³É¹¦£¬ÏÔʾ´íÎó { ledr=1; error(); buzz=0; delay(5000); } }
若以上代码有任何错误或可以改进的地方欢迎在评论区指出并讨论。
感谢你的阅读与支持!
不想自己做仿真的自己下载(需要积分)源码和仿真,不过建议自己做一遍,可以加深理解。



