freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的指紋鍵盤密碼鎖設(shè)計(jì)畢業(yè)論文(已改無錯(cuò)字)

2023-07-21 12:37:52 本頁面
  

【正文】 采用無驅(qū)技術(shù)。具有更簡單、穩(wěn)定和低成本的特點(diǎn)。隨機(jī)提供各種平臺的驅(qū)動開發(fā)包,附帶的演示程序可操作射頻卡的全部功能,并帶有自動測卡操作功能。本設(shè)計(jì)采用MR810 系列非接觸 IC 卡。 MR810 系列非接觸 IC卡讀寫器簡介MR810 系列非接觸 IC 卡讀寫器是基于 NXP 或兼容芯片設(shè)計(jì)的桌面式讀卡器,帶有 8 位 LED 顯示器,能夠顯示 8 位數(shù)字,全面支持 ISO14443 和 ISO15693,能夠讀寫多種符合不同國際標(biāo)準(zhǔn)的 非接觸 IC 卡,尤其對符合 ISO144434 的非接觸 CPU 卡支持完善,全面支持 EMV2000 和 ,能夠通過多個(gè)實(shí)驗(yàn)室的認(rèn)證,如 Visa Wave 和 Pay Pass 的認(rèn)證(由 FIME 實(shí)驗(yàn)室完成)以及 中國銀行卡檢測中心的認(rèn)證;讀卡器內(nèi)置 SAM 卡插槽,對國內(nèi)的一卡通應(yīng)用做了優(yōu)化,支持國 內(nèi)廣泛使用的 9600bps 和 38400bps 的 SAM 卡。 MR810 系列非接觸 IC卡讀寫器技術(shù)指標(biāo)與可讀卡型技術(shù)指標(biāo)如下:1. 讀卡芯片: MF RC500;MF RC531;CL RC632;SL RC400;FM1722(用于支持上 海加密標(biāo)準(zhǔn),非標(biāo)準(zhǔn)品,需定制)2. 工作頻率: 3. 射頻標(biāo)準(zhǔn): ISO14443A,ISO14443B,ISO156934. 讀寫距離: 100mm (Mifare One,典型距離)5. SAM: 2個(gè)插槽,支持 ISO7816 T=0,支持 9600bps 和 38400bps6. 接口: USB PC/SC7. 電源: DC5V 177。 10%8. 工作溫度: 25 ~ +85 ℃9. 儲存溫度: 40 ~ +125 ℃可讀卡型如下1. ISO14443 TYPEA1) Mifare One S502) Mifare One S703) Mifare Plus (全功能支持)4) Mifare One Mini5) Mifare UltraLight6) ISO144434 (T=CL) TYPE A 雙界面 CPU 卡2. ISO14443 TYPEB1) AT88RF020/0802) SRI512/X4K3) ISO144434 (T=CL) TYPE B 雙界面 CPU 卡3. ISO156931) CODE SLI2) Tagit HFI4. SAM1) 符合 ISO7816 的 CPU(SAM)卡,支持 PPSS 操作2) 支持 T=0 和 T=13) 支持默認(rèn)任意速率卡片(9600,19200,38400,55800,57600,115200) 第4章 軟件設(shè)計(jì) 主程序設(shè)計(jì)思路及流程圖主程序采用C語言進(jìn)行編程。主程序設(shè)計(jì)思路如下:首先對指紋識別模塊和IC卡讀卡器進(jìn)行初始化,只要其中一種識別可以通過就可以開啟LCD顯示屏,進(jìn)入到密碼識別部分,否則報(bào)警并鎖死鍵盤。LCD初始化之后調(diào)用鍵盤掃描和鍵碼識別等程序,若是密碼錯(cuò)誤則報(bào)警并鎖鍵盤3秒,報(bào)警超過3次之后鎖死鍵盤。若密碼正確,則判斷是否為重置密碼,若是,則把密碼強(qiáng)行改為初始密碼000000;若不是,則調(diào)用開鎖程序。開鎖成功之后,再次輸入正確密碼即可激發(fā)重置密碼功能,輸入兩次新密碼并確認(rèn)無誤后,調(diào)用密碼修改成功子程序。主程序流程圖如圖41所示。圖41主程序流程圖 LCD顯示子程序的設(shè)計(jì) LCD顯示流程圖LCD顯示程序流程如圖42所示。圖42 LCD顯示程序流程圖 LCD顯示子程序//初始化define two 0x80+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)void lcd_init(void){ write_1602(0x38)。//設(shè)置液晶工作模式,意思:16*2行顯示,5*7點(diǎn)陣,8位數(shù)據(jù) write_1602(0x0c)。//開顯示不顯示光標(biāo) write_1602(0x06)。//整屏不移動,光標(biāo)自動右移 write_1602(0x01)。//清顯示}//寫指令write_1602(uchar )//****液晶寫入指令函數(shù)****{ lcd1602_rs=0。//數(shù)據(jù)/指令選擇置為指令 lcd1602_rw=0。 //讀寫選擇置為寫 P0=。//送入數(shù)據(jù) delay(1)。 lcd1602_en=1。//拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay(1)。 lcd1602_en=0。//en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//寫數(shù)據(jù)write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù)****{ lcd1602_rs=1。//數(shù)據(jù)/指令選擇置為數(shù)據(jù) lcd1602_rw=0。 //讀寫選擇置為寫 P0=dat。//送入數(shù)據(jù) delay(1)。 lcd1602_en=1。 //en置高電平,為制造下降沿做準(zhǔn)備 delay(1)。 lcd1602_en=0。 //en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令}//=====================顯示輸入的數(shù)字,用H代替以便隱藏============================void DisplayOne(void){// DisplayOneChar(9+N,1,39。*39。)。 write_1602(yi+5+N)。 write_1602dat(39。*39。)。}//=======================顯示提示輸入=========================void DisplayChar(void){ unsigned char i。 if(pass==1) { //DisplayListChar(0,1,LockOpen)。 write_1602(two)。 for(i=0。i16。i++) { write_1602dat(LockOpen[i])。 } } else { if(N==0) { //DisplayListChar(0,1,Error)。 write_1602(two)。 for(i=0。i16。i++) { write_1602dat(Error[i])。 } } else { //DisplayListChar(0,1,start_line)。 write_1602(two)。 for(i=0。i16。i++) { write_1602dat(start_line[i])。 } } }}void DisplayInput(void){ unsigned char i。 if(CorrectCont==1) { //DisplayListChar(0,0,Input)。 write_1602(two)。 for(i=0。i16。i++) { write_1602dat(Input[i])。 } }} 鍵盤掃描子程序流程圖鍵盤掃描子程序流程如圖43所示。圖43鍵盤掃描子程序流程圖//==============將按鍵值編碼為數(shù)值=========================unsigned char coding(unsigned char m) { unsigned char k。 switch(m) { case (0x18): k=1。break。 case (0x28): k=2。break。 case (0x48): k=3。break。 case (0x88): k=39。A39。break。 case (0x14): k=4。break。 case (0x24): k=5。break。 case (0x44): k=6。break。 case (0x84): k=39。B39。break。 case (0x12): k=7。break。 case (0x22): k=8。break。 case (0x42): k=9。break。 case (0x82): k=39。C39。break。 case (0x11): k=39。*39。break。 case (0x21): k=0。break。 case (0x41): k=39。39。break。 case (0x81): k=39。D39。break。 } return(k)。}//=====================按鍵檢測并返回按鍵值===============================unsigned char keynum(void){ unsigned char row,col,i。 P1=0xf0。 if((P1amp。0xf0)!=0xf0) { Delay5Ms()。Delay5Ms()。 if((P1amp。0xf0)!=0xf0) { row=P1^0xf0。 //確定行線 i=0。 P1=a[i]。 //精確定位 while(i4) { if((P1amp。0xf0)!=0xf0) { col=~(P1amp。0xff)。 //確定列線 break。 //已定位后提前退出 } else { i++。 P1=a[i]。 } } } else { return 0。 } while((P1amp。0xf0)!=0xf0)。 return (row|col)。 //行線與列線組合后返回 } else return 0。 //無鍵按下時(shí)返回0}//=====================5ms延時(shí)==============================void Delay5Ms(void){ unsigned int TempCyc = 5552。 while(TempCyc)。}//===================400ms延時(shí)==============================void Delay400Ms(void){unsigned char TempCycA = 5。unsigned int TempCycB。while(TempCycA) { TempCycB=7269。while(TempCycB)。 }} AT24C02密碼存儲、讀取子程序設(shè)計(jì)//================================24C02======================================void mDelay(uint t) //延時(shí){ uchar i。 while(t) { for(i=0。i125。i++) {。} }}void Nop(void) //空操作{ _nop_()。 _nop_()。 _nop_()。 _nop_()。}/*起始條件*/void Start(void){ Sda=1。 Scl=1。 Nop()。 Sda=0。 Nop()。} /*停止條件*/void Stop(void){ Sda=0。 Scl=1。 Nop()。 Sda=1。 Nop()。}/*應(yīng)答位*/void Ack(void){ Sda=0。 Nop()。 Scl=1。 Nop()。 Scl=0。}/*反向應(yīng)答位*/void NoAck(void){ Sda=1。 Nop()。 Scl=1。 Nop()。 Scl=0。} /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/void Send(uchar Data){ uchar BitCounter=8。 uchar temp。 do { temp=Data。 Scl=0。 Nop()。 if((tempamp。0x80)==0x80) Sda=1。 else Sda=0。 Scl=1。 temp=Data1。 Data=temp。 BitCounter。 } while(BitCounter)。 Scl=0。}/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/uchar Read(void){uchar temp=0。 uchar temp1=0。 uchar BitCounter=8。 Sda=1。 do{ Scl=0。 Nop()。 Scl=1。 Nop()。 if(Sda) temp=tem
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1