版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 緒論..................................................................2</p><p> 現(xiàn)狀分析..............................................................2</p
2、><p> 射頻卡(IC卡)的識別系統(tǒng)</p><p> 1射頻識別系統(tǒng)的工作原理..................................................4</p><p> 2 S50非接觸式IC卡性能簡介</p><p> ?。?)主要指標...................................
3、.........................5</p><p> (2)結(jié)構(gòu)................................................................6</p><p> ?。?)工作原理............................................................7</p>
4、<p> (4)M1射頻卡與讀卡器的通訊..............................................8</p><p> 射頻讀卡模塊RC522</p><p> RC522簡介...........................................................9</p><p>
5、 RC522引腳圖.........................................................10</p><p> 管腳描述............................................................11</p><p> 芯片相關(guān)功能介紹...............................
6、.....................12</p><p> I*I總線接口.........................................................12</p><p> STC8989C52芯片介紹</p><p> 芯片特點............................................
7、.................13</p><p> 引腳圖...............................................................14</p><p> STC8989C52單片機的相關(guān)引腳介紹.......................................15</p><p> LCD
8、1602芯片...........................................................17</p><p> 軟件部分...............................................................18</p><p> 心得....................................
9、...............................50</p><p> 參考文獻...............................................................50</p><p> 仿真圖.................................................................51&l
10、t;/p><p><b> 一、 緒論</b></p><p> 射頻識別(Radio Frequency Identification,簡稱RFID)技術(shù)是20世紀90年代開始興起的一種天線的,非接觸方式的自動識別技術(shù),是近幾年來發(fā)展的前沿科技項目。該技術(shù)主要是利用無線射頻方式進行非接觸式的通信,實現(xiàn)對被識別物體的自動識別。射頻識別技術(shù)的顯著優(yōu)點在于非接觸性,因此完
11、成識別工作時無需人工干預,能夠?qū)崿F(xiàn)識別自動化且不易損壞;可識別高速運動物體并可同時識別多個射頻標簽,操作快捷方便;射頻標簽不怕油漬、灰塵污染等惡劣的環(huán)境,且可以穿透非金屬物體進行識別,抗干擾能力強。RFID技術(shù)與互聯(lián)網(wǎng)、通訊等技術(shù)相結(jié)合,可實現(xiàn)全球范圍內(nèi)物品跟蹤與信息共享。研究RFID產(chǎn)業(yè)對提升社會信息化水平、促進經(jīng)濟可持續(xù)發(fā)展、提高人民生活質(zhì)量、增強公共安全與國防安全等方面產(chǎn)生深遠影響,具有戰(zhàn)略性的重大意義。</p>&
12、lt;p> 射頻卡又叫非接觸式IC卡,誕生于90年代初,是世界上最近幾年發(fā)展起來的一項新技術(shù),它成功地將射頻識技術(shù)和IC卡技術(shù)結(jié)合起來,解決了無源(卡中無電源)和免接觸這一難題,是電子器件領(lǐng)域 的一大突破。由于存在著磁卡和接觸式IC卡不可比擬的優(yōu)點,使之一經(jīng)問世,便立即引起廣泛的關(guān)注,并以驚人的速度得到推廣應(yīng)用。射頻卡與接觸式IC卡相比較,非接觸式卡具有以下優(yōu)點:可靠性高,操作方便,快速,防沖突〔非接觸式卡中有快速防沖突機制,能
13、防止卡片之間出現(xiàn)數(shù)據(jù)干擾〕,可以適合于多種應(yīng)用加密性能好。</p><p> 隨著社會的不斷向前推移,人們生活水平的不斷提高,也就意味著人們的消費水平也有了很大的提高,商家的收費系統(tǒng)也有很大的改進,應(yīng)用于生活中許多消費控制系統(tǒng)中,如汽車消毒收費系統(tǒng),公交刷卡,售飯收費系統(tǒng),門禁,電梯刷卡系統(tǒng),交通收費,停車收費等。</p><p><b> 二 、現(xiàn)狀分析</b>
14、</p><p> 在國外,美國加州技術(shù)創(chuàng)新博物館正使用射頻卡識別技術(shù)來拓展和增強參觀者的參觀體驗。他們給前來參觀的訪問者每人一個RFID(射頻識別技術(shù))標簽,使其能夠在今后其個人網(wǎng)頁上瀏覽此項展會的相關(guān)信息;這種標簽還可用來確定博物館的參觀者所訪問的目錄列表中的語言類別。該博物館成立于1990年。自成立以來,就成為了硅谷有名又受歡迎的參觀地,并吸引了很多家庭和科技愛好者前來參觀訪問。每年大約能接待40萬參觀者
15、。從參觀者所做出的積極良好的反應(yīng)看來,使用RFID標簽是成功的。在未來的某一天,美國的技術(shù)創(chuàng)新博物館可能會開發(fā)出一種展示品,用來探測RFID技術(shù)對于整個世界的影響,他們正在努力地研究著。</p><p> 國內(nèi),已經(jīng)廣泛應(yīng)用于銀行、電信、交通、公共安全等社會各領(lǐng)域,得到了快速的發(fā)展。國內(nèi)智能卡市場銷售量近12.8億張,同比增長26.8%;銷售額達53.7億元,同比增長15.3%。智能卡市場銷量出現(xiàn)大幅增長的主要
16、原因在于,一是移動通信卡市場的增長拉動了整體市場的增長;二是城市一卡通、居住證、社??ǖ阮I(lǐng)域市場快速發(fā)展,也推動了整體市場的增長。 作為最大應(yīng)用領(lǐng)域的移動通信卡市場在亞太市場快速增長的帶動下實現(xiàn)了銷售量的增長,此外金融服務(wù)領(lǐng)域在全球EMV遷移的拉動下實現(xiàn)了10%以上的增長。在身份識別領(lǐng)域,全球電子護照的發(fā)行及中國居住證制度的實施也保證了該領(lǐng)域的增長空間。整體來看,智能卡的傳統(tǒng)應(yīng)用領(lǐng)域仍左右全球智能卡市場的發(fā)展。 以城市一
17、卡通、社保卡、銀行IC卡為代表的中國智能卡新興應(yīng)用領(lǐng)域發(fā)展勢頭強勁其中城市一卡通目前廣泛應(yīng)用于城市公共交通、高速公路自動收費、智能大廈、各種公共收費、智能小區(qū)物業(yè)管理、考勤門禁管理、校園和廠區(qū)一卡通系統(tǒng)中,這些應(yīng)用中門禁一卡通近年來得到較快的增長。 產(chǎn)品性價比不斷提高近年來,智能卡“一卡多用”漸成市場發(fā)展趨勢,智能卡功能不斷提升。與此同時,</p><p> 三 、射頻卡(IC卡)的識別系統(tǒng)</
18、p><p> 1射頻識別系統(tǒng)的工作原理</p><p> 射頻識別(RFID)系統(tǒng)為無源系統(tǒng),即射頻卡內(nèi)不含電池,射頻卡的能量是由讀寫器發(fā)出的射頻脈沖提供。非接觸式射頻卡系統(tǒng)是基于射頻法的系統(tǒng)。射頻法是運用L-C振蕩回路工作的RFID系統(tǒng)工作過程如下:</p><p> (1)讀寫器在一個區(qū)域內(nèi)發(fā)射能量形成電磁場,區(qū)域大小取決于發(fā)射功率、工作頻率和天線尺寸。<
19、;/p><p> (2)射頻卡進入這個區(qū)域時,接收到讀寫器的射頻脈沖,經(jīng)過橋式整流后給電容充電。電容電壓經(jīng)過穩(wěn)壓后作為工作電壓。</p><p> (3)數(shù)據(jù)解調(diào)部分從接收到的射頻脈沖中解調(diào)出命令和數(shù)據(jù)并送到控制邏輯,控制邏輯接受指令完成存儲、發(fā)送數(shù)據(jù)或其他操作。</p><p> (4)如需要發(fā)送數(shù)據(jù),則將數(shù)據(jù)調(diào)制后從收發(fā)模塊發(fā)送出去。</p>&
20、lt;p> (5)讀寫器接收到返回的數(shù)據(jù)后,解碼并進行錯誤校驗來決定數(shù)據(jù)的有效性,然后進行處理,讀寫器發(fā)送的射頻信號除提供能量外,通常還提供時鐘信號,使數(shù)據(jù)保持同步。</p><p> 2、 芯片:Philips MIFARE 1 S50</p><p> S50非接觸式IC卡性能簡介(M1) </p><p><b> (1)主要指標<
21、;/b></p><p> 容量為8K位EEPROM </p><p> 分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位</p><p> 每個扇區(qū)有獨立的一組密碼及訪問控制</p><p> 每張卡有唯一序列號,為32位</p><p> 具有防沖突機制,支持多卡操作</p>
22、;<p> 無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路</p><p> 數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次</p><p> 工作溫度:-20℃~50℃(濕度為90%) </p><p> 工作頻率:13.56MHZ </p><p> 通信速率:106 KBPS </p><p&
23、gt; 讀寫距離:10 cm以內(nèi)(與讀寫器有關(guān)) </p><p><b> (2) 結(jié)構(gòu)</b></p><p> M1卡片的存儲容量為8192 bit X 1位字長(即1KX8位字長),采用EEPROM作為存儲介質(zhì),整個結(jié)構(gòu)劃分為16個扇區(qū),編為扇區(qū)0—15。每個扇區(qū)有4個塊(Block),分別為塊0,塊1,塊2和塊3。每個塊有16個字節(jié)。一個扇區(qū)共有16
24、Byte X4=64 Byte。每個扇區(qū)的塊3(即第四塊)包含了該扇區(qū)的密碼A(6個字節(jié))、存取控制(4個字節(jié))、密碼B(6個字節(jié)),是一個特殊的塊,稱為控制塊,。其余三個塊是一般的數(shù)據(jù)塊。數(shù)據(jù)塊有兩種應(yīng)用方法,一種是用作一般的數(shù)據(jù)保存用,直接讀寫。另一種用法是用作數(shù)值塊,可以進行初始化值、加值、減值、讀值的運算。系統(tǒng)配用相應(yīng)的函數(shù)完成相應(yīng)的功能。但扇區(qū)0的塊0是特殊的,是廠商代碼,已固化,不可改寫。</p><p&
25、gt;<b> 扇區(qū)存儲結(jié)構(gòu)</b></p><p> M1卡分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成,(我們也將16個扇區(qū)的64個塊按絕對地址編號為0~63,存貯結(jié)構(gòu)如下圖所示:</p><p><b> 表1 存儲結(jié)構(gòu)</b></p><p> 塊0 數(shù)據(jù)塊 0</p>
26、<p> 扇區(qū)0 塊1 數(shù)據(jù)塊 1 </p><p> 塊2 數(shù)據(jù)塊 2 </p><p> 塊3 控制塊 3 </p><p> 塊0 數(shù)據(jù)塊 4</p><p> 扇區(qū)1 塊1 數(shù)據(jù)塊 5</p><p> 塊2 數(shù)據(jù)塊
27、 6 塊3 控制塊 7 </p><p> 塊0 數(shù)據(jù)塊 60</p><p> 扇區(qū)15 塊1 數(shù)據(jù)塊 61</p><p> 塊2 數(shù)據(jù)塊 62</p><p> 塊3 控制塊 63</p><p> 數(shù)據(jù)塊
28、可作兩種應(yīng)用: </p><p> 用作一般的數(shù)據(jù)保存,可以進行讀、寫操作。</p><p> 用作數(shù)據(jù)值,可以進行初始化值、加值、減值、讀值操作。</p><p> 每個扇區(qū)的塊3為控制塊,包括了密碼A(6字節(jié))、存取控制(4字節(jié))、密碼B(6字節(jié)) 具體結(jié)構(gòu)如下: </p><p> 每個扇區(qū)的密碼和存取控制都是獨立的,可
29、以根據(jù)實際需要設(shè)定各自的密碼及存取控制。存取控制為4個字節(jié),共32位,扇區(qū)中的每個塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每個塊都有相應(yīng)的三個控制位,定義如下: </p><p><b> 表2控制位定義</b></p><p> 三個控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限(如 </p>
30、<p> 進行減值操作必須驗證KEY A,進行加值操作必須驗證KEY B,等等)。</p><p> *** 塊0、1、2的存取控制與塊3 的存取控制不同</p><p> 數(shù)據(jù)塊(塊0、塊1、塊2)的存取控制如下:</p><p><b> 表 3 </b></p><p> (b)控制塊塊3的存取
31、控制與數(shù)據(jù)塊(塊0、1、2)不同,它的存取控制如下</p><p><b> 表4</b></p><p> ?。?)工作原理 卡片的電氣部分只由一個天線和ASIC組成。</p><p> 天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。</p><p> ASIC:卡片的ASIC由一個高速
32、(106KB波特率)的RF接口,一個控制單元和一個 </p><p> 8K位EEPROM組成。</p><p> 工作原理: 讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與讀寫器發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接有一個單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個電容內(nèi)儲存,當所積累的
33、電荷達到2V時,此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。 </p><p> M1射頻卡與讀寫器的通訊</p><p><b> 圖1</b></p><p> 復位應(yīng)答(Answer to request) </p><p> M1射頻卡的通訊協(xié)議和通訊波特率是定義好的,當
34、有卡片進入讀寫器的操作范圍時,讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗證卡片的卡型</p><p> 防沖突機制 (Anticollision Loop) </p><p> 當有多張卡進入讀寫器操作范圍時,防沖突機制會從其中選擇一張進行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。</p><p> 選擇卡片(
35、Select Tag) </p><p> 選擇被選中的卡的序列號,并同時返回卡的容量代碼。</p><p> 三次次互相確認(3 Pass Authentication) </p><p> 選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進行密碼校驗,在三次相互認證之后就可以通過加密流進行通訊。(在選擇另一扇區(qū)時,則必須進行另一扇區(qū)密碼校驗
36、。) </p><p><b> 對數(shù)據(jù)塊的操作 </b></p><p> 讀 (Read):讀一個塊; </p><p> 寫 (Write):寫一個塊; </p><p> 加(Increment):對數(shù)值塊進行加值; </p><p> 減(Decrement):對數(shù)值塊進行減值
37、; </p><p> 存儲(Restore):將塊中的內(nèi)容存到數(shù)據(jù)寄存器中; </p><p> 傳輸(Transfer):將數(shù)據(jù)寄存器中的內(nèi)容寫入塊中; </p><p> 中止(Halt):將卡置于暫停工作狀態(tài); </p><p> 四 射頻讀卡模塊RC522 </p><p> 射頻讀卡模塊RC5
38、22簡介</p><p> MF RC522 是應(yīng)用于13.56MHz 非接觸式通信中高集成度讀寫卡系列芯片中的一員。是NXP公司針對“三表”應(yīng)用 推出的一款低 電壓、低成本、體積小的非接觸式讀寫卡芯片,是智能儀表和便攜 式手持設(shè)備研發(fā)的較好選擇。</p><p> MF RC522 利用了先進的調(diào)制和解調(diào)概念,完全集成了在13.56MHz 下所有類型的被動非接觸式通信方式和協(xié)議。支持
39、 ISO14443A 的多層應(yīng)用。其內(nèi)部發(fā)送器部分可驅(qū)動讀寫器天線與ISO 14443A/MIFARE卡和應(yīng)答機的通信,無需其它的電路。接收器部分提供一個堅固而有效的解調(diào)和解碼電路,用于處理ISO14443A 兼容的應(yīng)答器信號。數(shù)字部分處理ISO14443A 幀和錯誤檢測(奇偶 &CRC)。此外,它還支持快速CRYPTO1加密算法,用于驗證MIFARE 系列產(chǎn)品。MFRC522 支持MIFARE?更高速的非接觸式通信,雙向數(shù)據(jù)雙
40、向傳輸速率高達424kbit/s。</p><p> 作為13.56MHz 高集成度讀寫卡系列芯片家族的新成員,MF RC522 與和MF RC500 MF RC530 有不少相似之處,同時也具備諸多特點和差異。它與主機間的通信采用連線較少的串行通信,且可根據(jù)不同的用戶需求,選取SPI、I2C 或串行UART(類似RS232)模式之一,有利于減少連線,縮小PCB 板體積,降低成本。</p><
41、;p><b> 引腳圖</b></p><p><b> 圖2</b></p><p> 管腳描述 注:I輸入 O輸出 PWR電源</p><p><b> 表5</b></p><p><b> 芯片相關(guān)功能介紹</b></p&
42、gt;<p><b> 圖3</b></p><p> 讀卡器卡(數(shù)據(jù)從MFRC522發(fā)送到卡)//讀卡器一方的調(diào)制,位編碼</p><p> 卡讀卡器(接受卡的數(shù)據(jù))//卡一方的調(diào)制,位編碼</p><p><b> I2C 總線接口</b></p><p><b&
43、gt; 圖4</b></p><p> 接口遵循I2C總線規(guī)范V2.1.在標準,快捷,高速的模式中,MFR522可作用于從接收器或從發(fā)送器。SDA是一個雙向數(shù)據(jù)線,通過一個電流源或上拉電阻接到正電壓。如果不傳輸數(shù)據(jù)SDA和SCL均為高電平。MFR522有一個三態(tài)輸出級來執(zhí)行線與功能。</p><p> 五 STC89C52芯片介紹</p><p>
44、; MCS-51系列單片機在超低功耗和功能集成等方面有明顯的特點。具備適合應(yīng)用在電池供電的便攜式裝置、超長時間連續(xù)工作的設(shè)備等領(lǐng)域的特點,更具有開發(fā)方便、可以現(xiàn)場編程等優(yōu)點。STC89C52RC內(nèi)置8K的Flash存儲器和512字節(jié)RAM,具有3個16位計數(shù)器和一個標準的串行通信口,支持ISP程序下載方便程序的調(diào)試,此外它還具有良好的溫度特性、穩(wěn)定性和性價比。</p><p><b> 引腳圖5&l
45、t;/b></p><p> ?。?)如圖4所示為STC89C52RC單片機的管腳圖。</p><p> VCC(40引腳):電源電壓</p><p> VSS(20引腳):接地</p><p> P0端口(P0.0~P0.7,39~32引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負載,對
46、端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復用總線。此時,P0口內(nèi)部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。</p><p> P1端口(P1.0~P1.7,1~8引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)
47、4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流。此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX)。在對Flash ROM編程和程序校驗時,P1要接收低8位地址。</p><p> P2端口(P2.0~P2.7,21
48、~28引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流。在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX @DPTR”指令)時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX @
49、R1”指令)時,P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變。在對Flash ROM編程和程序校驗期間,P2也接收高位地址和一些控制信號。</p><p> P3端口(P3.0~P3.7,10~17引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這
50、時可用作輸入口。P3做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。</p><p> P3口除作為一般I/O口外,還有其他一些復用功能,如表6所示:</p><p><b> 表6</b></p><p> RST(9引腳):復位輸入。當輸入連
51、續(xù)兩個機器周期以上高電平時為有效,用來完成單片機單片機的復位初始化操作??撮T狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。</p><p> ALE/PROG(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳(PROG)也用作編程輸入
52、脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址位8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執(zhí)行MOVXP或MOV指令時有效。否則,ALE將被微弱拉高。這個ALE使能標志位(地址位8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。</p><p
53、> PSEN(29引腳):外部程序存儲器選通信號(PSEN)是外部程序存儲器選通信號。當AT89C51RC從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。</p><p> EA/VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器讀取指令,EA必須接GND。注意加密方式1時,EA將內(nèi)部鎖定位RESE
54、T。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在Flash編程期間,EA也接收12伏VPP電壓。</p><p> XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><p> XTAL2(18引腳):振蕩器反相放大器的輸入端。</p><p> 六LCD1602芯片</p><p> (1)工業(yè)字符型液晶,能
55、夠同時顯示16x02即32個字符。(16列2行)</p><p> 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。</p>&
56、lt;p> 1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。</p><p><b> ?。?)引腳圖</b></p><p> (3)1602采用標準的16腳接口,其中:</p><p> 第1腳:VSS為電源地</p><p> 第2腳:VCC接5V電源
57、正極</p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。</p><p> 第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0
58、)時進行寫操作。</p><p> 第6腳:E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。</p><p> 第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。</p><p><b> 軟件設(shè)計</b>
59、;</p><p><b> MAIN.C</b></p><p> #include "reg52.h"</p><p> #include "main.h"</p><p> #include "mfrc522.h"</p><
60、p> #include <string.h></p><p> //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令</p><p> //4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反 </p><p> unsigned char code data2
61、[4] = {0x12,0,0,0};</p><p> unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//校驗密碼 </p><p> unsigned char g_ucTempbuf[20]; </p><p> unsigned char ida
62、ta MLastSelectedSnr[4];</p><p> unsigned char idata RevBuffer[30]; </p><p> unsigned char data SerBuffer[20];</p><p> unsigned char data money[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
63、,50};//最后的50就是卡上的金額可以修改</p><p> void com(unsigned char com);</p><p> void dat(unsigned char dat);</p><p> void delay(unsigned char x); </p><p> bit CmdValid;
64、 </p><p> unsigned char status;</p><p> /////////////////////////////////////////////////////////////////////</p><p><b> //系統(tǒng)初始化</b></p><p> ///////////
65、//////////////////////////////////////////////////////////</p><p> void InitializeSystem()</p><p><b> {</b></p><p> P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;</p><p&
66、gt; ET2 = 0; //80c52比80C51多一個定時器T2 ET2為定時計數(shù)器2的溢出中斷允許位</p><p> T2CON = 0x04;//外部中斷1的中斷觸發(fā)方式控制位 邊沿觸發(fā)方式 下降沿有效觸發(fā)</p><p> PCON = 0x80; //電源控制寄存器波特率的選擇位SOMD=1 ,波特率在原來的基礎(chǔ)上加倍 </p&g
67、t;<p> SCON = 0x70; //串行口控制寄存器SM0 SM1=01工作與方式1 10位異步收發(fā) </p><p> TMOD = 0x21; //TMOD = 0x22;定時器工作于方式2 ,波特率發(fā)生方式</p><p> TH1 = BAUD_9600; //波特率為9600位每秒 方式2的波特率為定
68、值</p><p> TL1 = TH1;//自動重裝TH1=TL1</p><p> TR1 = 1; // 波特率發(fā)生器</p><p> TH0 = 0x60;</p><p> TL0 = 0x60;//通過初值設(shè)定可知初值</p><p> TR0 = 0;
69、 //定時器運行控制位</p><p> ET0=0; //中斷允許位</p><p><b> ET1=0;</b></p><p> EA=1; //中斷允許總控制位</p><p> EX0=1; //外部中斷0中斷允許位</p><p> IT0 = 1
70、; //外部中斷0觸發(fā)方式控制位 邊沿觸發(fā)方式 下降沿有效觸發(fā)</p><p> TR2=0;//定時器2起??刂莆?lt;/p><p> ES = 1; //串行口中斷允許位</p><p> CmdValid=0; </p><p> LED_GREEN = 1; //設(shè)置 LED的顯示初值</p&g
71、t;<p><b> L</b></p><p> PcdReset();</p><p> PcdAntennaOff(); </p><p> PcdAntennaOn(); </p><p> M500PcdConfigISOType( 'A' );</p>
72、<p><b> }</b></p><p> /////////////////////////////////////////////////////////////////////</p><p> //用T2做延時子程序</p><p> ////////////////////////////////////////
73、/////////////////////////////</p><p> /************************************/</p><p> void main( )</p><p><b> { </b></p><p> unsigned char baud,t=0,fl
74、ag=5;</p><p> InitializeSystem( );</p><p> LCDinit();</p><p><b> xs();</b></p><p><b> while (1)</b></p><p><b> {</b&
75、gt;</p><p> status= PcdRequest(0x26,&RevBuffer[2]);//尋卡</p><p> if(status==MI_OK)</p><p><b> {</b></p><p> status = PcdAnticoll(&RevBuffer[2]);
76、//防沖撞</p><p> memcpy(MLastSelectedSnr,&RevBuffer[2],4);</p><p> if(status==MI_OK)</p><p><b> { </b></p><p> status = PcdSelect(&RevBuffer[2]);//
77、選定卡片</p><p> if(status==MI_OK)</p><p><b> { </b></p><p> status = PcdAuthState(0x60, 1, DefaultKey, MLastSelectedSnr);// 校驗卡密碼</p><p> if(status==M
78、I_OK)</p><p><b> {</b></p><p> status =PcdRead(0x01,&RevBuffer[2]); //讀卡</p><p> if (status == MI_OK)</p><p><b> {</b></p><
79、p> status =PcdWrite(0x01,money); //寫卡</p><p> if (status == MI_OK)</p><p><b> {</b></p><p> com(0x85);</p><p> dat(money[15]/10+'0');</p
80、><p> dat(money[15]%10+'0');</p><p><b> if(t==0)</b></p><p><b> {</b></p><p><b> bell=0;</b></p><p><
81、b> t=1;</b></p><p> money[15]--;</p><p><b> }</b></p><p> com(0xc5);</p><p> dat(money[15]/10+'0');</p><p> dat(money[15
82、]%10+'0');</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
83、 } </b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> status= PcdRequest(0x26,&RevBuffer[2]);//尋卡<
84、/p><p> if(status!=MI_OK)</p><p><b> t=0;</b></p><p><b> }</b></p><p><b> flag--;</b></p><p> if(flag==0)</p>
85、<p><b> {</b></p><p><b> bell=1;</b></p><p><b> flag=5;</b></p><p><b> } </b></p><p><b> }</b>&
86、lt;/p><p><b> }</b></p><p> 子程序RC522.C</p><p> #include <intrins.h></p><p> #include "reg52.h" </p><p> #include "main.h
87、"</p><p> #include "mfrc522.h"</p><p> #include <string.h> </p><p> #define MAXRLEN 18 </p><p> void com(unsigned char com);</p><p&g
88、t; void dat(unsigned char dat); </p><p> void delay(unsigned char x); </p><p> /////////////////////////////////////////////////////////////////////</p><p>
89、 //功 能:尋卡</p><p> //參數(shù)說明: req_code[IN]:尋卡方式</p><p> // 0x52 = 尋感應(yīng)區(qū)內(nèi)所有符合14443A標準的卡</p><p> // 0x26 = 尋未進入休眠狀態(tài)的卡</p><p> //
90、 pTagType[OUT]:卡片類型代碼</p><p> // 0x4400 = Mifare_UltraLight</p><p> // 0x0400 = Mifare_One(S50)</p><p> // 0x0200 = Mifare_One(S70)&l
91、t;/p><p> // 0x0800 = Mifare_Pro(X)</p><p> // 0x4403 = Mifare_DESFire</p><p> //返 回: 成功返回MI_OK</p><p> //////////////////////////////
92、///////////////////////////////////////</p><p> char PcdRequest(unsigned char req_code,unsigned char *pTagType)</p><p><b> {</b></p><p> char status; </p><
93、;p> unsigned int unLen;</p><p> unsigned char ucComMF522Buf[MAXRLEN]; </p><p> // unsigned char xTest ;</p><p> ClearBitMask(Status2Reg,0x08);</p><p> WriteRa
94、wRC(BitFramingReg,0x07);</p><p> // xTest = ReadRawRC(BitFramingReg);</p><p> // if(xTest == 0x07 )</p><p> // { LED_GREEN =0 ;}</p><p> // else {LED_GREEN =1
95、;while(1){}}</p><p> SetBitMask(TxControlReg,0x03);</p><p> ucComMF522Buf[0] = req_code;</p><p> status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);<
96、;/p><p> // if(status == MI_OK )</p><p> // { LED_GREEN =0 ;}</p><p> // else {LED_GREEN =1 ;}</p><p> if ((status == MI_OK) && (unLen == 0x10))</
97、p><p><b> { </b></p><p> *pTagType = ucComMF522Buf[0];</p><p> *(pTagType+1) = ucComMF522Buf[1];</p><p><b> }</b></p><p>&l
98、t;b> else</b></p><p> { status = MI_ERR; }</p><p> return status;</p><p><b> }</b></p><p> ///////////////////////////////////////////////
99、//////////////////////</p><p> //功 能:防沖撞</p><p> //參數(shù)說明: pSnr[OUT]:卡片序列號,4字節(jié)</p><p> //返 回: 成功返回MI_OK</p><p> ////////////////////////////////////////////////
100、///////////////////// </p><p> char PcdAnticoll(unsigned char *pSnr)</p><p><b> {</b></p><p> char status;</p><p> unsigned char i,snr_check=0;</p&g
101、t;<p> unsigned int unLen;</p><p> unsigned char ucComMF522Buf[MAXRLEN]; </p><p> ClearBitMask(Status2Reg,0x08);</p><p> WriteRawRC(BitFramingReg,0x00);</p><p
102、> ClearBitMask(CollReg,0x80);</p><p> ucComMF522Buf[0] = PICC_ANTICOLL1;</p><p> ucComMF522Buf[1] = 0x20;</p><p> status= PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF52
103、2Buf,&unLen); </p><p> if (status == MI_OK)</p><p><b> { </b></p><p> for (i=0; i<4; i++)</p><p><b> { </b></p><p>
104、 *(pSnr+i) = ucComMF522Buf[i];</p><p> snr_check ^= ucComMF522Buf[i];</p><p><b> }</b></p><p> if (snr_check != ucComMF522Buf[i])</p><p> { status =
105、MI_ERR; }</p><p><b> }</b></p><p> SetBitMask(CollReg,0x80);</p><p> return status;</p><p><b> }</b></p><p> //////////////
106、///////////////////////////////////////////////////////</p><p> //功 能:選定卡片</p><p> //參數(shù)說明: pSnr[IN]:卡片序列號,4字節(jié)</p><p> //返 回: 成功返回MI_OK</p><p> ///////////////
107、//////////////////////////////////////////////////////</p><p> char PcdSelect(unsigned char *pSnr)</p><p><b> {</b></p><p> char status;</p><p> unsigne
108、d char i;</p><p> unsigned int unLen;</p><p> unsigned char ucComMF522Buf[MAXRLEN]; </p><p> ucComMF522Buf[0] = PICC_ANTICOLL1;</p><p> ucComMF522Buf[1] = 0x70;<
109、;/p><p> ucComMF522Buf[6] = 0;</p><p> for (i=0; i<4; i++)</p><p><b> {</b></p><p> ucComMF522Buf[i+2] = *(pSnr+i);</p><p> ucComMF522Buf[
110、6] ^= *(pSnr+i);</p><p><b> //</b></p><p><b> }</b></p><p> CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);</p><p> ClearBitMask(Status
111、2Reg,0x08);</p><p> status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);</p><p> if ((status == MI_OK) && (unLen == 0x18))</p><p> { status =
112、MI_OK; }</p><p><b> else</b></p><p> { status = MI_ERR; }</p><p> return status;</p><p><b> }</b></p><p> //////////////
113、///////////////////////////////////////////////////////</p><p> //功 能:驗證卡片密碼</p><p> //參數(shù)說明: auth_mode[IN]: 密碼驗證模式</p><p> // 0x60 = 驗證A密鑰</p><p>
114、 // 0x61 = 驗證B密鑰 </p><p> // addr[IN]:塊地址</p><p> // pKey[IN]:密碼</p><p> // pSnr[IN]:卡片序列號,4字節(jié)</p><p> //返 回: 成功返回MI_
115、OK</p><p> ///////////////////////////////////////////////////////////////////// </p><p> char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigne
116、d char *pSnr)</p><p><b> {</b></p><p> char status;</p><p> unsigned int unLen;</p><p> unsigned char i,ucComMF522Buf[MAXRLEN]; </p><p>
117、ucComMF522Buf[0] = auth_mode;</p><p> ucComMF522Buf[1] = addr;</p><p> for (i=0; i<6; i++)</p><p> { ucComMF522Buf[i+2] = *(pKey+i); }</p><p> for (i=0; i&l
118、t;6; i++)</p><p> { ucComMF522Buf[i+8] = *(pSnr+i);</p><p><b> // </b></p><p><b> }</b></p><p> // memcpy(&ucComMF522Buf[2], pKey,
119、6); </p><p> // memcpy(&ucComMF522Buf[8], pSnr, 4); </p><p> status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);</p><p> if ((status != MI_OK) || (
120、!(ReadRawRC(Status2Reg) & 0x08)))</p><p> { status = MI_ERR; }</p><p> return status;</p><p><b> }</b></p><p> /////////////////////////////////
121、////////////////////////////////////</p><p> //功 能:讀取M1卡一塊數(shù)據(jù)</p><p> //參數(shù)說明: addr[IN]:塊地址</p><p> // pData[OUT]:讀出的數(shù)據(jù),16字節(jié)</p><p> //返 回: 成功返回MI_OK&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計報告--ic卡讀寫器設(shè)計
- 單片機課程設(shè)計-簡易計算器
- 單片機課程設(shè)計簡易計算器
- 單片機課程設(shè)計--簡易計算器
- 單片機課程設(shè)計簡易計算器
- 單片機課程設(shè)計--簡易計算器
- 課程設(shè)計---單片機簡易計算器設(shè)計
- 單片機簡易時鐘課程設(shè)計
- 單片機簡易秒表課程設(shè)計
- 單片機課程設(shè)計(簡易函數(shù)發(fā)生器)
- 單片機課程設(shè)計報告-簡易計算器
- 單片機課程設(shè)計--簡易數(shù)字計算器
- 單片機課程設(shè)計--簡易波形發(fā)生器
- 簡易計算器單片機課程設(shè)計報告
- 單片機課程設(shè)計報告---簡易計算器
- 單片機簡易電子琴單片機課程設(shè)計
- 單片機課程設(shè)計報告-- 簡易計算器設(shè)計
- 單片機課程設(shè)計--簡易計算器的設(shè)計
- 單片機課程設(shè)計---簡易計算器的設(shè)計
- 單片機課程設(shè)計---簡易節(jié)日彩燈
評論
0/150
提交評論