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

正文內(nèi)容

基于stc單片機(jī)的非接觸式ic卡讀寫系統(tǒng)畢業(yè)論文(編輯修改稿)

2025-07-24 18:56 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 數(shù)rf_initval()、讀值函數(shù)rf_readval()、增值函數(shù) rf_increment()、減值函數(shù)rf_decrement()、裝載密碼函數(shù)rf_load_key()、終止操作函數(shù)rf_halt()、關(guān)閉串口函數(shù)rf_exit、尋卡函數(shù)rf_card()、蜂鳴函數(shù)rf_beep()。其中當(dāng)函數(shù)調(diào)用成功時(shí)返回0,否則返回值為不等于0的一個(gè)錯(cuò)誤代號(hào)。對(duì)于讀卡器來(lái)說(shuō)讀寫的軟件的設(shè)計(jì)是影響到讀卡器性能的重要部分本次設(shè)計(jì)不光有單片機(jī)的軟件設(shè)計(jì),對(duì)于上位機(jī)客戶端的設(shè)計(jì)也會(huì)直接影響到讀卡器的許多重要的性能,比如讀卡速度,讀卡寫卡的操作。讀卡器讀/寫卡過(guò)程主要由以下幾步組成:復(fù)位應(yīng)答:當(dāng)一張MIFARE卡片處在讀寫器的天線的工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡片發(fā)出REQUEST all 命令??ㄆ腁TR 將啟動(dòng),將卡片Block0中的卡片類型共2個(gè)字節(jié)傳送給讀寫器, 建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行位選擇操作,讀卡器對(duì)卡片的其他操作將不會(huì)進(jìn)行;防重疊操作:有多張卡處在天線的工作范圍之內(nèi)時(shí),RC500將取得每一張卡片的系列號(hào),由于每一張MIFARE卡片都具有其唯一的序列號(hào),決不會(huì)相同,因此MFRC500根據(jù)卡片的序列號(hào)來(lái)保證一次只對(duì)一張卡操作。該操作MFRC500得到MIFARE卡片的返回值和卡片的系列號(hào);選擇卡片操作:選擇被選中卡的系列號(hào),并同時(shí)返回卡的容量代碼;認(rèn)證操作:經(jīng)過(guò)上述3個(gè)步驟, 在確認(rèn)已經(jīng)選擇了一張卡片時(shí),MFRC500 在對(duì)卡進(jìn)行讀寫操作之前,必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,如果匹配,才允許進(jìn)一步的讀寫操作;讀寫操作:在經(jīng)過(guò)上述幾個(gè)步驟之后就可以具體地對(duì)卡片進(jìn)行相應(yīng)的讀、寫、增值、減值、存儲(chǔ)和傳送等操作。對(duì) MF RC500 的控制是通過(guò)設(shè)置和監(jiān)控寄存器的值來(lái)實(shí)現(xiàn)的。硬件復(fù)位階段一些寄存器由硬件預(yù)置。硬件復(fù)位后進(jìn)入初始化階段,將 E2PROM 中塊1和2的內(nèi)容復(fù)制到寄存器102FH中。出廠時(shí)E2PROM中塊1和2已經(jīng)寫入了默認(rèn)值。也可以通過(guò)執(zhí)行LoadConfig命令初始化寄存器102FH,該操作需要E2PROM塊地址3到7中的任意連續(xù)32個(gè)字節(jié)的內(nèi)容作為初始化的數(shù)據(jù)。初始化階段Command寄存器的值為3FH ,初始化結(jié)束后自動(dòng)變?yōu)?0H,此時(shí)MF RC500才可以接收控制。接下來(lái)應(yīng)將80H寫入Page寄存器來(lái)初始化MF RC500的微處理器接口,同時(shí)讀取Command寄存器,若值為00H,則初始化MF RC500的微處理器接口成功。將0X00寫入頁(yè)寄存器可激活線性地址模式。每個(gè)命令(StartUp命令除外)都可被微處理器通過(guò)寫入新命令所中斷。例如,Idle命令將取消當(dāng)前執(zhí)的任何命令。對(duì)于需要數(shù)據(jù)流(或數(shù)據(jù)字節(jié)流)作為輸入的命令,會(huì)立即處理它在 FIFO緩沖區(qū)中發(fā)現(xiàn)的數(shù)據(jù)。對(duì)于需要一定數(shù)目變量的命令,只有當(dāng)它從 FIFO 緩沖區(qū)接收到正確數(shù)目的變量時(shí),才會(huì)啟動(dòng)命令處理。FIFO緩沖區(qū)在命令啟動(dòng)時(shí)不會(huì)自動(dòng)清零,可先將命令變量和數(shù)據(jù)字節(jié)寫入FIFO緩沖區(qū) ,然后再啟動(dòng)相應(yīng)命令。按照讀卡的整個(gè)過(guò)程來(lái)看應(yīng)該把單片機(jī)的整體程序分解成各個(gè)子程序模塊來(lái)進(jìn)行編寫,一方面減少編寫程序的難度,另一方面也使得程序變得簡(jiǎn)單易懂,以及適合后期調(diào)整以及維護(hù)。對(duì)于卡的讀寫需要很顯而易見的分為初始化子程序模塊、卡檢測(cè)子程序模塊、卡校子程序驗(yàn)?zāi)K和讀寫子程序模塊??傮w軟件設(shè)計(jì)框圖如下:開始初始化模塊卡檢測(cè)模塊卡校驗(yàn)?zāi)K讀寫模塊返回圖31 軟件總體設(shè)計(jì)框圖 初始化子程序設(shè)計(jì)在進(jìn)行讀卡之前需要對(duì)MF RC500進(jìn)行初始化操作。初始化就是對(duì)MF RC500的32個(gè)寄存器進(jìn)行設(shè)置。MF RC500在復(fù)位引腳RSTPD腳由高變低的時(shí)候復(fù)位,延時(shí)的長(zhǎng)度由系統(tǒng)晶振頻率決定, MHz。在MFRC500進(jìn)行上電復(fù)位完成以后,我們要對(duì)RC500進(jìn)行各個(gè)設(shè)置寄存器進(jìn)行賦值,來(lái)調(diào)整RC500的工作狀態(tài)。RC500的控制寄存器由8個(gè)地址組成一頁(yè),這樣很方便的單片機(jī)對(duì)其進(jìn)行快速賦值。這些寄存器中絕大部分都是可讀寫的,有一部分的寄存器限度讀寫的功能并相應(yīng)的起到特殊的目的。其中需要通過(guò)初始化來(lái)進(jìn)行調(diào)節(jié)RC500的連接模式。TX1\TX2之間的電導(dǎo)率來(lái)對(duì)天線的輸出功率進(jìn)行調(diào)整。TX1\TX2邏輯狀態(tài)的調(diào)整,輸出脈沖的寬度,發(fā)送器和接收器時(shí)鐘之間的相位關(guān)系;解碼器的閥值,RF信道上數(shù)據(jù)完整性檢測(cè)的類型以及模式。內(nèi)部時(shí)鐘定時(shí)器的設(shè)置控制。以及發(fā)送器和接收器的編碼發(fā)送。初始化子程序的結(jié)構(gòu)框圖如下:開始RC500片選引腳初始化結(jié)束給RC500復(fù)位引腳低電平延時(shí)給RC500復(fù)位引腳高電平延時(shí)給RC500復(fù)位引腳高電平RC500寄存器初始化圖32 初始化模塊設(shè)計(jì)圖 卡片檢測(cè)子程序設(shè)計(jì)在初始化進(jìn)行完成后就可以在上位機(jī)的程序控制下對(duì)射頻IC進(jìn)行讀寫操作了,在整個(gè)讀寫過(guò)程中必不可少的需要進(jìn)行卡片檢測(cè),來(lái)確定卡片存在以及在多卡并存的情況下進(jìn)行卡片的選擇。首先進(jìn)行卡片的檢測(cè),發(fā)送一個(gè)請(qǐng)求命令等待感應(yīng)區(qū)內(nèi)的卡的信息回饋。發(fā)送請(qǐng)求命令過(guò)程為ISO/IEC 14443 TYPE A通信協(xié)議中的REQA命令。借助RC500的TRANSCEIVE命令將REQA 命令發(fā)送至IC卡,并接收返回的數(shù)據(jù)。發(fā)送請(qǐng)求命令的作用就是搜尋有無(wú)IC卡靠近,跟據(jù)返回得數(shù)據(jù)判斷有無(wú)需要與之通信的IC卡。請(qǐng)求模式有Request all和Request std兩種。Request all指令是非連續(xù)性的讀卡指令,只讀一次。但有個(gè)例外,當(dāng)某一次 Request all指令讀卡片失敗時(shí),例如,卡片沒(méi)能通過(guò)密碼認(rèn)證或其它原因而出錯(cuò)時(shí),Request all指令將連續(xù)地讀卡,直到讀卡成功才進(jìn)入非連續(xù)性的讀卡模式。Request std指令的使用和Request all指令剛巧相反。Request std指令是連續(xù)性的讀卡指令。當(dāng)某一張卡片在天線的有效的工作范圍(距離)內(nèi),Request std指令在成功地讀取這一張卡片之后,進(jìn)入對(duì)卡片的其它操作。如果其它操作完成之后,程序員又將程序進(jìn)入Request std指令操作,則Request std指令將連續(xù)地再次進(jìn)行讀卡操作,而不管這些片卡是否被拿卡。只要有一張卡片進(jìn)入天線的有效的工作范圍內(nèi),Request std指令將始終連續(xù)地再次進(jìn)行讀卡操作。對(duì)于Mifare 1卡,該函數(shù)反回值為0004H。MFRC500的某一指令操作不是簡(jiǎn)單的一條指令所能完成的,必須有一個(gè)程序的序列來(lái)完成,其中有對(duì)MFRC500硬件內(nèi)核寄存器的讀/寫以及根據(jù)讀出的硬件內(nèi)核寄存器的內(nèi)容進(jìn)行語(yǔ)言軟件上的判斷和設(shè)置。不同的指令將設(shè)置不同的MFRC500內(nèi)部寄存器以及應(yīng)有不同的編程語(yǔ)言程序序列。如果在卡的選擇階段,在天線磁場(chǎng)的有效范圍內(nèi)卡的數(shù)量超過(guò) 1 張,就將產(chǎn)生卡辨識(shí)的沖突問(wèn)題。在曼徹斯特編碼中數(shù)位1可表示為10,數(shù)位0 可表示為01,數(shù)位1和數(shù)位0沖突的結(jié)果可表示為11,11是非法編碼,故極易判斷位沖突的出現(xiàn)位置。ISO/IEC 14443協(xié)議規(guī)定了Type A的防沖突過(guò)程,采用位結(jié)構(gòu)防沖突循環(huán),并有專門的防沖突指令讀卡器發(fā)出選卡命令,所有有效卡同時(shí)返回各自完整的卡序列號(hào)。如果沖突出現(xiàn),讀卡器確定發(fā)生沖突的第一位位置,然后得出沖突時(shí)有效位位數(shù)。沖突位置必然有一個(gè)卡對(duì)應(yīng)位為“1” ,然后讀卡器改變發(fā)送的有效位位數(shù),重新發(fā)出選卡命令。則原來(lái)沖突位的值為“0”的卡將不予響應(yīng),只有原來(lái)沖突位的值為“1”的卡發(fā)出響應(yīng),并返回卡序列號(hào)的剩余部分。如果仍有沖突出現(xiàn),重復(fù)以上步驟,直到?jīng)]有沖突出現(xiàn)(最大循環(huán)次數(shù)為32)。然后讀卡器發(fā)送有效位個(gè)數(shù)的代碼“70H”,同這序列號(hào)匹配的卡返回認(rèn)可命令,同時(shí)進(jìn)入激活狀態(tài),之后讀卡器就可以對(duì)卡進(jìn)行讀寫操作。在讀卡器接收到IC卡返回?cái)?shù)據(jù)以后對(duì)卡進(jìn)行選取,在多卡的情況下,其過(guò)程為ISO/IEC14443 TYPE A協(xié)議中的ANTICOLLION命令。MF RC500將ANTICOLLION命令發(fā)送給IC卡后,將自動(dòng)完成防沖突過(guò)程。此段程序執(zhí)行完畢后,讀卡器即可正確的接收到一張IC卡的UID(唯一序列號(hào))。選擇卡的過(guò)程即為ISO/IEC14443 TYPE A協(xié)議中的SELECT命令。作用是選擇一張卡。結(jié)構(gòu)框圖如下:開始置待發(fā)送請(qǐng)求命令發(fā)送TRANSCEIVE命令接收IC卡的返回?cái)?shù)據(jù)置待發(fā)送的ANTICOLLISON命令發(fā)送TRANSCEIVE命令結(jié)束發(fā)送TRANSCEIVE命令接收IC卡的返回SAK和UID置待發(fā)送的選擇命令接收IC卡的返回SAK圖33 卡片檢測(cè)子程序流程圖 卡片校驗(yàn)子程序設(shè)計(jì)在完成卡片識(shí)別與選擇的任務(wù)之后便可對(duì)卡的區(qū)域進(jìn)行解密,對(duì)于Mifare 1卡來(lái)說(shuō)要對(duì)某扇區(qū)進(jìn)行操作首先要進(jìn)行卡的三重認(rèn)證。三重認(rèn)證就是讀卡器對(duì)IC卡的密碼認(rèn)證。認(rèn)證步驟:由IC卡向讀卡器發(fā)送一個(gè)隨機(jī)數(shù)據(jù)RB。讀卡器收到RB后,向IC卡發(fā)送一個(gè)令牌數(shù)據(jù)TOKEN AB,其中包含了讀卡器發(fā)出的一個(gè)隨機(jī)數(shù)據(jù)RA。IC卡收到TOKEN AB后,對(duì)TOKEN AB的加密部分進(jìn)行解密,并校驗(yàn)第一次由步驟1中IC卡發(fā)出的隨機(jī)數(shù)RB是否與上一個(gè)步驟中接收到的TOKEN AB中的RB相一致。如果上一步驟中校驗(yàn)結(jié)果正確,則IC卡向讀卡器發(fā)送令牌TOKEN BA給讀卡器。讀卡器收到令牌TOKEN BA 后,將對(duì)令牌TOKEN BA中的RB進(jìn)行解密;并校驗(yàn)由開始步驟中讀卡器發(fā)出的隨機(jī)數(shù)RA是否與上一個(gè)步驟中接收到的TOKEN BA中的RA相一致。如果上述的每一個(gè)步驟都能正確通過(guò)驗(yàn)證,則整個(gè)認(rèn)證過(guò)程將成功,讀寫器將能對(duì)剛通過(guò)認(rèn)證的這一分區(qū)進(jìn)行下一步的操作。反之,如果認(rèn)證過(guò)程中的任何一個(gè)環(huán)節(jié)出錯(cuò),則整個(gè)認(rèn)證過(guò)程終止,認(rèn)證過(guò)程必須重新開始。MF RC500 認(rèn)證程序步驟是固定的, 即采用LoadKeyE2或 LoadKey 命令將密鑰裝入密鑰緩沖區(qū);采用 Authent1 命令,結(jié)束時(shí)檢測(cè)錯(cuò)誤標(biāo)志以獲得該命令執(zhí)行的狀態(tài),若所接收數(shù)據(jù)的最后一位為 000B,表示由 IC 卡讀入的該字節(jié)是正確的; 啟動(dòng)Authent2命令, 結(jié)束時(shí)檢測(cè)錯(cuò)誤標(biāo)志和CryptolOn標(biāo)志位,若 CryptolOn 標(biāo)志位為 1,說(shuō)明認(rèn)證成功;若為 0則認(rèn)證失敗。如果上述的每一個(gè)步驟都能正確通過(guò)驗(yàn)證,則整個(gè)認(rèn)證過(guò)程將成功,讀寫器將能對(duì)剛通過(guò)認(rèn)證的這一分區(qū)進(jìn)行下一步的操作。反之,如果認(rèn)證過(guò)程中的任何一個(gè)環(huán)節(jié)出錯(cuò),則整個(gè)認(rèn)證過(guò)程終止,認(rèn)證過(guò)程必須重新開始。MF RC500 認(rèn)證程序步驟是固定的, 即采用LoadKeyE2或 LoadKey 命令將密鑰裝入密鑰緩沖區(qū);采用 Authent1 命令,結(jié)束時(shí)檢測(cè)錯(cuò)誤標(biāo)志以獲得該命令執(zhí)行的狀態(tài),若所接收數(shù)據(jù)的最后一位為 000B,表示由 IC 卡讀入的該字節(jié)是正確的; 啟動(dòng)Authent2命令, 結(jié)束時(shí)檢測(cè)錯(cuò)誤標(biāo)志和CryptolOn標(biāo)志位,若 CryptolOn 標(biāo)志位為 1,說(shuō)明認(rèn)證成功;若為 0則認(rèn)證失敗。由上面的流程可以看出,在讀卡器對(duì)射頻卡進(jìn)行認(rèn)證的同時(shí),IC卡也對(duì)讀卡器進(jìn)行認(rèn)證,這樣大大的加深了整個(gè)讀寫卡系統(tǒng)對(duì)信息的保密程度,一方面對(duì)卡的認(rèn)證保證卡內(nèi)讀卡器不會(huì)被未授權(quán)的讀卡器讀取卡上的內(nèi)容,另一方面卡一對(duì)讀卡器進(jìn)行認(rèn)證,以免不同的發(fā)卡機(jī)構(gòu)之間的發(fā)卡沖突,讀取非自己機(jī)構(gòu)的卡片信息,對(duì)自己的信息庫(kù)造成影響。同時(shí)對(duì)于假卡與一些非法操作的讀卡器對(duì)卡的影響。在智能卡讀寫器系統(tǒng)的設(shè)計(jì)中必需考慮利用特殊的算法來(lái)實(shí)現(xiàn)對(duì)所設(shè)計(jì)系統(tǒng)的相關(guān)數(shù)據(jù)進(jìn)行加密。以盡可能地保證系統(tǒng)的安全性,這就需要把相應(yīng)的加密方式或算法引入系統(tǒng)設(shè)計(jì)中,卡的認(rèn)證主要為了防范惡意的數(shù)據(jù)操作。比如:復(fù)制或改變數(shù)據(jù),未經(jīng)授權(quán)地讀出數(shù)據(jù)載體。將外來(lái)的數(shù)據(jù)載體置入某個(gè)閱讀器的詢問(wèn)范圍內(nèi),企圖得到非授權(quán)的出入建筑物或不付費(fèi)的服務(wù)。了假冒真正的數(shù)據(jù)載體,竊聽無(wú)線電通信并重放數(shù)據(jù)(重放和欺詐)。卡認(rèn)證的子程序流程圖如下:YNNY開始密鑰預(yù)處理置代發(fā)的LOADKEY命令發(fā)送TRANSCIEVE命令置AUTHENT1命令置AUTHENT2命令發(fā)送TRANSCIEVE命令認(rèn)證成功結(jié)束認(rèn)證失敗接收數(shù)據(jù)后一位是否為000B標(biāo)志位是否為1圖34 卡片認(rèn)證子程序流程圖IC卡的存儲(chǔ)結(jié)構(gòu)如下:共有64塊,按塊號(hào)編碼地址為0~63。第0個(gè)扇區(qū)的塊0(即絕對(duì)地址0塊)用于存放廠商代碼,已經(jīng)固化,不可更改。其他各扇區(qū)的塊0、塊塊2為數(shù)據(jù)塊,用于存儲(chǔ)數(shù)據(jù);而塊3為控制塊,存放密碼A、存取控制、密碼B、其結(jié)構(gòu)如下。A0A1A2A3A4A5 FF078069 B0B1B2B3B4B5:密碼A(6字節(jié))存取控制(4字節(jié))密碼B(6字節(jié))。讀數(shù)據(jù)塊的操作:讀(Read)讀一個(gè)塊;寫(Write)寫一個(gè)塊;加(Increment)對(duì)數(shù)值塊進(jìn)行加值;減(Decrement)對(duì)數(shù)值塊進(jìn)行減值;存儲(chǔ)(Restore)將塊中的內(nèi)容存到數(shù)據(jù)寄存器中;傳輸(Transfer)將數(shù)據(jù)寄存器中的內(nèi)容寫入塊中;中止(Halt)將卡置于暫停工作狀態(tài)在完成一張卡的操作后,應(yīng)該中止(Halt)掉該卡 如果在工作范圍區(qū)內(nèi)有多張卡,按照上面卡操作的流程,操作完一號(hào)卡后,中止(Halt)掉該卡,然后再?gòu)?fù)位應(yīng)答(Request)就可以獲得工作范圍內(nèi)二號(hào)卡的響應(yīng),操作完二號(hào)卡后,在中止(Halt)掉依次循環(huán)直到所有工作范圍內(nèi)的卡均操作完成,復(fù)位應(yīng)答(Request)后繼續(xù)沒(méi)有獲得卡的響應(yīng)。開始開始置待讀IC卡的地址置待寫入IC卡的16B置待讀IC卡地址結(jié)束置待發(fā)送數(shù)據(jù)發(fā)送TRANSCIEVE命令發(fā)送TRANSCIEVE命令接收IC卡發(fā)回的16B數(shù)據(jù)結(jié)束圖35 卡片讀寫子程序,:一種是利用windows的API函數(shù);另一種是采用VB的通訊控件MSComm。利用API函數(shù)編寫串行通訊程序較為復(fù)雜,需要調(diào)用許多繁瑣的API函數(shù),而
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1