這是一個基于STC89C52的指紋識別和鍵盤密碼鎖。
里面包括程序,原理圖,pcb圖,原件清單和實物圖。
請多多指教。
0.png (873.83 KB, 下載次數: 148)
下載附件
2018-5-24 01:58 上傳
0.png (259.29 KB, 下載次數: 93)
下載附件
2018-5-24 01:59 上傳
電路原理圖如下:
0.png (104.48 KB, 下載次數: 141)
下載附件
2018-5-24 02:00 上傳
指紋密碼鎖元件清單
1) 9*15萬用板
2) 指紋傳感器
3) 40腳IC座
4) stc89c51單片機
5) 8腳IC座
6) 24c02芯片
7) 12864有字庫液晶
8) 20p插針+6P插針
9) 20p單排母座
10) 矩陣鍵盤
11) 103藍白電位器
12) 2.2k電阻
13) 1k電阻
14) 10k電
15) 10歐姆電阻
16) 9012三極管
17) 3p接線端子
18) 10uf電容
19) 30pf瓷片電容*2
20) 11.0592m晶振
21) 5v松樂繼電器
22) 5MM紅色LED
23) 自鎖開關
24) DC電源插口
25) 導線若干
26) 焊錫若干
27) usb電源線
單片機源程序如下:
- #include <reg52.h>
- #include <intrins.h> //包含頭文件
- #include"24C0x.h" //包含24C02函數
- #include"LCD12864.h" //包含液晶函數
- #define uchar unsigned char
- #define uint unsigned int //宏定義
-
- #define buffer1ID 0x01
- #define buffer2ID 0x02
- #define queren 0x88 //確認
- #define tuichu 0x85 //退出
- #define shanchu 0x82 //刪除
- #define User 1 //用戶
- void fan(); //主界面刷指紋管理員函數
-
- sbit B0=B^0;
- sbit B7=B^7;
- sbit k2=P3^7; //指紋模塊
- sbit jidianqi=P3^6; //繼電器
-
- extern unsigned char times[];
- uchar Member=0,sec;
- uchar code buffer[User][6]=
- {
- {"000000"}
- };
-
-
- uchar dz[4];
- uchar time[4];
- uchar mima[6];
- uchar mimag[6];
- uchar mimaID[6]={1,2,3,4,5,6};
- uchar Address1=20,tempx=20;
- uchar Address2=20;
-
- uchar data K;
- uchar data Key;
-
- uint PageID;
- uchar data querenma=11;
- uchar sum[2];
- int summaf,summas;
- uchar xdata UserPassword[7]={0};//密碼
- uchar xdata DSY_BUFFER[16] ={0};//緩存
- void Red_Init(void);
- //檢測脈沖寬度
- unsigned char check(void);
- unsigned char redchange(unsigned char rednum);
-
- void delayms(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- /********************************************************************
- * 名稱 : Chack(uchar User_Number)
- * 功能 : 單一用戶密碼檢測
- * 輸入 : User_Number
- * 輸出 : 密碼正確與錯誤,錯誤返回0,正確返回1
- ********************************************************************/
- uchar Chack(uchar User_Number)
- {
- uchar flag, i,temp[6],Address;
- Address=User_Number*10;
- for(i=0;i<6;i++)
- {
- temp[i]=x24c02_read(Address);
- delayms(10);
- Address++;
- }
- for(i=0;i<6;i++)
- {
- if(temp[i]==UserPassword[i])
- flag=1;
- else
- flag=0;
- }
- return flag;
- }
- /********************************************************************
- * 名稱 : PassWord_Chack()
- * 功能 : 所有用戶密碼檢測
- * 輸入 : 無
- * 輸出 : 密碼正確與錯誤,錯誤返回0,正確返回1
- ********************************************************************/
- uchar PassWord_Chack()
- {
- uchar i=0;
- while(i<User)
- {
- if(Chack(i)==2)
- {
- Member=i+2;
- return 1;
- }
- i++;
- }
- return 0;
- }
-
- void delay(uint tt)
- { uchar i;
- while(tt--)
- {
- for(i=0;i<125;i++);
- }
- }
- /********************************************************************
- * 名稱 : UART_Init()
- * 功能 : 單片機串口初始化
- * 單片機:晶振11.0592MHz 波特率為9600bps
- * 指紋模塊:波特率為9600bps,
- ********************************************************************/
- void UART_Init()
- {
- SCON= 0x50; //串口方式1 //REN=1; 允許接收
- PCON=0x01; //SMOD=0
- TMOD= 0x01; //定時器1定時方式2
- TH1= 0xFD; //11.0592MHz 模塊默認波特率為9600bps
- TL1= 0xFD;
- TR0= 1; //啟動定時器
- EA=1;
- }
-
- unsigned char Keycan(void) //按鍵掃描程序 P1.0--P1.3為行線 P1.4--P1.7為列線
- {
- unsigned char rcode, ccode;
- P1 = 0xF0; // 發全0行掃描碼,列線輸入
- if((P1&0xF0) != 0xF0) // 若有鍵按下
- {
- delay(1);// 延時去抖動
- if((P1&0xF0) != 0xF0)
- {
- rcode = 0xef; // 逐行掃描初值
- while((rcode&0x10) != 0)
- {
- P1 = rcode; // 輸出行掃描碼
- if((P1&0xF0) != 0xF0) // 本行有鍵按下
- {
- ccode = (P1&0xF0)|0x0F;
- //do{;}
- while((P1&0xF0) != 0xF0); //等待鍵釋放
- return ((~rcode) + (~ccode)); // 返回鍵編碼
- }
- else
- rcode = (rcode<<1)|0x01; // 行掃描碼左移一位
- }
- }
- }
- return 0; // 無鍵按下,返回值為0
- }
-
- void KeyDeal(unsigned char Key)
- { //unsigned char n;
- if(Key!=0)
- {
- switch(Key)
- {
- case 0x12: K=1; break;
- case 0x22: K=2; break;
- case 0x42: K=3; break;
- case 0x82: break;
- case 0x13: K=4; break;
- case 0x23: K=5; break;
- case 0x43: K=6; break;
- case 0x83: K=34;break;
- case 0x14: K=7; break;
- case 0x24: K=8; break;
- case 0x44: K=9; break;
- case 0x84: break;
- case 0x18: break;
- case 0x28: K=0; break;
- case 0x48: K=11; break;
- case 0x88: break;
- default: break;
- }
- }
- }
-
-
-
- //*************************************//
- void SFG_GetEcho() //握手
- {
- uchar i;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X03;
- while(TI==0);
- TI=0;
-
- SBUF=0X53;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- summaf=0x57;
- SBUF=summaf;
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
-
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- }
-
-
- //***************************************//
-
- void SFG_getimage() //錄入指紋圖像
- {
- uchar i;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X03;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- summaf=0x05;
- SBUF=summaf;
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
-
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- }
-
- void SFG_genchar(uchar bufferID) //生成特征并存于charbuffer1/2 調用后單片機波特率變化@@@
- {
- uchar i;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X04;
- while(TI==0);
- TI=0;
-
- SBUF=0X02;
- while(TI==0);
- TI=0;
-
- SBUF=bufferID;
- while(TI==0);
- TI=0;
-
- summaf=0x07+bufferID;
- sum[0]=summaf;
- sum[1]=summaf>>8;
- SBUF=sum[1];
- while(TI==0)
- TI=0;
- SBUF=sum[0];
- while(TI==0)
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- }
- void SFG_fastsearch(uchar bufferID) //搜索指紋返回指紋ID號 sum、pagenum>255都會使程序卡@@@
- {
- uchar i,ID1,ID2;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X08;
- while(TI==0);
- TI=1;
-
- SBUF=0X1b;
- while(TI==0);
- TI=0;
-
- SBUF=bufferID;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=180;
- while(TI==0);
- TI=0;
-
- summaf=9+0x1b+bufferID+180;
- sum[0]=summaf;
- sum[1]=summaf>>8;
- SBUF=sum[1];
- while(TI==0);
- TI=1;
- SBUF=sum[0];
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
-
- while(RI==0);
- RI=0;
- querenma=SBUF;
-
- while(RI==0);
- RI=0;
- ID1=SBUF;
- while(RI==0);
- RI=0;
- ID2=SBUF; //接收到的ID號
- while(RI==0);
- RI=0;
- while(RI==0);
- RI=0;
-
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=1;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- //PageID=ID1;
- PageID=(ID1<<8)+ID2;
- }
-
- void SFG_enroll() //自動注冊模板返回存儲ID =錄圖像+合并生成模板+儲存模板
- {
- uchar i,ID1,ID2;
- SBUF=0xef;
- while(TI==0);
- TI=1;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X03;
- while(TI==0);
- TI=0;
-
- SBUF=0X10;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- summaf=0x14;
- SBUF=summaf; //校驗和
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=1;}
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- ID1=SBUF;
- while(RI==0);
- RI=0;
- ID2=SBUF;
-
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- //PageID=ID1;
- PageID=(ID1<<8)+ID2;
- }
- void SFG_deletchar(uint pageID) //刪除指紋 校驗和在2字節的頁碼處應分高低字節相加
- {
- uchar i,ID1,ID2;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=1;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X07;
- while(TI==0);
- TI=0;
-
- SBUF=0X0c;
- while(TI==0);
- TI=0;
-
- ID1=pageID;ID2=pageID>>8;
- SBUF=ID2;
- while(TI==0);
- TI=0;
- SBUF=ID1;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=1;
- while(TI==0);
- TI=0;
-
- summaf=0x15+ID1+ID2;
- sum[0]=summaf;
- sum[1]=summaf>>8;
- SBUF=sum[1];
- while(TI==0);
- TI=0;
- SBUF=sum[0];
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]<<8)+sum[0];
- }
-
- void SFG_identify() //自動驗證指紋 錄圖像+生成特征+搜索
- {
- uchar i,ID1,ID2;
- SBUF=0xef;
- while(TI==0);
- TI=0;
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=0;
- SBUF=0XFF;
- while(TI==0);
- TI=1;
-
- SBUF=0X01;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- SBUF=0X03;
- while(TI==0);
- TI=0;
-
- SBUF=0X11;
- while(TI==0);
- TI=0;
-
- SBUF=0X00;
- while(TI==0);
- TI=0;
- summaf=0x15;
- SBUF=summaf; //校驗和
- while(TI==0);
- TI=0;
-
- for(i=0;i<9;i++)
- {
- while(RI==0);
- RI=0;}
- while(RI==0);
- RI=0;
- querenma=SBUF;
- while(RI==0);
- RI=0;
- ID1=SBUF;
- while(RI==0);
- RI=0;
- ID2=SBUF;
-
- while(RI==0);
- RI=0;
- while(RI==0);
- RI=0; //得分
-
- while(RI==0);
- RI=0;
- sum[1]=SBUF;
- while(RI==0);
- RI=0;
- sum[0]=SBUF;
- summas=(sum[1]>>8)+sum[0];
- //PageID=ID1;
- PageID=(ID1>>8)+ID2;
- }
- void shuazhiwen()
- {
- uchar IDs1,IDs2,IDs3;
- LcmClearTXT();
- PutStr(1,1,"請按手指開鎖");
- SFG_identify();
- while(querenma==2)
- SFG_identify();
- if(querenma==0)
- {
- LcmClearTXT();
- PutStr(1,2,"門已打開");
- IDs1=PageID/100;
- IDs2=PageID/10%10;
- IDs3=PageID%10;
- PutStr(2,1,"編號為:");
- WriteCommand(0x8D); //指定第三行顯示位置
- WriteData(0x30+IDs1);
- WriteData(0x30+IDs2);
- WriteData(0x30+IDs3);
- jidianqi=0;
- delay(2500);
- jidianqi=1;
- }
- else if(querenma==9)
- {
- LcmClearTXT();
- PutStr(1,1,"沒搜索到指紋");
- PutStr(2,1,"請重新按手指");
- }
- else
- {
- LcmClearTXT();
- PutStr(1,1,"接收包出錯");
- }
- delay(2000);
- // while(Keycan()==0);
- }
- void addfinger()
- {
- uchar IDa1,IDa2,IDa3;
- LcmClearTXT();
- PutStr(1,2,"請按手指");
- SFG_getimage();
- while(querenma!=0)
- SFG_getimage();
- SFG_genchar(buffer1ID);
- UART_Init();
- SFG_fastsearch(buffer1ID);
- while(querenma==1)
- SFG_fastsearch(buffer1ID);
- if(querenma==0)
- {
- LcmClearTXT();
- PutStr(1,1,"該指紋已存儲");
- PutStr(3,0," 按任意鍵繼續");
- while(Keycan()==0);
- }
- else if(querenma==9)
- {
- LcmClearTXT();
- PutStr(1,1,"請再次按手指");
- SFG_enroll();
- while(querenma==2)
- SFG_enroll();
- LcmClearTXT();
- if(querenma==0)
- {
- IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;
- PutStr(1,1,"指紋采集成功");
- PutStr(2,1,"編號為:");
- WriteCommand(0x8D);
- WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);
- }
- else if(querenma!=0)
- {
- PutStr(1,1,"指紋采集失敗");
- PutStr(2,1,"請重新操作");
- }
- PutStr(3,0," 按任意鍵繼續");
- while(Keycan()==0);
- }
- LcmClearTXT();
- }
- void deletfinger()
- {
- uchar i,j=0;
- LcmClearTXT();
- PutStr(1,0,"輸入刪去的指紋號");
- for(i=0;i<5;i++)dz[i]=0;
- Key=Keycan();
- while(Key!=queren)
- {
- Key=Keycan();
- KeyDeal(Key);
- delay(30); //按鍵有抖動@@@
- if(Key==0)K=10;
- if((K>=0)&&(K<=9))
- {
- dz[j]=K;
- if(j<3)
- {
- WriteCommand(0x88+j); //指定第三行顯示位置
- WriteData(0x30+dz[j]);
- }
- ++j;
- if(j==4)
- j=3; //@@#yinhuang
- } //顯示LCD12864并行顯示
- if(K==34) //按了刪除鍵
- {
- if(j==0)
- {
- WriteCommand(0x88); //指定第三行顯示位置
- WriteData(0x20);
- }
- else
- {
- --j;
- WriteCommand(0x88+j); //指定第三行顯示位置
- WriteData(0x20);
- }
- }
- }
- if(j>=2)
- PageID=dz[2]+dz[1]*10+dz[0]*100;
- if(j==1)
- PageID=dz[1]+dz[0]*10;
- if(j==0)
- PageID=dz[0];
- SFG_deletchar(PageID);
- if(querenma==1)
- {
- LcmClearTXT();
- PutStr(1,1,"刪去指紋號成功!");
- }
- else
- {
- LcmClearTXT();
- PutStr(1,2,"刪去指紋號失敗!");
- }
- PutStr(2,0," 按任意鍵繼續");
- while(Keycan()==0);
- LcmClearTXT();
- }
-
- void gaimima()
- {
- uchar i,j=0,mima1[4],mima2[4];
- uchar k,temp;
- LcmClearTXT();
- PutStr(1,1,"請輸入新密碼");
- for(i=0;i<6;i++)mima1[i]=0;
- Key=Keycan();
- while(Key!=queren)
- {
- Key=Keycan();
- KeyDeal(Key);
- delay(30);
- if(Key==0)K=10;
- if((K>=0)&&(K<=9))
- {
- mima1[j]=K;
- if(j<6)
- {
- WriteCommand(0x89+j); //指定第三行顯示位置
- WriteData(0x0f);
- }
- ++j;
- if(j==7)
- j=6; //@@#yinhuang
- } //顯示LCD12864并行顯示
- if(K==34) //按了刪除鍵
- {
- if(j==0)
- {
- WriteCommand(0x89); //指定第三行顯示位置
- WriteData(0x20);
- }
- else
- {
- --j;
- WriteCommand(0x89+j); //指定第三行顯示位置
- WriteData(0x40);
- }
- }
- }
- LcmClearTXT();
- LcmClearTXT();
- j=0;
- PutStr(1,0,"請再次輸入新密碼");
- for(i=0;i<6;i++)mima2[i]=0;
- Key=Keycan();
- while(Key!=queren)
- {
- Key=Keycan();
- KeyDeal(Key);
- delay(30);
- if(Key==0)K=10;
- if((K>=0)&&(K<=9))
- {
- mima2[j]=K;
- if(j<6)
- {
- WriteCommand(0x89+j); //指定第三行顯示位置
- WriteData(0x0f);
- }
- ++j;
- if(j==7)
- j=6; //@@#yinhuang
- } //顯示LCD12864并行顯示
- if(K==34) //按了刪除鍵
- {
- if(j==0)
- {
- WriteCommand(0x89); //指定第三行顯示位置
- WriteData(0x20);
- }
- else
- {
- --j;
- WriteCommand(0x89+j); //指定第三行顯示位置
- WriteData(0x20);
- }
- }
- }
- LcmClearTXT();
- if((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5]))
- {
- for(i=0;i<6;i++)
- mimaID[i]=mima1[i];
- /////////////////////////////////////////////////////
- for(i=0;i<6;i++) //密碼限制在6位以內
- {
- UserPassword[i]=mima1[i]+0x30;
- }
- temp=(Member-1)*100;
- delayms(5);
- for(k=1;k<6;k++)
- {
- x24c02_write(temp,UserPassword[k]);
- delayms(10);
- temp++;
- }
- //////////////////////////////////////////////////////
- PutStr(0,1,"密碼修改成功");
- PutStr(3,0," 按任意鍵繼續");
- while(Keycan()==0);
- }
- else
- {
- PutStr(0,0," 密碼修改失敗 ");
- PutStr(1,0,"兩次輸入的密碼不");
- PutStr(2,0,"一致,請重新操作");
- PutStr(3,0," 按任意鍵繼續");
- while(Keycan()==0);
- }
- LcmClearTXT();
- }
- void zhu()
- {
- LcmClearTXT();
- PutStr(1,2,"門已打開");
- jidianqi=0;
- delay(2500);
- jidianqi=1;
- PutStr(3,0," 按任意鍵繼續");
- while(Keycan()==0);
- }
- void guanliyuan()
- { uchar i,j=0,x=1;
- uchar Right_flag;
- LcmClearTXT();
- PutStr(1,1,"請輸入密碼:");
- for(i=0;i<6;i++)mima[i]=0;
- Key=Keycan();
- while(Key!=queren)
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
請大家多多指教:
程序已經寫得差不多了,還存在一些小問題,大家幫忙一起修改.7z
(3.64 MB, 下載次數: 773)
2021-5-7 20:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|