![指紋識別模塊程序及原理圖_第1頁](http://file4.renrendoc.com/view/29d2f5d125f02e66f48c62db45dbe739/29d2f5d125f02e66f48c62db45dbe7391.gif)
![指紋識別模塊程序及原理圖_第2頁](http://file4.renrendoc.com/view/29d2f5d125f02e66f48c62db45dbe739/29d2f5d125f02e66f48c62db45dbe7392.gif)
![指紋識別模塊程序及原理圖_第3頁](http://file4.renrendoc.com/view/29d2f5d125f02e66f48c62db45dbe739/29d2f5d125f02e66f48c62db45dbe7393.gif)
![指紋識別模塊程序及原理圖_第4頁](http://file4.renrendoc.com/view/29d2f5d125f02e66f48c62db45dbe739/29d2f5d125f02e66f48c62db45dbe7394.gif)
![指紋識別模塊程序及原理圖_第5頁](http://file4.renrendoc.com/view/29d2f5d125f02e66f48c62db45dbe739/29d2f5d125f02e66f48c62db45dbe7395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineDbusP0#definebuffer1ID0x01#definebuffer2ID0x02#definequeren0x88#definetuichu0x84#defineshanchu0x82sbitB0=B^0;sbitB7=B^7;sbitjidianqi=P3^6;sbitRS=P2^2;sbitRW=P2^1;sbitE1=P2^0;sbitLEDK=P3^4; //控制背光sbitSCLK=P2^3;sbitIO=P2^5;sbitRST=P2^4;ucharcodeta[8]={0x00,0x51,0x09,0x10,0x05,0x02,0x11,0xbe};uchardataa[7]; //秒分時(shí)日月星期年uchardz[4]; //存鍵輸入值ucharmima[7];ucharmimaID[6]={1,2,3,4,5,6};uchardataK;uchardataKey;uintPageID;uchardataquerenma;ucharsum[2];intsummaf,summas;ucharcodenian[]={"年"};ucharcodeyue[]={"月"};ucharcoderi[]={"日"};ucharcodexinqi[]={"星期"};ucharcodemao=0x3a;unsignedcharcodetext1[]={"請按指紋"};unsignedcharcodetext2[]={"請?jiān)俅伟粗讣y"};unsignedcharcodetext3[]={"指紋采集成功"};unsignedcharcodetext4[]={"請按任意鍵繼續(xù)"};unsignedcharcodetext5[]={"指紋采集失敗"};unsignedcharcodetext6[]={"輸入刪去的指紋號"};unsignedcharcodetext7[]={"刪指紋號成功"};unsignedcharcodetext8[]={"按鍵一:增加指紋"};unsignedcharcodetext9[]={"按鍵二:刪去指紋"};unsignedcharcodetext10[]={"請重新按指紋"};unsignedcharcodetext11[]={"清空指紋庫成功"}; unsignedcharcodetext12[]={"沒搜索到指紋"}; unsignedcharcodetext13[]={"請先按鍵再刷指紋"};unsignedcharcodetext14[]={"請重新操作"}; unsignedcharcodetext15[]={"刪去失敗"}; unsignedcharcodetext16[]={"接收包出錯(cuò)"}; unsignedcharcodetext17[]={"編號為:"};unsignedcharcodetext18[]={"指紋已找到請進(jìn)"};unsignedcharcodetext19[]={"該指紋已存儲"}; unsignedcharcodetext20[]={"請輸入密碼"}; unsignedcharcodetext21[]={"密碼錯(cuò)誤"};unsignedcharcodetext22[]={"按鍵三:更新密碼"}; //@@@unsignedcharcodetext23[]={"請?jiān)俅屋斎朊艽a"};unsignedcharcodetext24[]={"兩次輸入的密碼不"};unsignedcharcodetext25[]={"一致,請重新操作"};unsignedcharcodetext26[]={"密碼更新成功"};另外:voiddelay(uinttt){uchari;while(tt--){for(i=0;i<125;i++);}}voidinitialize51(){SCON=0x50;//串口方式1 //REN=1;允許接收PCON=0x80;//SMOD=1TMOD=0x20;//定時(shí)器1定時(shí)方式2TH1=0xff;//11.0592MHz模塊默認(rèn)波特率為57600bpsTL1=0xff; TR1=1;//啟動定時(shí)器}unsignedcharKeycan(void)//按鍵掃描程序P1.0--P1.3為行線P1.4--P1.7為列線{unsignedcharrcode,ccode;P1=0xF0;//發(fā)全0行掃描碼,列線輸入if((P1&0xF0)!=0xF0)//若有鍵按下{delay(1);//延時(shí)去抖動if((P1&0xF0)!=0xF0){rcode=0xFE;//逐行掃描初值while((rcode&0x10)!=0){P1=rcode;//輸出行掃描碼if((P1&0xF0)!=0xF0)//本行有鍵按下{ccode=(P1&0xF0)|0x0F;//do{;} while((P1&0xF0)!=0xF0);//等待鍵釋放return((~rcode)+(~ccode));//返回鍵編碼}elsercode=(rcode<<1)|0x01;//行掃描碼左移一位}}}return0;//無鍵按下,返回值為0}voidKeyDeal(unsignedcharKey){//unsignedcharn;if(Key!=0){ switch(Key) { case0x11:K=1;break; case0x21:K=2;break; case0x41:K=3;break; case0x81:break;//K=funguanliyuan; case0x12:K=4;break; case0x22:K=5;break; case0x42:K=6;break; case0x82:K=34;break; //K=funshanchu; case0x14:K=7;break; case0x24:K=8;break; case0x44:K=9;break; case0x84:break; //K=funtuichu; case0x18:break; //K=shuazhiwen case0x28:K=0;break; case0x48:break; case0x88:break; //K=funqueren; default:break; }}}//*************************************//12864//讀12864忙voidReadBusy(void){ unsignedcharch; cheak:Dbus=0xff; RS=0; RW=1; E1=1; ch=Dbus; E1=0; ch=ch|0x7f; if(ch!=0x7f) gotocheak;}//向LCD寫命令voidWriteCommand(ucharcommand){ ReadBusy(); RW=0; Dbus=command; E1=1; E1=0;}//向LCD寫數(shù)據(jù)voidWriteData(ucharLcd_data){ ReadBusy(); RS=1; RW=0; Dbus=Lcd_data; E1=1; E1=0;}//清屏函數(shù)清DDRAMvoidClrram(void){WriteCommand(0x01);}//LCD12864初始化程序voidLcd_int(){ WriteCommand(0x30); //30基本指令動作 WriteCommand(0x0c); //開顯示,關(guān)游標(biāo) WriteCommand(0x01); //清屏,地址指針指向00H WriteCommand(0x02);}//LCD12864顯示時(shí)間voidplaytime(){ uchari,n3,n4,y1,y2,r1,r2,s1,s2,f1,f2,m1,m2; WriteCommand(0x80); //指定第一行顯示位置 for(i=0;i<16;i++) WriteData(text13[i]);//顯示LCD12864并行顯示 n3=a[6]>>4;n4=a[6]&0x0f; WriteCommand(0x90); //指定第二行顯示位置 WriteData(0x32);WriteData(0x30);WriteData(0x30+n3);WriteData(0x30+n4); for(i=0;i<2;i++)WriteData(nian[i]); y1=a[4]>>4;y2=a[4]&0x0f; WriteData(0x30+y1);WriteData(0x30+y2); for(i=0;i<2;i++)WriteData(yue[i]); r1=a[3]>>4;r2=a[3]&0x0f; WriteData(0x30+r1);WriteData(0x30+r2); for(i=0;i<2;i++)WriteData(ri[i]); WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<4;i++)WriteData(xinqi[i]); WriteData(a[5]+0x30); s1=a[2]>>4;s2=a[2]&0x0f;f1=a[1]>>4;f2=a[1]&0x0f;m1=a[0]>>4;m2=a[0]&0x0f; WriteCommand(0x98); //指定第四行顯示位置 WriteData(0x30+s1);WriteData(0x30+s2);WriteData(mao);WriteData(0x30+f1);WriteData(0x30+f2); WriteData(mao);WriteData(0x30+m1);WriteData(0x30+m2);}//*************************************//12864//*********************************//ds1302控制 ucharr1302() //讀數(shù)據(jù)ds1302{ uchari; for(i=0;i<8;i++) { B>>=1; B7=IO; SCLK=1; SCLK=0; } returnB;}voidw1302(ucharco) //寫ds1302單字節(jié){uchari; B=co; for(i=0;i<8;i++){IO=B0; //原來是使用ACC寄存器,但不行,后改使用B寄存器后才正常運(yùn)行??? SCLK=1; SCLK=0; B>>=1; }}voidw(uchara,uchard) //尋址,寫數(shù){RST=0;SCLK=0;RST=1;w1302(a);w1302(d);SCLK=1;RST=0;}ucharr(uchara) //尋址,讀數(shù){ucharr;RST=0;SCLK=0;RST=1;w1302(a);r=r1302();SCLK=1;RST=0; returnr;}voidwclo(uchar*p) //寫多字節(jié)ds1302{ uchari;w(0x8e,0x00); //寫允許RST=0;SCLK=0;RST=1; w1302(0xbe); //寫多字節(jié)命令 for(i=0;i<8;i++) w1302(*(p+i)); //寫時(shí)鐘數(shù)據(jù) w(0x00,0x50); //???啟動定時(shí)器 SCLK=1; RST=0;}voidrclo(uchar*p) //讀出多字節(jié)ds1302{uchari;RST=0;SCLK=0;RST=1;w1302(0xbf);for(i=0;i<7;i++)*(p+i)=r1302(); //讀出時(shí)鐘數(shù)據(jù) SCLK=1; RST=0;}//***************************************//voidSFG_getimage() //錄入指紋圖像{uchari;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]; }voidSFG_genchar(ucharbufferID)//生成特征并存于charbuffer1/2調(diào)用后單片機(jī)波特率變化@@@{uchari;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]; }voidSFG_regmodel() //合并生成模板{uchari;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=0X05;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x09;SBUF=summaf; //校驗(yàn)和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]; }voidSFG_storechar(uintpageID) //儲存模板 ID=1010也儲存成功ID>=1011querenma=0x18?@@@{uchari,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=0X06;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8;SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;summaf=0x0e+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]; }voidSFG_empty() //清空指紋庫{uchari;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=0X0d;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x11;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]; }voidSFG_fastsearch(ucharbufferID)//搜索指紋返回指紋ID號sum、pagenum>255都會使程序卡@@@{uchari,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=0;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=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;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=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0]; //PageID=ID1;PageID=(ID1<<8)+ID2;}voidSFG_enroll() //自動注冊模板返回存儲ID=錄圖像+合并生成模板+儲存模板{uchari,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=0X03;while(TI==0);TI=0;SBUF=0X10;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x14;SBUF=summaf; //校驗(yàn)和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;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0]; //PageID=ID1;PageID=(ID1<<8)+ID2;}voidSFG_deletchar(uintpageID)//刪除指紋 校驗(yàn)和在2字節(jié)的頁碼處應(yīng)分高低字節(jié)相加{uchari,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=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]; }voidSFG_writereg(ucharN) //設(shè)置波特率{uchari;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=0X05;while(TI==0);TI=0;SBUF=0X0e;while(TI==0);TI=0;SBUF=4;while(TI==0);TI=0;SBUF=N;while(TI==0);TI=0;summaf=0x1a;sum[0]=summaf;sum[1]=0;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]; }voidSFG_identify() //自動驗(yàn)證指紋錄圖像+生成特征+搜索{uchari,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=0X03;while(TI==0);TI=0;SBUF=0X11;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x15;SBUF=summaf; //校驗(yàn)和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;}voidshuazhiwen(){uchari,IDs1,IDs2,IDs3; Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text1[i]);//顯示LCD12864并行顯示 請按指紋 //SFG_getimage(); //SFG_genchar(1); //SFG_fastsearch(1);SFG_identify();while(querenma==2)SFG_identify();if(querenma==0){ Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text18[i]);//顯示LCD12864并行顯示 指紋通過門已開 IDs1=PageID/100;IDs2=PageID/10%10;IDs3=PageID%10; WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<10;i++) WriteData(text17[i]);//顯示LCD12864并行顯示 編號為: WriteData(0x30+IDs1);WriteData(0x30+IDs2);WriteData(0x30+IDs3);jidianqi=0; //開門}elseif(querenma==9){ Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text12[i]);//顯示LCD12864并行顯示 沒搜索到指紋}else{ Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text16[i]);//顯示LCD12864并行顯示 接收包出錯(cuò)} WriteCommand(0x98); //指定第四行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0);}voidaddfinger(){uchari,IDa1,IDa2,IDa3;Clrram();WriteCommand(0x90); //指定第二行顯示位置for(i=0;i<16;i++)WriteData(text1[i]);//顯示LCD12864并行顯示請按指紋SFG_getimage();while(querenma!=0)SFG_getimage();SFG_genchar(buffer1ID);initialize51();SFG_fastsearch(buffer1ID);while(querenma==1)SFG_fastsearch(buffer1ID);if(querenma==0){Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text19[i]);//顯示LCD12864并行顯示該指紋已存儲 WriteCommand(0x98); //指定第四行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0);}elseif(querenma==9){Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text2[i]);//顯示LCD12864并行顯示請?jiān)俅伟粗讣ySFG_enroll();while(querenma==2)SFG_enroll();Clrram(); if(querenma==0) { IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10; WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text3[i]);//顯示LCD12864并行顯示 指紋采集成功 WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<10;i++) WriteData(text17[i]);//顯示LCD12864并行顯示 編號為:pgaeID WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3); } elseif(querenma!=0) { WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text5[i]);//顯示LCD12864并行顯示 指紋采集失敗WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<16;i++) WriteData(text14[i]);//顯示LCD12864并行顯示 請重新采集 } WriteCommand(0x98); //指定第四行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0);}Clrram();}voiddeletfinger(){uchari,j=0;Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text6[i]);//顯示LCD12864并行顯示 請輸入刪去的指紋號 for(i=0;i<5;i++)dz[i]=0; //不輸入時(shí)會默認(rèn)為000@@@ 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==0) { Clrram(); WriteCommand(0x90); //指定第二行顯示位置 顯示刪除成功 for(i=0;i<16;i++) WriteData(text7[i]);//顯示LCD12864并行顯示 } else { Clrram(); WriteCommand(0x90); //指定第二行顯示位置 顯示刪除失敗 for(i=0;i<16;i++) WriteData(text15[i]);//顯示LCD12864并行顯示 } WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示請按任意鍵繼續(xù) while(Keycan()==0);Clrram();}voidgaimima(){uchari,j,mima1[6],mima2[6];Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text20[i]);//顯示LCD12864并行顯示 請輸入密碼 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(0x88+j); //指定第三行顯示位置 WriteData(0x0f); } ++j; if(j==7) j=6; //@@#yinhuang }//顯示LCD12864并行顯示 if(K==34) //按了刪除鍵 { if(j==0) { WriteCommand(0x88); //指定第三行顯示位置 WriteData(0x20); } else { --j; WriteCommand(0x88+j); //指定第三行顯示位置 WriteData(0x20); } } }Clrram();Clrram(); j=0; WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text23[i]);//顯示LCD12864并行顯示 請?jiān)俅屋斎朊艽a 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(0x88+j); //指定第三行顯示位置 WriteData(0x0f); } ++j; if(j==7) j=6; //@@#yinhuang }//顯示LCD12864并行顯示 if(K==34) //按了刪除鍵 { if(j==0) { WriteCommand(0x88); //指定第三行顯示位置 WriteData(0x20); } else { --j; WriteCommand(0x88+j); //指定第三行顯示位置 WriteData(0x20); } } }Clrram(); 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]; WriteCommand(0x80); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text26[i]);//顯示LCD12864并行顯示 密碼更新成功 WriteCommand(0x88); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0); } else { WriteCommand(0x80); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text24[i]);//顯示LCD12864并行顯示 兩次輸入的密碼不 WriteCommand(0x90); //指定第三行顯示位置 for(i=0;i<16;i++) WriteData(text25[i]);//顯示LCD12864并行顯示 一致,請重新操作 WriteCommand(0x88); //指定第四行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0); } Clrram();}voidguanliyuan(){uchari,j;Clrram(); WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text20[i]);//顯示LCD12864并行顯示 請輸入密碼 for(i=0;i<6;i++)mima[i]=0; Key=Keycan();while(Key!=queren) { Key=Keycan(); KeyDeal(Key); delay(30); if(Key==0)K=10; if((K>=0)&&(K<=9)) { mima[j]=K; if(j<6) { WriteCommand(0x88+j); //指定第三行顯示位置 WriteData(0x0f); } ++j; if(j==7) j=6; //@@#yinhuang }//顯示LCD12864并行顯示 if(K==34) //按了刪除鍵 { if(j==0) { WriteCommand(0x88); //指定第三行顯示位置 WriteData(0x20); } else { --j; WriteCommand(0x88+j); //指定第三行顯示位置 WriteData(0x20); } } }Clrram();if((mima[0]==mimaID[0])&&(mima[1]==mimaID[1])&&(mima[2]==mimaID[2])&&(mima[3]==mimaID[3])&&(mima[4]==mimaID[4])&&(mima[5]==mimaID[5])){while(Keycan()!=tuichu){ WriteCommand(0x90); //指定第二行顯示位置 按鍵1:增加指紋 for(i=0;i<16;i++) WriteData(text8[i]);//顯示LCD12864并行顯示 WriteCommand(0x88); //指定第三行顯示位置 按鍵2:刪除指紋 for(i=0;i<16;i++) WriteData(text9[i]);//顯示LCD12864并行顯示 WriteCommand(0x98); //指定第三行顯示位置 按鍵3:改密碼 for(i=0;i<16;i++) WriteData(text22[i]);//顯示LCD12864并行顯示KeyDeal(Keycan()); switch(K) { case1:addfinger();K=6;break; case2:deletfinger();break; case3:gaimima();break; default:break; }}}else{ WriteCommand(0x90); //指定第二行顯示位置 for(i=0;i<16;i++) WriteData(text21[i]);//顯示LCD12864并行顯示 密碼錯(cuò)誤 WriteCommand(0x88); //指定第三行顯示位置 for(i=0;i<16;i++) WriteData(text4[i]);//顯示LCD12864并行顯示 請按任意鍵繼續(xù) while(Keycan()==0);}Key=0;}voidmain(){initialize51(); LEDK=0;Lcd_int(); Clrram(); wclo(ta);delay(100);//SFG_empty(); ///@@@@//SFG_deletchar(255);//SFG_storechar(1011);//SFG_fastsearch(1); //WriteCommand(0x90); //指定第二行顯示位置 //WriteData(0x30+((0xf0&querenma)>>4));WriteData(0x30+(0x0f&querenma));while(1){Key=Keycan();if(Key==0x18) //指紋刷機(jī){ Clrram(); shuazhiwen(); Clrram();}if(Key==0x81) //管理員操作{ Clrram(); guanliyuan();Clrram();}rclo(a); playtime();delay(100);jidianqi=1;}}附錄資料:不需要的可以自行刪除電腦基本知識電腦基本知識電腦的配置,主要看CPU、顯卡、主板、內(nèi)存、硬盤、顯示器等,而筆記本的話就看它的品牌就行了。國外的有HP、apple、松下、東芝等,不過顧客口碑和質(zhì)量比較硬的是DELL和HP這兩個(gè)品牌;國產(chǎn)的有:宏基、清華紫光、清華同方、神州、海爾、聯(lián)想、八億時(shí)空等。
一、評價(jià)標(biāo)準(zhǔn)
1、CPU,這個(gè)主要取決于頻率和二級緩存,頻越高、二級緩存越大,速度越快,未來CPU會有三級緩存、四級緩存等,都影響響應(yīng)速度。
2、內(nèi)存,內(nèi)存的存取速度取決于接口、顆粒數(shù)量多少與儲存大小(包括內(nèi)存的接口,如:SDRAM133,DDR233,DDR2-533,DDR3-800),一般來說,內(nèi)存越大,處理數(shù)據(jù)能力越強(qiáng),速度就越快。
3、主板,主要還是處理芯片,如:筆記本i965比i945芯片處理能力更強(qiáng),i945比i910芯片在處理數(shù)據(jù)的能力又更強(qiáng)些,依此類推。
4、硬盤,硬盤在日常使用中,考慮得少一些,不過也有是有一些影響的,首先,硬盤的轉(zhuǎn)速(分:高速硬盤和低速硬盤,高速硬盤一般用在大型服務(wù)器中,如:10000轉(zhuǎn),15000轉(zhuǎn);低速硬盤用在一般電腦中,包括筆記本電腦),臺式機(jī)電腦一般用7200轉(zhuǎn),筆記本電腦一般用5400轉(zhuǎn),這主要是考慮功耗和散熱原因。
硬盤速度又因接口不同,速率不同,一般而言,分IDE和SATA(也就是常說的串口)接口,早前的硬盤多是IDE接口,相比之下,存取速度比SATA接口的要慢些。
硬盤也隨著市場的發(fā)展,緩存由以前的2M升到了8M或更大,就像CPU一樣,緩存越大,速度會快些。
5、顯卡:這項(xiàng)對運(yùn)行超大程序軟件的響應(yīng)速度有著直接聯(lián)系,如運(yùn)行CAD2007,3DStudio、3DMAX等圖形軟件。顯卡除了硬件級別上的區(qū)分外,也有“共享顯存”技術(shù)的存在,和一般自帶顯存芯片的不同,就是該“共享顯存”技術(shù),需要從內(nèi)存讀取顯存,以處理相應(yīng)程序的需要?;蛴腥朔Q之為:動態(tài)顯存。這種技術(shù)更多用在筆記本電腦中。
6、電源,這個(gè)只要功率足夠和穩(wěn)定性好,也就OK啦。
7、顯示器:顯示器與主板的接口也一樣有影響,只是人們一般沒有太在乎(請查閱顯示設(shè)備相關(guān)技術(shù)資料)。軟件方面1、操作系統(tǒng):簡單舉個(gè)例子說明一下:電腦的同等配置,運(yùn)行原版Windows98肯定比運(yùn)行原版WindowsXP要快,而原版XP肯定又比運(yùn)行原版的WindowsVista速度要快,這就說明,同等配置情況下,軟件占用的系統(tǒng)資源越大,速度越慢,反之越快。
還有,英文原版的操作系統(tǒng)運(yùn)行英文版程序比運(yùn)行中文版的程序穩(wěn)定性及速度都有是關(guān)系的。所以,這里特別強(qiáng)調(diào)是原版的系統(tǒng),也就是沒有精簡過的系統(tǒng)。同理,精簡過的WindowsXP一般來說,會比原版的XP速度快些,因?yàn)榫喌粢恍┎怀S玫某绦?,占用的系統(tǒng)資源少了,所以速度有明顯提升。
2、軟件(包括硬件)都可以適當(dāng)優(yōu)化,以適合使用者,如:一般辦公文員,配置一般的電腦,裝個(gè)精簡版的XP和精簡版的Office2003就足以應(yīng)付日常使用了。但如果是圖形設(shè)計(jì)人員,就需要專業(yè)的配置,尤其對顯卡的要求,所以,升級軟件:MicrosoftDirectX9.0或以上版本是很有必要的。哪些能軟件查看電腦配置:
1、EVEREST
2、魯大師+優(yōu)化大師
3、硬件快捕
4、cpu-z
5、gpu-z
新版本都支持最新的酷睿i5、酷睿i7等新品
三、詳細(xì)配置
1.CPU
主流桌面級CPU廠商主要有INTEL和AMD兩家。Intel平臺的低端是賽揚(yáng)和奔騰系列,高端是酷睿2(已成功代替酷睿1)09年作為下一代更先進(jìn)的CPUI7也上市了,在此不久后32NM6核心I9也可能于2011年上市。
AMD平臺的低端是閃龍,高端是速龍,皓龍。最常用的是兩者的中低端。INTEL處理器方面,在中高端有e7400,可以搭配頻率更高的DDR2內(nèi)存,這一點(diǎn)是AMD中高端平臺中難以實(shí)現(xiàn)的。AMD64bitSP2500+雖然超值,但缺少了對內(nèi)存雙通道的支持,這一點(diǎn)讓許多玩家感覺不爽。
2.Intel和AMD市面上的主流配置有兩種。一種是Intel配置一種是AMD配置。其主要區(qū)別在于cpu的不同,顧名思義Intel配置的cpu是Intel品牌的,AMD配置的cpu是AMD品牌的。產(chǎn)品的市場定位和性能基本相同。價(jià)格不同,主要性能傾向有所區(qū)別??筛鶕?jù)需要和價(jià)位而定。
3.主板配置
常用的比較好的牌子其實(shí)不止intel,華碩(ASUS)、技嘉(GIGABYTE)、精英(ECS)、微星(MSI)、磐正(EPOX)、雙敏(UNIKA)、映泰(BIOSTAR)、碩泰克(SOLTEK)、捷波(JETWAY)、鉆石(DFI)這些,還有一些二線牌子象斯巴達(dá)克這些也比較好。4.內(nèi)存配置
常用內(nèi)存條有3種型號:一)SDRAM的內(nèi)存金手指(就是插入主板的金色接觸部分)有兩個(gè)防呆缺口,168針腳。SDRAM的中文含義是“隨機(jī)動態(tài)儲存器”。二)DDR的內(nèi)存金手指只有一個(gè)防呆缺口,而且稍微偏向一邊,184針腳。DDR中文含義是“雙倍速率隨機(jī)儲存器”。三)DDR2的內(nèi)存金手指也只有一個(gè)防呆缺口,但是防呆缺口在中間,240針腳。DDR2SDRAM內(nèi)存的金手指有240個(gè)接觸點(diǎn)。
5.內(nèi)存條
2009年最新的內(nèi)存已經(jīng)升級到DDR3代,DDR3內(nèi)存向DDR2內(nèi)存兼容,同樣采用了240針腳,DDR3是8bit預(yù)取設(shè)計(jì),而DDR2為4bit預(yù)取,這樣DRAM內(nèi)核的頻率只有接口頻率的1/8,DDR3-800的核心工作頻率只有100MHz。主流DDR3的工作頻率是1333MHz。在面向64位構(gòu)架的DDR3顯然在頻率和速度上擁有更多的優(yōu)勢,此外,由于DDR3所采用的根據(jù)溫度自動自刷新、局部自刷新等其它一些功能,在功耗方面DDR3也要出色得多。一線內(nèi)存品牌廠家均推出了自己的DDR3內(nèi)存,如金士頓、宇瞻、威剛、海盜船、金邦等。在價(jià)格上,DDR3的內(nèi)存僅比DDR2高出幾十塊,在內(nèi)存的發(fā)展道路上,DDR3內(nèi)存的前途無限。
6.硬盤配置
硬盤按接口來分:PATA這是早先的硬盤接口,2009年新生產(chǎn)的臺式機(jī)里基本上看不到了;SATA這是主流的接口也就是平常說的串行接口,市面上的硬盤普遍采用這種接口;SATAII這是SATA接口的升級版,市面上這種硬盤有是也有,就是不多,主要就是緩存和傳輸速度的提高;SCSI這是一種在服務(wù)器中采用的硬盤接口,它的特點(diǎn)是轉(zhuǎn)動速度快可以達(dá)到10000轉(zhuǎn),這樣讀寫速度就可以加快而且還支持熱插拔。
7.顯卡配置顯卡作為電腦主機(jī)里的一個(gè)重要組成部分,對于喜歡玩游戲和從事專業(yè)圖形設(shè)計(jì)的人來說顯得非常重要。民用顯卡圖形芯片供應(yīng)商主要包括ATI和nVIDIA兩家。
四、顯卡的基本構(gòu)成
1.GPU
全稱是GraphicProcessingUnit,中文翻譯為"圖形處理器"。NVIDIA公司在發(fā)布GeForce256圖形處理芯片時(shí)首先提出的概念。GPU使顯卡減少了對CPU的依賴,并進(jìn)行部分原本CPU的工作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級數(shù)學(xué)兩位數(shù)加減一位數(shù)題過關(guān)檢測習(xí)題
- 2025年度會計(jì)信息管理系統(tǒng)升級改造合同
- 股權(quán)轉(zhuǎn)讓居間合同范本8
- 銀行承兌匯票貼現(xiàn)合同模板
- 短期采購合同協(xié)議書
- 2025年度酒店前臺職位聘用合同范本
- 2025年度酒庫房租賃與酒類旅游線路開發(fā)合同
- 度戰(zhàn)略合作合同協(xié)議書
- 2025年度農(nóng)民工安全生產(chǎn)責(zé)任合同
- 標(biāo)準(zhǔn)資產(chǎn)收購合同格式
- 長江委水文局2025年校園招聘17人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年湖南韶山干部學(xué)院公開招聘15人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題
- 不可切除肺癌放療聯(lián)合免疫治療專家共識(2024年版)j解讀
- 教科版科學(xué)六年級下冊14《設(shè)計(jì)塔臺模型》課件
- 智研咨詢發(fā)布:2024年中國MVR蒸汽機(jī)械行業(yè)市場全景調(diào)查及投資前景預(yù)測報(bào)告
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對法》及其應(yīng)用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
- 家譜、宗譜頒譜慶典講話
- 青島版小學(xué)科學(xué)三年級下冊《太陽和影子》教學(xué)設(shè)計(jì)
- 電梯質(zhì)量驗(yàn)收記錄表
評論
0/150
提交評論