|
功能基本完善,就差一個顯示時鐘的。
新人第一次發(fā)帖請多多支持!
)A1X{5@11VII]I0)%8{)S}S.jpg (387.52 KB, 下載次數(shù): 75)
下載附件
2018-1-23 20:02 上傳
0.png (50.87 KB, 下載次數(shù): 91)
下載附件
2018-1-24 04:00 上傳
單片機(jī)源程序如下:
- #include<reg52.h>
- #include"lcd.h"
- #include"eeprom.h"
- sbit LED=P1^7;
- sbit KEY1=P1^0;
- sbit KEY2=P1^1;
- sbit DOOR=P1^2;
- sbit CLOSE=P1^3;
- bit off;
- unsigned char code Init[13] = "Set password:";
- unsigned char code Save[13] = "Do you save? ";
- unsigned char code CnCh[15] = "Input password:";
- unsigned char code Titl1[16]="password error! ";
- unsigned char code Titl2[18]="password correct!";
- unsigned char code Titl3[10]="Loading..."; //password error password correct
- unsigned char MM[6];
- unsigned char SMM[6];
- unsigned char i1,j,flag2,flag1,flag3,flag4,flag5,flag,flag6,a;
- int num;
- void delay(uchar c)
- {
- uchar a,b;
- for(b=4*c;b>0;b--)
- for(a=113;a>0;a--);
- }
- void comout(uchar com)
- {
- SBUF=com;
- while(!TI);
- TI=0;
- }
- void InitUART(void)
- {
- TMOD = 0x20;
- SCON = 0x50;
- TH1 = 0xFD;
- TL1 = TH1;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
- void mima()
- {
- if(num<=9&&num>=0)
- {
- if(i1==5)
- {comout(1);}
- if(i1!=5)
- {comout(0);}
- MM[i1]=num;
-
- flag1=0;
- }
- if(i1==6&&SBUF=='A')
- {flag3=1;}
- if(num<=9&&num>=0&&flag4==3)
- {
- SMM[j]=num;
- flag5=0;
- }
-
- }
- void LCD_w()
- {
- unsigned char i;
- if(flag2==0&&flag3==0&&flag==0)
- {
- LcdWriteCom(0x02);
- delay(5);
- for(i=0; i<13; i++)
- {
- LcdWriteData(Init[i]);
- }
- }
- if(flag3==0)
- {
- LcdWriteCom(0xC0);
- for(i=0;i<6;i++)
- { flag2=1;
- LcdWriteData('0'+MM[i]);
- }
- }
-
- if(flag3==1)
- {
- LcdWriteCom(0x02);
- delay(5);
-
- for(i=0; i<13; i++)
- {
- LcdWriteData(Save[i]);
- }
- flag4=1;
- flag3=2;
- }
- if(flag4!=2&&flag4!=3&&flag==0) {
- LcdWriteCom(0xC0);
- for(i=0;i<6;i++)
- {
- LcdWriteData('0'+MM[i]); //
- } }
- if(flag4==2)
- { LcdInit();
- LcdWriteCom(0x02);
- delay(5);
-
- for(i=0; i<15; i++)
- {
- LcdWriteData(CnCh[i]);
- }
-
- delay(5);
- flag4=3;
- }
- if(flag4==3) //
- { LcdWriteCom(0xC0);
- delay(5);
- for(i=0;i<6;i++)
- {
- LcdWriteData('0'+SMM[i]); //
- }
- }
- /////////////////////////////////////////////////////
- }
- void display()
- {
- uchar n,bb,i,y;
- if(j==6)
- {EA=0;
- for(n=0;n<6;n++)
- {
- bb=0;
- delay(5);
- if(At24c02Read(n)!=SMM[n]&&bb==0)
- {
- y++;
-
- }
- }
-
- if(y==0)
- {
- flag4=4;
- LcdWriteCom(0x01);
- delay(5);
- for(i=0; i<18; i++)
- {
- LcdWriteData(Titl2[i]);
- }
- LcdWriteCom(0xC0);
- for(i=0;i<10;i++)
- {
- LcdWriteData(Titl3[i]);
- }
- KEY1=0;
- KEY2=1;
- for(a=0;a<6;a++)
- {SMM[j]=0;}
- a=0;
-
-
- }
-
-
- if(y>0)
- {
- flag4=4;
- LcdWriteCom(0x01);
- delay(5);
- for(i=0; i<16; i++)
- {
- LcdWriteData(Titl1[i]);
- }
-
- delay(100);
- // flag4=2;
- // LcdWriteCom(0x01);
- for(i=0;i<6;i++)
- {SMM[i]=0;}
- i=0;
- flag6=1;
- j=0;
- y=0;
- }
- j=0;
- }
-
- EA=1;
- comout(1);
- }
- void main()
- {
- LcdInit();
- InitUART();
- while(1)
- {
- if(DOOR==0&&CLOSE==0)
- {display();
- mima();
- LCD_w();
- if(flag4==1&&num=='B')
- {
- EA=0;
- for(i1=0;i1<6;i1++)
- {
- delay(10);
- At24c02Write(i1,MM[i1]);
- delay(5);
- }
- for(a=0;a<6;a++)
- {MM[a]=0;}
- a=0;
- flag=1; //
- if(At24c02Read(5)!=0)
- {LED=0;
- flag1=10;
- flag2=10;
- flag3=10;
- i1=0;
- }
- flag4=2;
- }
- EA=1;
- }
- }
- }
- void UARTInterrupt(void) interrupt 4
- {
- RI=0;
- num=SBUF;
-
- if(num=='A'&&flag1==0&&flag==0)
- {
- i1++;
- num=-1;
- flag1=1;
- }
-
- if(num=='C'&&flag4!=2&&flag4!=3&&flag6==0) //
- {
- i1=0;
- flag3=0;
- flag2=0;
- comout(0);
- }
- if(num=='A'&&flag4==3&&flag5==0&&flag==1)
- {
- j++;
- num=-1;
- // flag1=1;
- flag5=1;
- }
- if(num=='C'&&flag5==0&&flag6==0) //
- {
- j=0;
- // i1=0;
- flag5=1;
- }
- if(num=='C'&&flag6==1) //
- {
-
- for(a=0;a<6;a++)
- {SMM[a]=0;}
- LcdWriteCom(0x02);
- delay(10);
- a=0;
- flag4=2;
- flag6=0;
- }
- if(CLOSE==0&&DOOR==1)
- {
- KEY1=0;
- KEY2=0;
- }
- if(CLOSE==1&&DOOR==1)
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
密碼鎖.zip
(118.04 KB, 下載次數(shù): 47)
2018-1-23 20:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|