版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報告</b></p><p> 設(shè)計(jì)題目: 單片機(jī)門禁系統(tǒng)的設(shè)計(jì) </p><p> 摘要:門禁系統(tǒng)采用89C52 單片機(jī)作為控制核心,外圍加蜂鳴器控制電路、開門指示燈電路、電控鎖控制電路等。采用射頻卡完成刷卡進(jìn)門,按鈕出門功能。本系統(tǒng)設(shè)計(jì)簡單、性能優(yōu)良,具有一定的
2、實(shí)用性。</p><p> 關(guān)鍵詞:門禁;電控鎖;控制</p><p><b> ?。?一)、系統(tǒng)設(shè)計(jì)</b></p><p> 1. 系統(tǒng)方案的比較</p><p><b> (1)選題論證</b></p><p> 在現(xiàn)今社會,隨著人們對門禁系統(tǒng)各方面要求的不斷提
3、高,門禁系統(tǒng)的應(yīng)用范圍越來越廣泛,因此,門禁系統(tǒng)的研發(fā)已成為現(xiàn)代科技領(lǐng)域的一個熱門課題。</p><p> 目前,門禁系統(tǒng)已成為安全防范系統(tǒng)中極其重要的一部分,在一些發(fā)達(dá)國家,門禁系統(tǒng)正以遠(yuǎn)遠(yuǎn)高于其它類安防產(chǎn)品迅猛發(fā)展;門禁系統(tǒng)之所以能在眾多安防產(chǎn)品中脫穎而出,根本原因是因?yàn)槠涓淖兞艘酝卜喇a(chǎn)品,如:閉路監(jiān)控,防盜報警等被動的安防方式,以主動的控制替代了被動監(jiān)視的方式,通過對主要通道的控制,大大的防止了罪犯從正
4、常通道的侵入,并且可以在罪案發(fā)生時通過對通道門的控制限制罪犯的活動范圍,制止犯罪或減少損失。此外,人們對門禁系統(tǒng)的應(yīng)用已不局限在單一的出入口控制,而且還要求它不僅可應(yīng)用于智能大廈或智能社區(qū)的門禁控制、考勤管理、安防報警、停車場控制、電梯控制、樓宇自控等,還可與其它系統(tǒng)聯(lián)動控制等多種控制功能。</p><p><b> ?。?)方案選擇</b></p><p> 門禁
5、系統(tǒng)有許多種方案:主要有聯(lián)網(wǎng)和不聯(lián)網(wǎng)型。</p><p> 聯(lián)網(wǎng)型:結(jié)構(gòu)圖如圖示</p><p> 聯(lián)網(wǎng)型門禁系統(tǒng)的優(yōu)點(diǎn):</p><p><b> 實(shí)時聯(lián)網(wǎng)</b></p><p> 刷卡后立即把數(shù)據(jù)傳輸?shù)街鳈C(jī)上;</p><p> 便于查詢并能生成報表;</p><
6、;p><b> 缺點(diǎn):</b></p><p> 計(jì)算機(jī)要求24小時開機(jī);</p><p> 計(jì)算機(jī)或管理機(jī)萬一有故障系統(tǒng)癱瘓;</p><p><b> 有問題影響面大。</b></p><p> 不聯(lián)網(wǎng)型門禁系統(tǒng)的優(yōu)點(diǎn):單臺刷卡機(jī)就能工作,不用布線,操作簡單方便。</p&g
7、t;<p><b> 缺點(diǎn):不便于查詢。</b></p><p> 根據(jù)以上分析,我們的課題選擇了不聯(lián)網(wǎng)型。因?yàn)榇嗽O(shè)計(jì)簡單,提交作品方便,易操作。</p><p><b> (3)射頻卡的選擇</b></p><p> 目前市面上的卡有很多種類:條碼、磁卡、接觸式IC卡,非接觸式IC卡等,條碼和磁卡,
8、在超市和銀行方面應(yīng)用的比較多,接觸式IC卡,以前在公共電話中用的比較多,但接觸式IC卡,芯片外露易壞、易折,而非接觸式IC卡既射頻卡,它把芯片和線圈封裝卡片內(nèi),不容易損壞、不怕惡劣的環(huán)境,現(xiàn)在社會上很流行,可靠性也高。根據(jù)卡的分析,選擇目前流行最廣,可靠性高,成本低的只讀卡,即采用EM4000型的ID卡。</p><p> ?。ǘ?硬件電路的設(shè)計(jì)</p><p><b> 流
9、程圖:</b></p><p> 門禁系統(tǒng)主要組成:由CPU、復(fù)位電路、電源指示、工作指示、振蕩電路、蜂鳴器電路、出門按鈕、讀卡模塊、電機(jī)轉(zhuǎn)動模塊組成。</p><p> 門禁系統(tǒng)的工作原理:</p><p> 首先,按下開始按鍵,電源指示燈亮起。</p><p> 當(dāng)刷卡時,蜂鳴器響一聲,讀卡權(quán)限獲得允許,顯示燈點(diǎn)開始閃
10、,同時繼電器動作使電機(jī)轉(zhuǎn)動,延時5秒時間后繼電器再次動作使電機(jī)停止運(yùn)轉(zhuǎn),顯示燈熄滅。</p><p> 當(dāng)非法卡刷卡時,顯示燈將一直閃,并且蜂鳴器將發(fā)出報警聲。</p><p> ?。ㄈ┲麟娐吩韴D:</p><p> (四) 各部分電路原理</p><p><b> 1 開門電機(jī)電路:</b></p>
11、;<p> 門控鎖電路工作原理:當(dāng)P2.7口輸出高電平時Q2導(dǎo)通,Q3截止,此時繼電器的控制線圈為開路,繼電器不動作。門鎖接于繼電器常閉端,電機(jī)不轉(zhuǎn),門處于鎖死狀態(tài)。</p><p> 當(dāng)P2.7口輸出低電平時Q2截止,Q3導(dǎo)通,此時繼電器的控制線圈閉合,繼電器動作。繼電器常閉端斷開,電機(jī)開始轉(zhuǎn)動,門處于打開狀態(tài)。</p><p><b> 2 蜂鳴器電路:&
12、lt;/b></p><p><b> 工作原理:</b></p><p> 當(dāng) P3.5輸出高電平時,Q1截止,蜂鳴器回路開路,蜂鳴器不響。</p><p> 當(dāng) P3.5輸出低電平時,Q1導(dǎo)通,蜂鳴器回路閉合,蜂鳴器發(fā)出響聲。</p><p><b> 3 開門按鍵電路:</b>&
13、lt;/p><p> (三) 非接觸式IC卡性能簡介(M1)</p><p><b> 主要指標(biāo)</b></p><p> 容量為8K位EEPROM</p><p> 分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位</p><p> 每個扇區(qū)有獨(dú)立的一組密碼及訪問控制<
14、/p><p> 每張卡有唯一序列號,為32位</p><p> 具有防沖突機(jī)制,支持多卡操作</p><p> 無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路</p><p> 數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次</p><p> 工作溫度:-20℃~50℃(濕度為90%)</p>&l
15、t;p> 工作頻率:13.56MHZ</p><p> 通信速率:106 KBPS</p><p> 讀寫距離:10 cm以內(nèi)(與讀寫器有關(guān))</p><p><b> 存儲結(jié)構(gòu)</b></p><p> M1卡分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成,(我們也將16個扇區(qū)的64個塊按
16、絕對地址編號為0~63,存貯結(jié)構(gòu)如下圖所示:</p><p> 第0扇區(qū)的塊0(即絕對地址0塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。</p><p> 每個扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。</p><p> 數(shù)據(jù)塊可作兩種應(yīng)用:</p><p> 用作一般的數(shù)據(jù)保存,可以進(jìn)行讀、寫操作。</p>&
17、lt;p> 用作數(shù)據(jù)值,可以進(jìn)行初始化值、加值、減值、讀值操作。</p><p> 每個扇區(qū)的塊3為控制塊,包括了密碼A、存取控制、密碼B。具體結(jié)構(gòu)如下:</p><p> 密碼A(6字節(jié)) 存取控制(4字節(jié)) 密碼B(6字節(jié)) </p><p> 每個扇區(qū)的密碼和存取控制都是獨(dú)立的,可以根據(jù)實(shí)際需要設(shè)定各自的密碼及存取控制。存取控制為4個字節(jié),共
18、32位,扇區(qū)中的每個塊(包括數(shù)據(jù)塊和控制塊)的存取條件是由密碼和存取控制共同決定的,在存取控制中每個塊都有相應(yīng)的三個控制位,定義如下:</p><p> 塊0: C10 C20 C30</p><p> 塊1: C11 C21 C31</p><p> 塊2: C12 C22 C32</p><p>
19、 塊3: C13 C23 C33</p><p> 三個控制位以正和反兩種形式存在于存取控制字節(jié)中,決定了該塊的訪問權(quán)限(如 </p><p> 進(jìn)行減值操作必須驗(yàn)證KEY A,進(jìn)行加值操作必須驗(yàn)證KEY B,等等)。三個控制</p><p> 位在存取控制字節(jié)中的位置,以塊0為例:</p><p><b>
20、 對塊0的控制:</b></p><p> bit 7 6 5 4 3 2 1 0</p><p> ( 注: C10_b表示C10取反 )</p><p> 存取控制(4字節(jié),其中字節(jié)9為備用字節(jié))結(jié)構(gòu)如下所示:</p><p> bit 7 6
21、 5 4 3 2 1 0</p><p> ( 注: _b表示取反 )</p><p> 6、數(shù)據(jù)塊(塊0、塊1、塊2)的存取控制如下:</p><p> ?。↘eyA|B 表示密碼A或密碼B,Never表示任何條件下不能實(shí)現(xiàn))</p><p> 例如:當(dāng)塊0的存取控制位C10
22、C20 C30=1 0 0時,驗(yàn)證密碼A或密碼B正確后可讀;</p><p> 驗(yàn)證密碼B正確后可寫;不能進(jìn)行加值、減值操作。</p><p> 7、控制塊塊3的存取控制與數(shù)據(jù)塊(塊0、1、2)不同,它的存取控制如下:</p><p> 例如:當(dāng)塊3的存取控制位C13 C23 C33=1 0 0時,表示:</p><p> 密碼A:不
23、可讀,驗(yàn)證KEYA或KEYB正確后,可寫(更改)。</p><p> 存取控制:驗(yàn)證KEYA或KEYB正確后,可讀、可寫。</p><p> 密碼B:驗(yàn)證KEYA或KEYB正確后,可讀、可寫。</p><p><b> 工作原理</b></p><p> 卡片的電氣部分只由一個天線和ASIC組成。</p&g
24、t;<p> 天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。</p><p> ASIC:卡片的ASIC由一個高速(106KB波特率)的RF接口,一個控制單元和一個</p><p> 8K位EEPROM組成。</p><p> 工作原理:讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與讀寫器發(fā)射的頻
25、率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接有一個單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個電容內(nèi)儲存,當(dāng)所積累的電荷達(dá)到2V時,此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。</p><p> M1射頻卡與讀寫器的通訊</p><p><b> 改變扇區(qū)</b></p>
26、<p><b> 不改變扇區(qū)</b></p><p> 復(fù)位應(yīng)答(Answer to request)</p><p> M1射頻卡的通訊協(xié)議和通訊波特率是定義好的,當(dāng)有卡片進(jìn)入讀寫器的操作范圍時,讀寫器以特定的協(xié)議與它通訊,從而確定該卡是否為M1射頻卡,即驗(yàn)證卡片的卡型。</p><p> 防沖突機(jī)制 (Anticolli
27、sion Loop)</p><p> 當(dāng)有多張卡進(jìn)入讀寫器操作范圍時,防沖突機(jī)制會從其中選擇一張進(jìn)行操作,未選中的則處于空閑模式等待下一次選卡,該過程會返回被選卡的序列號。</p><p> 選擇卡片(Select Tag)</p><p> 選擇被選中的卡的序列號,并同時返回卡的容量代碼。</p><p> 三次互相確認(rèn)(3 Pa
28、ss Authentication)</p><p> 選定要處理的卡片之后,讀寫器就確定要訪問的扇區(qū)號,并對該扇區(qū)密碼進(jìn)行密碼校驗(yàn),在三次相互認(rèn)證之后就可以通過加密流進(jìn)行通訊。(在選擇另一扇區(qū)時,則必須進(jìn)行另一扇區(qū)密碼校驗(yàn)。)</p><p><b> 對數(shù)據(jù)塊的操作 </b></p><p> 讀 (Read):讀一個塊;</p
29、><p> 寫 (Write):寫一個塊;</p><p> 加(Increment):對數(shù)值塊進(jìn)行加值;</p><p> 減(Decrement):對數(shù)值塊進(jìn)行減值;</p><p> 存儲(Restore):將塊中的內(nèi)容存到數(shù)據(jù)寄存器中;</p><p> 傳輸(Transfer):將數(shù)據(jù)寄存器中的內(nèi)容寫入
30、塊中;</p><p> 中止(Halt):將卡置于暫停工作狀態(tài);</p><p><b> ?。ㄋ模?程序:</b></p><p> #include "reg52.h"</p><p> #include <string.h></p><p> #in
31、clude "lcd.h"</p><p> #include "main.h"</p><p> #include "mfrc522.h"</p><p> typedef struct Record {</p><p> unsigned char Name[16];&
32、lt;/p><p> unsigned char No[16];</p><p> unsigned long CardID;</p><p> } RECORD ;</p><p> code RECORD student[3] ={</p><p> "Name:LingLong ",
33、" No.:3080432021 ",0x501909e0,</p><p> "Name:ZhangSan "," No.:3080432022 ",0xacebd854,</p><p> "Name:LiSi "," No.:3080432023 ",0x87654
34、321</p><p><b> };</b></p><p> char getData(void)</p><p><b> {</b></p><p><b> char c;</b></p><p> while (!RI);</
35、p><p><b> c=SBUF;</b></p><p><b> RI=0;</b></p><p> return (c);</p><p><b> }</b></p><p> //---------------------------
36、----------------------</p><p> char sendData(char c)</p><p><b> {</b></p><p> while (!TI);</p><p><b> TI = 0;</b></p><p> retu
37、rn (SBUF = c);</p><p><b> }</b></p><p><b> //蜂鳴器函數(shù)</b></p><p> void beep()</p><p><b> {</b></p><p> unsigned char
38、 i = 0;</p><p><b> EA=0;</b></p><p> for (i=0;i<200;i++)</p><p><b> {</b></p><p><b> sond = 0;</b></p><p> dela
39、yuS(20);</p><p><b> sond = 1;</b></p><p> delayuS(20);</p><p><b> }</b></p><p><b> EA=1;</b></p><p><b> }<
40、;/b></p><p> unsigned char idata RevBuffer[1]; //調(diào)試用</p><p> unsigned char data SerBuffer[1]; //調(diào)試用</p><p> bit CmdValid; //調(diào)試用</p><p> //////////////////////
41、///////////////////////////////////////////////</p><p><b> //系統(tǒng)初始化</b></p><p> /////////////////////////////////////////////////////////////////////</p><p> void Init
42、ializeSystem()</p><p><b> {</b></p><p> TMOD=0x20;//mode 2 auto reload</p><p><b> TL1=0xfd;</b></p><p> TH1=0xfd;//baudRate:9600</p>
43、<p> SCON=0x52; //sm0,sm1,sm2,ren,tb,rb8,ti,ri</p><p> PCON&=0x7f;//smod=0;</p><p> TR1=1;//timer1 reset</p><p> PcdReset();</p><p> PcdAntennaOff();<
44、;/p><p> PcdAntennaOn(); </p><p> M500PcdConfigISOType( 'A' );</p><p><b> }</b></p><p> #define IDLE (0)</p><p> #define CARDOK
45、 (1)</p><p> #define IDOK0 (2)</p><p> #define IDOK1 (3)</p><p> #define IDOK2 (4)</p><p> #define IDERROR0 (5)</p><p> #define IDERROR1 (6)
46、</p><p> #define IDERROR2 (7)</p><p> #define UNLOCK (8)</p><p> unsigned char state = IDLE;</p><p> unsigned char buf[4];</p><p><b> //主函數(shù)<
47、;/b></p><p> void main( )</p><p><b> { </b></p><p> unsigned char baud,i,Debug,result,updated;</p><p> unsigned long ltmp;</p><p> D
48、ebug = 0;</p><p><b> //打開電源指示燈</b></p><p> Power = 0;</p><p><b> //初始化單片機(jī)</b></p><p> InitializeSystem( );</p><p> CARD_LED =
49、0;</p><p><b> beep();</b></p><p> delayms0(200);</p><p> CARD_LED = 0;</p><p> delayms0(200);</p><p> CARD_LED = 1;</p><p>&l
50、t;b> while (1)</b></p><p><b> {</b></p><p> switch (state)</p><p><b> {</b></p><p> case IDLE : </p><p><b> /
51、/刷新顯示</b></p><p> PcdRequest(0x26,buf);</p><p> sendData(buf[0]);</p><p> sendData(buf[1]);</p><p> delayms0(100);</p><p> if (buf[0] != 0x04)&l
52、t;/p><p><b> {</b></p><p> PcdRequest(0x52,buf);</p><p><b> }</b></p><p> delayms0(100);</p><p> sendData(buf[0]);</p><
53、;p> sendData(buf[1]);</p><p> if (buf[0] == 0x04)</p><p><b> {</b></p><p> delayms0(200);</p><p> state = CARDOK;</p><p><b> }&l
54、t;/b></p><p><b> break;</b></p><p> case CARDOK:</p><p> PcdAnticoll(buf);</p><p> sendData(0x55);</p><p> sendData(buf[0]);</p>
55、<p> sendData(buf[1]);</p><p> sendData(buf[2]);</p><p> sendData(buf[3]);</p><p><b> //查找學(xué)生記錄</b></p><p> ltmp = (((unsigned long)buf[0])<<
56、;24)|(((unsigned long)buf[1])<<16)|(((unsigned long)buf[2])<<8)|(((unsigned long)buf[3]));</p><p> result = 0;</p><p> for (i=0;i<3;i++)</p><p> if (student[i].Car
57、dID == ltmp)</p><p><b> {</b></p><p> result =1;</p><p><b> break;</b></p><p><b> }</b></p><p> if (result == 1)&l
58、t;/p><p><b> {</b></p><p> state = IDOK0;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
59、<p> state = IDERROR0;</p><p><b> }</b></p><p><b> break;</b></p><p> case IDOK0:</p><p> delayms0(50);</p><p> PcdReq
60、uest(0x26,buf);</p><p> delayms0(50);</p><p> if (buf[0] != 0x04)</p><p><b> {</b></p><p> PcdRequest(0x52,buf);</p><p><b> }</b&
61、gt;</p><p> if (buf[0] == 0x04)</p><p><b> {</b></p><p> PcdAnticoll(buf);</p><p><b> //查找學(xué)生記錄</b></p><p> ltmp = (((unsigned
62、long)buf[0])<<24)|(((unsigned long)buf[1])<<16)|(((unsigned long)buf[2])<<8)|(((unsigned long)buf[3]));</p><p> result = 0;</p><p> for (i=0;i<3;i++)</p><p>
63、 if (student[i].CardID == ltmp)</p><p><b> {</b></p><p> result =1;</p><p><b> break;</b></p><p><b> }</b></p><p>
64、 if (result == 1)</p><p><b> {</b></p><p><b> beep();</b></p><p> state = IDOK1;</p><p><b> }</b></p><p><b>
65、 else</b></p><p> state = IDLE;</p><p><b> }</b></p><p><b> break;</b></p><p> case IDOK1:</p><p> state = IDOK2;</p&
66、gt;<p><b> break;</b></p><p> case IDOK2:</p><p> CARD_LED = !CARD_LED;</p><p> for (i = 0; i< 10;i ++)</p><p><b> {</b></p>
67、;<p> delayms0(10);</p><p> if ((key1 == 0)||(key2 == 0))</p><p><b> {</b></p><p> state = UNLOCK;</p><p><b> }</b></p><p
68、><b> }</b></p><p><b> break;</b></p><p> case IDERROR0:</p><p> delayms0(50);</p><p> PcdRequest(0x26,buf);</p><p> delaym
69、s0(50);</p><p> if (buf[0] != 0x04)</p><p><b> {</b></p><p> PcdRequest(0x52,buf);</p><p><b> }</b></p><p> if (buf[0] == 0x04
70、)</p><p><b> {</b></p><p> PcdAnticoll(buf);</p><p><b> //查找學(xué)生記錄</b></p><p> ltmp = (((unsigned long)buf[0])<<24)|(((unsigned long)buf
71、[1])<<16)|(((unsigned long)buf[2])<<8)|(((unsigned long)buf[3]));</p><p> result = 0;</p><p> for (i=0;i<3;i++)</p><p> if (student[i].CardID == ltmp)</p>&
72、lt;p><b> {</b></p><p> result =1;</p><p><b> break;</b></p><p><b> }</b></p><p> if (result == 1)</p><p><b&
73、gt; {</b></p><p> updated =1;</p><p> state = IDLE;</p><p><b> }</b></p><p><b> else</b></p><p> state = IDERROR1;</
74、p><p><b> }</b></p><p><b> break;</b></p><p> case IDERROR1:</p><p> state = IDERROR2;</p><p><b> break;</b></p>
75、;<p> case IDERROR2:</p><p><b> beep();</b></p><p> CARD_LED = !CARD_LED;</p><p> if ((key1 == 0)||(key2 == 0))</p><p><b> {</b><
76、/p><p> state = IDLE;</p><p> updated =1;</p><p> CARD_LED = 1;</p><p><b> }</b></p><p><b> break;</b></p><p> case
77、 UNLOCK:</p><p> Relay = 0;</p><p> CARD_LED = 0;</p><p> delayms0(1500);</p><p> CARD_LED = 1;</p><p> Relay = 1;</p><p> state = IDLE;
78、</p><p><b> break;</b></p><p><b> default:</b></p><p> state = IDLE;</p><p> updated = 1;</p><p><b> break;</b><
79、;/p><p><b> }</b></p><p> //用于調(diào)試,正常工作跳過</p><p> if (Debug)</p><p><b> {</b></p><p> CmdValid = FALSE;</p><p> if(Re
80、vBuffer[0]==11) //為了加快相應(yīng)速度 測試風(fēng)鳴器</p><p><b> {</b></p><p> RevBuffer[2]=RevBuffer[1];</p><p> RevBuffer[0]=1; //contact</p><p> RevBuffer[1]=
81、0;</p><p> CALL_isr_UART();</p><p> LED_GREEN = 1;</p><p> delay_10ms(RevBuffer[2]);</p><p> LED_GREEN = 0;</p><p><b> }</b></p>
82、<p> else if(RevBuffer[0]==13) //設(shè)置通訊波特率</p><p><b> {</b></p><p> switch(RevBuffer[1])</p><p><b> {</b></p><p><b> case 0:<
83、/b></p><p> baud=BAUD_9600;</p><p><b> break;</b></p><p><b> case 1:</b></p><p> baud=BAUD_14400;</p><p><b> break;&l
84、t;/b></p><p><b> case 2:</b></p><p> baud=BAUD_19200;</p><p><b> break;</b></p><p><b> case 3:</b></p><p> baud
85、=BAUD_28800;</p><p><b> break;</b></p><p><b> case 4:</b></p><p> baud=BAUD_38400;</p><p><b> break;</b></p><p><
86、;b> case 5:</b></p><p> baud=BAUD_57600;</p><p><b> break;</b></p><p><b> case 6:</b></p><p> baud=BAUD_115200;</p><p&g
87、t;<b> break;</b></p><p><b> default:</b></p><p> baud=BAUD_9600;</p><p><b> break;</b></p><p><b> }</b></p&g
88、t;<p> RevBuffer[0]=1; //contact</p><p> RevBuffer[1]=0;</p><p> CALL_isr_UART();</p><p> delay_10ms(5);</p><p> TR1 = 0;</p><p>
89、 TH1 = baud;</p><p> TL1 = TH1;</p><p> delay_10ms(2);</p><p> TR1 = TRUE;</p><p><b> }</b></p><p><b> else</b></p>
90、;<p><b> {</b></p><p> iccardcode();</p><p> CALL_isr_UART();</p><p><b> }</b></p><p><b> }</b></p><p><
91、b> }</b></p><p><b> }</b></p><p><b> //用于串口,測試</b></p><p> void iccardcode()</p><p><b> { </b></p><p&g
92、t; unsigned char cmd;</p><p> unsigned char status;</p><p> cmd = RevBuffer[0];</p><p> switch(cmd)</p><p><b> {</b></p><p> case 1:
93、// Halt the card //終止卡的操作</p><p> status= PcdHalt();</p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><
94、;p> case 2: // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)</p><p> // 尋卡,防沖突,選擇卡 返回卡類型(2 bytes)+ 卡系列號(4 bytes)</p><p> status= PcdRequest(RevBuffer[1],&am
95、p;RevBuffer[2]);</p><p> if(status!=0)</p><p><b> {</b></p><p> status= PcdRequest(RevBuffer[1],&RevBuffer[2]);</p><p> if(status!=0)</p>
96、<p><b> {</b></p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p><b> }</b></p><
97、;p><b> } </b></p><p> RevBuffer[0]=3;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 3: // 防沖
98、突 讀卡的系列號 MLastSelectedSnr</p><p> status = PcdAnticoll(&RevBuffer[2]);</p><p> if(status!=0)</p><p><b> {</b></p><p> RevBuffer[0]=1;</p>&l
99、t;p> RevBuffer[1]=status;</p><p><b> break;</b></p><p><b> }</b></p><p> //memcpy(MLastSelectedSnr,&RevBuffer[2],4);</p><p> RevB
100、uffer[0]=5;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 4: // 選擇卡 Select Card</p><p> //status=PcdSelect(ML
101、astSelectedSnr);</p><p> if(status!=MI_OK)</p><p><b> {</b></p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p><b> break;&
102、lt;/b></p><p><b> }</b></p><p> RevBuffer[0]=3;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 5: /
103、/ Key loading into the MF RC500's EEPROM</p><p> // status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);// 校驗(yàn)卡密碼</p><p> RevBuffer[0]=1;</p>&
104、lt;p> RevBuffer[1]=status;</p><p> break;</p><p><b> case 6: </b></p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p
105、> break;</p><p> case 7: </p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 8: //
106、 Read the mifare card</p><p><b> // 讀卡</b></p><p> status=PcdRead(RevBuffer[1],&RevBuffer[2]);</p><p> if(status==0)</p><p> {RevBuffer[0]=17;}</
107、p><p><b> else</b></p><p> {RevBuffer[0]=1;}</p><p> RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 9: // Write t
108、he mifare card</p><p> // 寫卡 下載密碼</p><p> status=PcdWrite(RevBuffer[1],&RevBuffer[2]);</p><p> RevBuffer[0]=1;</p><p> RevBuffer[1]=status;</p><p
109、><b> break;</b></p><p><b> case 10:</b></p><p> PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);</p><p> RevBuffer[0]=1;</p><p>
110、RevBuffer[1]=status;</p><p><b> break;</b></p><p> case 12: // 參數(shù)設(shè)置</p><p> PcdBakValue(RevBuffer[1], RevBuffer[2]);</p><p> RevBuffer[0]=1;//contac
111、t</p><p> RevBuffer[1]=0;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> (五) 結(jié)束語</b
112、></p><p> 經(jīng)過近半年的鍛煉和學(xué)習(xí),我們學(xué)到了許多書本上沒有的知識,從方案的論證、課題的選擇、電路原理,到電路上元器件的焊接、電路的調(diào)試,程序的編寫,調(diào)試下載,一步步,我們收獲很大。在設(shè)計(jì)中,我們力求硬件電路簡單,充分發(fā)揮軟件靈活方面的特點(diǎn),滿足系統(tǒng)設(shè)計(jì)要求。這中間,我們也遇到了許多困難,在老師的幫助下,一個個也都戰(zhàn)勝了。</p><p><b> ?。?參
113、考文獻(xiàn)</b></p><p> [1] 李忠國.單片機(jī)應(yīng)用技能訓(xùn)練[M].北京:人民郵電出版社,2006.</p><p> [2] 何立民.潛入式系統(tǒng)可靠性設(shè)計(jì)得探討[J ]浙江:浙江大學(xué)學(xué)報,1998(增刊)</p><p> [3] 劉守義.智能卡技術(shù)[M].西安:西安電子科技大學(xué)出版社,2004. </p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)門禁系統(tǒng)設(shè)計(jì)
- 單片機(jī)藍(lán)牙門禁課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于rfid的門禁系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)病房呼叫系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)轉(zhuǎn)速測量系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)溫度測量系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)串行通訊
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時鐘
- 單片機(jī)課程設(shè)計(jì)報告---單片機(jī)控制秒表系統(tǒng)
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時鐘
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的水位控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制步進(jìn)電機(jī)
評論
0/150
提交評論