基于ARM的門禁系統(tǒng)設(shè)計(jì)_第1頁
基于ARM的門禁系統(tǒng)設(shè)計(jì)_第2頁
基于ARM的門禁系統(tǒng)設(shè)計(jì)_第3頁
基于ARM的門禁系統(tǒng)設(shè)計(jì)_第4頁
基于ARM的門禁系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于ARM的門禁系統(tǒng)設(shè)計(jì)摘要隨著人類生活水平、認(rèn)知水平和人們對安防要求的不斷提高以及工業(yè)自動化的蓬勃發(fā)展,智能化管理已經(jīng)走進(jìn)了人們的社會生活,而在智能化管理中,門禁監(jiān)控系統(tǒng)得到了越來越多的應(yīng)用,門禁,又稱出入管理 HYPERLINK /htm_tech/listpage7_6.htm o 控制 t _blank 控制系統(tǒng),是一種管理人員進(jìn)出的數(shù)字化管理系統(tǒng)。但傳統(tǒng)的門禁監(jiān)控系統(tǒng)一般采用門禁控制和視頻圖片攝錄相分離的實(shí)現(xiàn)辦法,這給現(xiàn)場布線帶來了很多的不便,同時(shí)其成本也會大大提高。所以,設(shè)計(jì)穩(wěn)定性高、保密性強(qiáng)和易于擴(kuò)展的較通用型門禁系統(tǒng)具有重要的實(shí)際意義。整個(gè)系統(tǒng)的設(shè)計(jì)采用具有豐富多片內(nèi)外設(shè)的 L

2、PC2368 ARM為微控制器,選用 ZLG522S/LT 讀卡模塊為讀卡器(使用 Mifare 卡),并采用 HUIGANG 繼電器作為門鎖開關(guān),同時(shí)有門狀態(tài)指示燈。系統(tǒng)通過 RS-485 總線與上位機(jī)進(jìn)行通信。該系統(tǒng)具有按用戶與時(shí)間權(quán)限刷卡開門和記錄功能、添加用戶功能、設(shè)置時(shí)間權(quán)限和考勤時(shí)間段,并能將記錄信息通過SD 卡導(dǎo)出。該電子門禁系統(tǒng)具有實(shí)際應(yīng)用中的單門門禁考勤系統(tǒng)的主要功能,并具有穩(wěn)定性、可靠性,保密性強(qiáng)和人機(jī)界面友好的優(yōu)點(diǎn)。關(guān)鍵詞:ARM 微控制器,讀卡模塊,RS-485,SD 卡概述本設(shè)計(jì)皆在完成一個(gè)管理人員進(jìn)出的數(shù)字化出入管理 HYPERLINK /htm_tech/list

3、page7_6.htm o 控制 t _blank 控制系統(tǒng)。在現(xiàn)今的社會生活中,人們已經(jīng)逐漸進(jìn)入并融入到了數(shù)字化電子化的生活,社會的各個(gè)方面都已經(jīng)實(shí)現(xiàn)或基本實(shí)現(xiàn)了數(shù)字化,門禁系統(tǒng)作為人們生活中必不可少的管理類應(yīng)用,在人類的工作中顯得尤為的重要,而對于這樣一個(gè)應(yīng)用,在這樣一個(gè)大的背景下,實(shí)現(xiàn)其數(shù)字化與電子化是十分必要的,智能考勤系統(tǒng)基于現(xiàn)代電子與信息技術(shù),利用智能卡或指紋等生物信息的唯一性來對員工上下班進(jìn)行現(xiàn)代化高效管理,在各廠礦、機(jī)關(guān)、銀行等場合已廣泛應(yīng)用并成為單位管理現(xiàn)代化和信息化的標(biāo)志。但目前很多門禁系統(tǒng)的核心控制單元主要依賴單片機(jī)來實(shí)現(xiàn),它雖然也能完成相應(yīng)的基本功能,但其擴(kuò)展能力有限,

4、在性能和存儲容量等方面已不能很好地滿足人們的要求,然而,隨著嵌入式技術(shù)的不斷發(fā)展,特別是基于ARM 處理器的嵌入式系統(tǒng)由于其可擴(kuò)展性強(qiáng)、穩(wěn)定性高、功耗低、性能和價(jià)格比較合理等特點(diǎn)已在實(shí)際生活中得到了越來越多的應(yīng)用。因此,決定嘗試做一個(gè)基于ARM的電子門禁系統(tǒng)。目前,歐美電子門禁系統(tǒng)市場正逐漸進(jìn)入成熟階段,其產(chǎn)業(yè)的分工已進(jìn)人細(xì)分階段。在國內(nèi),電子門禁系統(tǒng)處于成長期和初始階段。第1章系統(tǒng)總體方案概述1.1系統(tǒng)工作原理系統(tǒng)采用 LPC2368 ARM 為微控制器,選用ZLG522S/LT 讀卡模塊為讀卡器(使用Mifare 卡),并采用HUIGANG 繼電器作為門鎖開關(guān),具有門狀態(tài)指示燈,同時(shí)仿效實(shí)

5、際產(chǎn)品引出必要的接口,如門磁檢測,門內(nèi)開關(guān)接口,門外鈴聲按鈕接口,RS-485 通信接口和電源接口等。系統(tǒng)通過 RS-485 總線與上位機(jī)進(jìn)行通信。該系統(tǒng)具有按用戶與時(shí)間權(quán)限刷卡開門和記錄功能、添加用戶功能、設(shè)置時(shí)間權(quán)限和考勤時(shí)間段,并能將記錄信息通過SD 卡導(dǎo)出。上位機(jī)在 VC 開發(fā)環(huán)境下編程,具有一些實(shí)際電子門禁系統(tǒng)的主要簡單功能。更詳細(xì)的工作原理在下面的軟硬件部分具體給出。1.2 設(shè)計(jì)思想門禁系統(tǒng)由門禁控制器、讀卡器、出門按鈕、通訊集線器、感應(yīng)卡和管理軟件組成。1.2.1 門禁控制器的選擇門禁控制器有多種控制芯片可以選擇,如 8051 系列單片機(jī)、ARM 系列控制器等。由于本門禁考勤系統(tǒng)

6、使用的串行口較多,在速度的要求上較高,而ARM 系列控制器很容易得到滿足。雖然其價(jià)格較貴,但綜合考慮,ARM 系列控制器更適合本系統(tǒng)。在眾多的ARM 控制器中,LPC2300 系列較其他系列的優(yōu)點(diǎn)顯著,十分適用于串行通信的場合。 1.2.2 門禁系統(tǒng)的類型選擇門禁系統(tǒng)一般有以下類型:1. 不聯(lián)網(wǎng)門禁:適用場合:已裝修好不便于重新布線,安全性能要求不高的場合。2. RS-485 聯(lián)網(wǎng)門禁:適用場合:小區(qū)、學(xué)校、倉庫等人數(shù)稍多,門需統(tǒng)一管理,安全性能要求一般的場合。3. CAN-bus 聯(lián)網(wǎng)門禁:適用場合:通信性能穩(wěn)定性要求高,傳輸速度要求快、傳輸距離要求遠(yuǎn)的場合,如金融機(jī)構(gòu)、政府企事業(yè)機(jī)關(guān)等。4

7、. TCP/IP 以太網(wǎng)聯(lián)網(wǎng)門禁:適用場合:適合安裝在大項(xiàng)目、人數(shù)多、速度快、跨地域的工程中。由于本系統(tǒng)的技術(shù)要求和應(yīng)用場所是中距離通信場合,綜合以上四種類型及本系統(tǒng)對安全性的要求不是很高的基礎(chǔ)上,RS-485 聯(lián)網(wǎng)系統(tǒng)可以勝任。1.2.3 感應(yīng)卡的選擇常見的門禁系統(tǒng)有:密碼門禁系統(tǒng)、非接觸 IC 卡(感應(yīng)式IC 卡)門禁系統(tǒng)和指紋虹膜掌型生物識別門禁系統(tǒng)等。密碼門禁系統(tǒng)由于其本身的安全性弱和便捷性差已經(jīng)面臨淘汰;生物識別門禁系統(tǒng)安全性高,但成本高;現(xiàn)在國際最通用的還是非接觸IC 卡門禁系統(tǒng)。非接觸IC 卡由于其較高的安全性,便捷性和性價(jià)比高成為門禁系統(tǒng)的主流。所以該系統(tǒng)使用非接觸IC 卡。非

8、接觸IC 卡RS-485 門禁考勤系統(tǒng)示意圖如圖1-1所示。圖 1-1 非接觸IC 卡RS-485 門禁考勤系統(tǒng)示意圖第2章硬件設(shè)計(jì)技術(shù)文檔本設(shè)計(jì)為門禁考勤系統(tǒng),顧名思義,其兼具門禁和考勤的功能。下面為本系統(tǒng)的硬件設(shè)計(jì)說明。2.1 門禁考勤系統(tǒng)的功能框圖見圖2-1圖 2-1 門禁考勤系統(tǒng)的功能框2.2 硬件電路分析2.2.1 電路原理圖(見圖2-2)圖 2-2 門禁考勤系統(tǒng)電路原理圖2.2.2 硬件使用的資源LPC2368 是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的 32/16 位ARM7TDMI-STM CPU 的微控制器,并帶有512 kB 的嵌入高速Flash 存儲器。128 位寬度的存儲器接

9、口和獨(dú)特的加速結(jié)構(gòu)使32 位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16 位Thumb 模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。其特別適合于串行通信的場合。LPC2368 內(nèi)部由512K 的Flash,58K 的片內(nèi)SRAM,包括32K 的局部總線SRAM、8K 的USB 使用的SRAM、16K 的以太網(wǎng)SRAM 和2K 的電池SRAM。此門禁考勤系統(tǒng)只使用了片內(nèi) Flash、局部總線SRAM 和2K 的電池SRAM,沒有外部擴(kuò)展存儲器。如表2-1 所示,為LPC2368I/O 口的使用和分配表。表 2-1 LPC2368I/O 口的使用和分配表功能模塊使用LP

10、C2368引腳引腳功能看門狗復(fù)位P124給SP706S喂狗串口UARTO(RS-232C和RS-485)接口P0.2(TXDO)串口UARTO的輸出輸入P0.3(RXDO)P1.22(GPIO)RSM485CHT的收發(fā)控制讀卡器模塊P0.10(TXD2)微控制器與讀卡模塊的UART通信接口P0.11(RXD2)P0.27(SDAO)微控制器與讀卡模塊的I2C通信接口P0.28(SCLO)P2.11(INT)按鍵和門內(nèi)開關(guān)P0.6P0.9四個(gè)獨(dú)立按鍵P0.23門內(nèi)開門開關(guān)輸入指示燈P1.28門關(guān)閉指示燈P1.29門打開指示燈繼電器和蜂鳴器P1.26繼電器控制端(高電平有效)P1.27直流蜂鳴器控

11、制(低電平有效)門磁檢測P1.25檢測門磁狀態(tài)(低電平為門開)SD卡接口P0.21、P0.22、P2.11、P2.12、P2.13、P0.20、P0.19、P2.8、P3.25引腳具體說明見表2-3ZLG7290接口P0.0(SDAO)此接口出去次三接口外,還有電源和地接口2.2.3 各個(gè)部分單元電路原理及其分析1. 電源電路系統(tǒng)設(shè)計(jì)為 3.3V 應(yīng)用系統(tǒng),但是LPC2300 系列ARM 微控制器需要2種類型的電源,分別是3.3V 和1.8V,而與PC 機(jī)通信使用的RS-485 收發(fā)器(RSM485CHT)和繼電器都是5V 器件,所以設(shè)計(jì)5V 電源為系統(tǒng)前級電源,3.3V 為后級電源。對于LP

12、C2300 系列ARM 的1.8V 內(nèi)核供電,本系統(tǒng)使用片內(nèi)的DC-DC,由于本系統(tǒng)沒有使用AD/DA 功能,所以不區(qū)分模擬電源和數(shù)字電源。如圖 2-3(a)、(b)所示,首先由CON30 電源接口輸入9V 直流電源,二極管D11 防止電源反接,經(jīng)過C11、C12 濾波,再通過LM2575 將電源穩(wěn)壓至5V,然后通過L2、C111、C110 組成的濾波電路,輸出穩(wěn)定的低紋波5V 電壓,再使用LDO 芯片(低壓差電源芯片)穩(wěn)壓輸出3.3V 電壓??紤]到系統(tǒng)長時(shí)間處于工作狀態(tài),從節(jié)能方面考慮采用了開關(guān)電源LM2575 設(shè)計(jì)。系統(tǒng)使用的電源是 9V 直流電源,由CON30 電源接口輸入,接頭上的電源

13、極性為外正內(nèi)負(fù)。當(dāng)系統(tǒng)上電后,POWER 指示LED1 應(yīng)點(diǎn)亮。LDO 芯片采用了SPX1117M3-3.3,其特點(diǎn)為輸出電流大,輸出電壓精度高,穩(wěn)定性高。圖 2-3 系統(tǒng)前后級電源和RTC 電源電路LPC2300 系列ARM 集成有RTC 外設(shè),其單獨(dú)供電,此次設(shè)計(jì)中提供了兩種供電方式,系統(tǒng)電源和外部電池供電,如圖2-3(c)所示。系統(tǒng)電源方式便于調(diào)試系統(tǒng)時(shí)使用,電池供電方式在實(shí)際應(yīng)用中使用。2. 時(shí)鐘系統(tǒng)、RTC 時(shí)鐘電路系統(tǒng)采用 ARM 嵌入式工業(yè)控制模塊T2368 中的最小系統(tǒng),其中使用外部12.000MHz 無源晶振作為主時(shí)鐘源。對于實(shí)時(shí)時(shí)鐘(RTC)功能,在CPU的RTCK1 和R

14、TCK2 腳之間接一個(gè)32.768KHz 的晶振。3. 看門狗復(fù)位電路由于 ARM 芯片的高速、低功耗、低工作電壓等特性導(dǎo)致其噪聲容限低,對電源的紋波、瞬態(tài)響應(yīng)性能、時(shí)鐘源的穩(wěn)定性、電源監(jiān)控可靠性等諸多方面也提出了更高的要求。使用了專用微處理器電源監(jiān)控芯片SP706S 以提高系統(tǒng)的可靠性,同時(shí)該芯片還帶有硬件看門狗電路。如圖 2-4 所示,在電路中將看門狗復(fù)位信號輸出腳( WDO )通過R32 連接到 SP706S 的手動復(fù)位輸入腳( MR )上,信號nRST 連接到CPU 的復(fù)位腳nRST??赏ㄟ^定時(shí)翻轉(zhuǎn) P1.24 的電平來喂狗,一旦在1.6 秒內(nèi)未翻轉(zhuǎn)P1.24 的電平,則SP706S

15、內(nèi)部的看門狗溢出,WDO 腳輸出低電平, MR 腳被WDO 腳拉低為低電平,導(dǎo)致SP706S 在RST腳輸出200ms 的復(fù)位脈沖令CPU 復(fù)位,同時(shí)SP706S 內(nèi)部清零看門狗讓其重新計(jì)數(shù)。圖 2-4 系統(tǒng)復(fù)位電路當(dāng)復(fù)位按鍵RST 按下時(shí),SP706S 的RST腳輸出低電平復(fù)位系統(tǒng)。4. 串口 UART0(RS-232C 和 RS-485)接口由于系統(tǒng)是 3.3V ,所以使用了SP3232E 進(jìn)行RS-232C 電平轉(zhuǎn)換,SP3232E 是3V 工作電源的RS-232C 轉(zhuǎn)換芯片。如圖2-5 所示,CON2 為UART0接口,可以在串口調(diào)試階段使用,在實(shí)際應(yīng)用中,則要使用CON3 的RS-4

16、85接口。RS-485 收發(fā)器采用嵌入式隔離RS-485 收發(fā)器RSM485CHT,如圖2-5(c)所示。RSM485CHT 隔離收發(fā)器模塊,是集成電源隔離、電氣隔離、RS-485接口芯片,總線保護(hù)器件于一身,其為5V 工作電源器件。電路設(shè)計(jì)中采用保守方法,加入了PESD1CAN 隔離,是系統(tǒng)穩(wěn)定性更高。RS-232C 與RS-485 功能可以通過跳線JP2 來切換,如圖2-5(b)。JP2跳線器說明見表2-2。圖 2-5 UART0(RS-232C AND RS-485)接口JP2功能備注控制器的UART0與CON2(RS-232C)連接(模式1)串口調(diào)試時(shí)使用控制器的UART0與CON3(

17、RS-485C)連接(模式2)實(shí)際應(yīng)用中使用5. JTAG 接口電路和ISP 跳線電路采用 ARM 公司提出的標(biāo)準(zhǔn)20 腳JTAG 仿真調(diào)試接口,JTAG 信號的定義及與T2368 的連接如圖2-6(a)所示。其中RTCK 引腳加上拉電阻,使系統(tǒng)重啟后,LPC2368 內(nèi)部的JTAG 接口使能,可以直接進(jìn)行JTAG 仿真調(diào)試,同時(shí)P29:0引腳不為跟蹤功能;當(dāng)要使用 ISP 功能時(shí),將PC 的串口與CON2 相連,并將跳線JP2 設(shè)置為第一種模式,使用UART0 通信。同時(shí)把JP1(如圖2-6 JTAG 接口電路(c)短接,是ISP 的硬件條件得到滿足。圖 2-6 JTAG 接口電路6. 讀卡

18、模塊現(xiàn)在,門禁考勤系統(tǒng)一般都使用非接觸式無線智能卡,Mifare 卡就是其中的一員,可以實(shí)現(xiàn)一卡通功能,具有數(shù)據(jù)傳送速度快、防碰撞、保密性高等特點(diǎn)。讀卡器采用 ZLG500S 系列讀卡模塊(ZLG522S/LT),ZLG522S/LT 為3.3V 供電,具有I2C 和UART 兩種通信接口,和天線一體化,主動檢測卡片進(jìn)入的模塊。此系統(tǒng)中,將兩種接口都引出來,但只使用UART 接口,如圖2-7(b)所示。圖 2-7 讀卡模塊7. 按鍵、門內(nèi)開關(guān)和指示燈此系統(tǒng)中設(shè)計(jì)了四個(gè)獨(dú)立按鍵、一個(gè)門內(nèi)開關(guān)按鈕接口和門狀態(tài)指示燈(紅:門關(guān);綠:門開)、下位機(jī)向PC 機(jī)發(fā)送信息指示燈(通信時(shí)閃爍),如圖2-8(a

19、)(b)所示。圖 2-8 按鍵、門內(nèi)開關(guān)和指示燈電路8. 繼電器和蜂鳴器此系統(tǒng)應(yīng)用繼電器做開門開關(guān);且有蜂鳴器提示聲。繼電器采用 HUIGANG 繼電器,其為5V 工作器件,而系統(tǒng)為3.3V 系統(tǒng),所以在設(shè)計(jì)上采用了NPN 三極管來實(shí)現(xiàn)3.3V 系統(tǒng)控制5V 的器件,用P1.26控制(高電平閉合),驅(qū)動電路如圖2-9(a)所示;直流蜂鳴器,用P1.27 控制(低電平蜂鳴),驅(qū)動電路如圖2-9(b)所示。兩個(gè)驅(qū)動中的二極管起到繼流的作用。圖 2-9 繼電器和蜂鳴器驅(qū)動電路9. SD 卡接口系統(tǒng)使用LPC2368 為控制器,使用該內(nèi)部自帶SD/MMC 卡控制器來訪問SD 卡。LPC2368 與SD

20、/MMC 卡卡座的連接引腳LPC2368 微控制器與SD/MMC 卡卡座接口電路如圖2-10 所示。圖中,微控制器與 SD/MMC 卡卡座的連接引腳如表2-3 所示。表 2-3 LPC2368 與SD/MMC 卡卡座的連接引腳LPC2368 引腳引腳名稱卡座引腳含義P0.21SDPWR-卡供電控制引腳。P0.21 為低電平時(shí)給卡供電P0.22SDDATA0DAT0/DO雙向的數(shù)據(jù)信號DAT0P2.11SDDATA1DAT1/IRQ雙向的數(shù)據(jù)信號DAT1P2.12SDDATA2DAT2雙向的數(shù)據(jù)信號DAT2P2.13SDDATA3DAT3/CS雙向的數(shù)據(jù)信號DAT3P0.20SDCMDCMD/D

21、I雙向的命令/響應(yīng)信號P0.19SDCLKCLK/SCK微控制器向卡發(fā)送的用于同步雙方通信的時(shí)鐘信號P2.8SD_CDCARD_INSRET卡完全插入到卡座中檢測線。完全插入時(shí),卡座輸出低電平,否則輸出高電平P3.25SD_WPCARD_WP看是否寫保護(hù)檢測。寫保護(hù)時(shí),卡座輸出高電平;否則輸出低電平圖 2-10 SD/MMC 卡的SD 總線接口電路接口電路包括以下部分:(1)SD 總線如圖 2-10 所示,LPC2368 的P0.22、P2.11、P2.12、P2.13、P0.20 根據(jù)引腳功能,直接連接到卡座的相應(yīng)接口,其中數(shù)據(jù)線DAT0DAT3 雙向數(shù)據(jù)線P0.22、P2.11、P2.12

22、、P2.13 和命令線P0.20 分別接上拉電阻。(2) SD/MMC 卡ESD 保護(hù)電路如圖 2-10 所示,在卡座的數(shù)據(jù)總線DAT0DAT3、時(shí)鐘線CLK 和命令線CMD 上,使用了一個(gè)ESD 保護(hù)器件PESD5V0L6U,作用是:當(dāng)SD/MMC卡插入或拔出時(shí),保護(hù)卡不受高壓靜電的損害。(3) 卡供電控制卡的供電采用可控方式,這是為了防止 SD/MMC 卡進(jìn)入不確定狀態(tài)時(shí),可以通過對卡重新上電使卡復(fù)位而無需拔卡??煽仉娐凡捎肞 型MOS 管2SJ355,有微控制器的GPIO 口P0.21 進(jìn)行控制。采用 2SJ355 的目的是當(dāng)它開通時(shí),管子上的壓降比較小。(4) 卡檢測電路包括:卡是否完

23、全插入到卡座中和卡是否寫保護(hù)。檢測信號由卡座的兩個(gè)引腳以電平的方式輸出。當(dāng)卡插入到卡座并插入到位時(shí),卡座的CARD_INSERT(第10 腳)由于卡座內(nèi)部觸點(diǎn)連接到GND,輸出低電平;當(dāng)卡拔出時(shí),該引腳由于上拉電阻R83 的存在而輸出高電平,該輸出由微控制器的輸入引腳GPIO(P2.8)來檢測。卡是否寫保護(hù)的檢測與卡是否完全插入到卡座中的檢測原理是一樣的。10. TinyARM2300 接口圖 2-11 底板與核心板接口電路以上介紹的是此系統(tǒng)的底板電路設(shè)計(jì),下面是底板與核心板T2368 的接口排針(2.00mm),如圖2-11 所示。此系統(tǒng)只使用了T2368 中的LPC2368最小系統(tǒng),所以只

24、給出此最小系統(tǒng)的原理圖,如圖2-12 所示。T2368 中的以太網(wǎng)接口沒有使用,不區(qū)分模擬地和數(shù)字地。圖 2-12 T2368 核心板的最小系統(tǒng)電路圖11. 外部測試板、外部接口和剩余 IO 引出插針如所示,其有繼電器指示燈,門磁模擬和門內(nèi)開門開關(guān)三部分組成。如圖 2-13(b)所示,其為此次設(shè)計(jì)的外部接口和幾個(gè)測試點(diǎn),P1.25 為門磁檢測輸入端,BELL_1 和GND 為外部按鈴接口,RelayA 和RelayB 為繼電器輸出接口,BELL_2 為門內(nèi)開門開關(guān)接口。圖 2-13(a)和(c)為剩余IO 引出排針和與ZLG7290 相連的接口,為系統(tǒng)的更新和升級做好準(zhǔn)備。圖 2-13 外部接

25、口和剩余IO 引出接口注:由于此次制板為單面腐蝕制板,所以圖2-11 中的(a)(b)在此次制板中沒有引出。第3章軟件設(shè)計(jì)說明3.1 軟件任務(wù)軟件設(shè)計(jì)分為下位機(jī)和上位機(jī)兩大塊。下位機(jī)軟件任務(wù):以 LPC2368 芯片為主微控制器,對硬件的各個(gè)模塊(各模塊參見硬件技術(shù)文檔)進(jìn)行控制,制作一個(gè)具有刷卡開門和記錄功能的門禁考勤系統(tǒng),編程實(shí)現(xiàn)如下功能:1. 按時(shí)間和權(quán)限刷卡開門及在不同時(shí)間段內(nèi)考勤功能;2. 記錄刷卡事件、 記錄考勤信息、 添加用戶發(fā)卡功能;3. 與 PC 機(jī)通訊使用RS-485 總線,可以將用戶數(shù)據(jù)下載到下位機(jī)系統(tǒng)中、 將記錄信息導(dǎo)出到 SD 卡上;上位機(jī)軟件任務(wù):上位機(jī)軟件的任務(wù)主

26、要是與下位機(jī)通過定義的 RS-485 協(xié)議,進(jìn)行通信,進(jìn)而實(shí)現(xiàn)以下功能:1. 將用戶數(shù)據(jù)下載到下位機(jī)系統(tǒng)中;2. 顯示刷卡信息、 發(fā)卡功能;3. 設(shè)定時(shí)間權(quán)限和考勤時(shí)間段、 查看刷卡記錄功能;4. 開門功能: 設(shè)置刷卡后的允許開門時(shí)間長度(即刷卡開門后,在這個(gè)時(shí)間內(nèi)門沒有打開,則系統(tǒng)將門關(guān)閉);3.2 下位機(jī)軟件設(shè)計(jì)資源分配本設(shè)計(jì)應(yīng)用前后臺系統(tǒng),使用到的LPC2368 片內(nèi)外設(shè)和I/O 口使用參見硬件技術(shù)文檔。下面介紹一下微控制器片內(nèi)部分存儲器的使用和分配。3.2.1 512K 片內(nèi)Flash 部分扇區(qū)和電池SRAM 分配片內(nèi) Flash 部分扇區(qū)分配如圖3-1 所示,池SRAM 地址分配如圖

27、3-2 所示。圖 3-1 片內(nèi)Flash 部分扇區(qū)分配 圖 3-2 電池SRAM 地址分配 3.2.2 后臺任務(wù)和中斷優(yōu)先級分配后臺任務(wù)和中斷優(yōu)先級分配如下表 3-1 所示:表 3-1 VIC 中斷功能和優(yōu)先級分配中斷源功能VIC 優(yōu)先等級串口UART0與上位機(jī)通信0GPIO(P0口)的EINT3中斷收鍵1TIMER2(1)中斷收鍵延時(shí),(2)繼電器工作2UART2與ZLG522S/LT 讀卡器通信3RTC(1)檢查門磁,點(diǎn)亮門狀態(tài)燈,并將門狀態(tài)發(fā)送到上位機(jī),(2)門處于開狀態(tài)過長,則關(guān)閉門,(3) 更新開門時(shí)間權(quán)限段和考勤時(shí)間段43.3 下位機(jī)軟件設(shè)計(jì)3.3.1 下位機(jī)軟件設(shè)計(jì)整體思想系統(tǒng)中

28、有四種模式,分別為:刷卡開門考勤模式、發(fā)卡模式、RS-485 協(xié)議處理模式、將記錄數(shù)據(jù)導(dǎo)出到SD 卡中。通過按鍵KEY1 的值來判斷系統(tǒng)該工作在那種模式和切換模式。對于處理上位機(jī)命令、中斷延時(shí)收鍵和RTC 中斷的功能則在后臺處理。3.3.2 主程序的流程框架作為前臺的主函數(shù),首先對使用到的 GPIO 口、各個(gè)模塊和外設(shè)進(jìn)行初始化,然后進(jìn)入模式選擇循環(huán),其流程框圖如圖3-3 所示。3.3.3 主要功能模式刷卡開門和考勤模式程序設(shè)計(jì)1. 刷卡開門和考勤模式主程序設(shè)計(jì)此模式是此設(shè)計(jì)的主要功能,系統(tǒng)通過讀卡器讀出進(jìn)入讀卡范圍內(nèi)的Mifare 卡序列號,然后查詢系統(tǒng)中的用戶數(shù)據(jù)庫,然后進(jìn)行用戶權(quán)限級別和

29、時(shí)間權(quán)限的判斷,從而進(jìn)行相應(yīng)的處理(記錄刷卡信息和考勤信息)。用戶權(quán)限是指權(quán)限是大權(quán)限,還是小權(quán)限,大權(quán)限用戶則不受時(shí)圖 3-3 主程序流程框圖間的約束,隨時(shí)可以刷卡開門;小權(quán)限用戶則在設(shè)定的時(shí)間段內(nèi)才可以開門。此權(quán)限在發(fā)卡的時(shí)候確定。時(shí)間權(quán)限是指,小權(quán)限用戶在哪個(gè)時(shí)間段內(nèi)可以刷卡開門。此時(shí)間段可以通過上位機(jī)來隨時(shí)設(shè)置。此模式主程序流程框圖如圖 3-4 所示。圖 3-4 刷卡開門和考勤模式主程序流程框圖2. 主要子函數(shù)的程序設(shè)計(jì)系統(tǒng)模式中主要子函數(shù)有:主控制器和 ZLG522S/LT 讀卡模塊與Mifare卡通信、用戶查詢函數(shù)、刷卡記錄函數(shù)與考勤處理和記錄函數(shù)。(1)主控制器和ZLG522S/

30、LT 讀卡模塊與Mifare 卡通信調(diào)用ZLG522S模塊的操作軟件包,主要是讀卡器對Mifare 卡的一系列操作此模式中對卡片的請求使用“標(biāo)準(zhǔn)模式”。(2)用戶查詢函數(shù)、刷卡記錄函數(shù)與考勤處理和記錄函數(shù)用戶信息、刷卡事件記錄和考勤事件記錄,是三個(gè)結(jié)構(gòu)體,同時(shí)開門時(shí)間權(quán)限和考勤段的設(shè)置也是一個(gè)結(jié)構(gòu)體,如程序清單3-1 所示。用戶查詢函數(shù)作用是在讀到Mifare 卡序列號后,查詢“用戶信息存儲區(qū)”,如果有此用戶,則返回True 和此用戶信息的首地址,否則返回False。刷卡記錄函數(shù)的作用是將刷卡的信息記錄在存儲器中,程序流程圖如圖3-5 所示。考勤記錄函數(shù)的作用是將考勤的信息記錄在存儲器中,其程

31、序流程圖和刷卡記錄函數(shù)的流程圖類似,不再贅述。程序清單3-1 定義的結(jié)構(gòu)體struct infoUser1 /* 用戶信息(6 個(gè)字) */uint32 cardNO;char name8;char phoneNO11;char limet;struct eventRcd1 /* 刷卡事件記錄結(jié)構(gòu)體(6) */uint32 cardNO;char name8;uint32 active;uint32 datas;uint32 times;struct attdRcd1 /* 考勤事件記錄結(jié)構(gòu)體(5) */uint32 cardNO;char name8;uint32 datas;uint32

32、times;struct timeamr1 /* 開門權(quán)限設(shè)置結(jié)構(gòu)體 */uint8 alhour;uint8 almin;uint8 purview; /* 開門時(shí)間權(quán)限3:no;1:yes */uint8 check; /* 考勤階段標(biāo)志3:no; */* 1:yes 第一階段;2:yes 第二階段*/;考勤處理函數(shù)的功能,是判斷現(xiàn)在是否為考勤時(shí)間段,如果在則進(jìn)行考勤,否則不考勤。此系統(tǒng)中,設(shè)置了兩個(gè)考勤時(shí)間段,并且可以用上位機(jī)來設(shè)置。其功能實(shí)現(xiàn)思想,是在每個(gè)考勤時(shí)間段內(nèi),將用戶第一次刷卡做為考勤信息,且同時(shí)在卡片的指定存儲塊內(nèi)設(shè)置一個(gè)標(biāo)志,當(dāng)此用戶再次刷卡時(shí),就不對其進(jìn)行考勤。3.3.4

33、 主要功能模式發(fā)卡模式一些門禁系統(tǒng),都有專門的發(fā)卡器。而此項(xiàng)功能完全可以在一個(gè)系統(tǒng)中完成。此系統(tǒng)中的發(fā)卡模式,能夠?qū)⑸衔粰C(jī)的新用戶信息寫到新卡片的指定存儲塊內(nèi),并將新用戶添加到用戶信息存儲區(qū)。模式的工作流程如圖3-6 所示。此模式中,將新用戶數(shù)據(jù)添加到用戶信息存儲區(qū)時(shí),用到了LPC2300 系列ARM 的在應(yīng)用編程(IAP)功能。由于此次試驗(yàn)中的用戶比較少,所以,在添加新用戶時(shí),先將原有用戶信息拷貝到一個(gè)數(shù)組中,再將新用戶信息添加到該數(shù)組中,然后將更新了的用戶信息燒寫到Flash 中。同時(shí)更改用戶數(shù)量也用到了IAP 功能,原理與此類似。3.3.5 RS-485 通信協(xié)議定義1. 通信協(xié)議概述門

34、禁考勤系統(tǒng)分為下位機(jī)和上位機(jī),二者通過 RS-485 來通信,所以根據(jù)此系統(tǒng)的特點(diǎn),定義了一個(gè)RS-485 通信協(xié)議。該協(xié)議可以分為功能層、通信協(xié)議層和通信驅(qū)動層,但是由于其要實(shí)現(xiàn)的功能比較簡單,所以將功能層與通信協(xié)議層合二為一,分為功能協(xié)議層和通信驅(qū)動層:(1) 通信驅(qū)動層:本層負(fù)責(zé)從通信接口UART0 發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。(2) 功能協(xié)議層:下位機(jī)與上位機(jī)通信定義了一套協(xié)議,本層負(fù)責(zé)把要發(fā)送的數(shù)據(jù)和命令按協(xié)議進(jìn)行組裝和把接收到的數(shù)據(jù)按協(xié)議進(jìn)行解析。圖 3-6 發(fā)卡模式工作流程框圖2. 通信驅(qū)動層此驅(qū)動層就是 LPC2368 的片內(nèi)外設(shè)UART0。 3. 功能協(xié)議層(1) 通信幀結(jié)構(gòu)下位機(jī)和

35、上位機(jī)通信的幀結(jié)構(gòu)如圖 3-7 所示,各字段的意義見表3-2。圖 3-7 RS-485 通信幀結(jié)構(gòu)表3-2 通信幀各字段意義字段長度(Byte)說明幀頭STX01數(shù)據(jù)幀的起始位,數(shù)值為:0 x2A目的機(jī)地址AIM1此數(shù)據(jù)幀是發(fā)給地址為AIM 的節(jié)點(diǎn)源機(jī)地址ORG1此數(shù)據(jù)幀是從地址為ORG 的節(jié)點(diǎn)發(fā)出總幀長FrameLen1整個(gè)數(shù)據(jù)幀的總長度命令類型Cmd1發(fā)送數(shù)據(jù)節(jié)點(diǎn)發(fā)給接收節(jié)點(diǎn)的數(shù)據(jù)用途或命令(命令集參見下位機(jī)程序文件UART0.h 和上位機(jī)文件protocol.h)信息長度InfoLen1該幀所帶信息的長度若所發(fā)信息長度為0,則Length = 0信息InfoInfoLen信息數(shù)據(jù),其長度

36、由InfoLen 字段指出,當(dāng)InfoLen = 0時(shí),則該字段不存在校驗(yàn)和BCC1校驗(yàn)和。從STX0 開始到Info 的最后一個(gè)字節(jié)的異或,最后取反幀結(jié)束符ETX01幀結(jié)束標(biāo)志,數(shù)值為:0 x054. 發(fā)送數(shù)據(jù)到上位機(jī)下位機(jī)發(fā)送數(shù)據(jù)到上位機(jī)函數(shù)如下所示。/* 函數(shù)名稱: RS485_Send* 函數(shù)功能: 通過 RS-485 發(fā)送數(shù)據(jù)到上位機(jī)* 輸入?yún)?shù): nCMD: 命令類型;pInfo: 要發(fā)送信息的指針;nInfoLen1:要發(fā)送信息的長度* 輸出參數(shù): 無*/void RS485_Send(uint8 nCMD,const void *pInfo, uint8 nInfoLen)ui

37、nt8 SendBuf60; / 發(fā)送緩沖區(qū)RS485_SEND(); / 將RSM485CHT 隔離收發(fā)器設(shè)置為發(fā)送模式/ 組裝數(shù)據(jù)SendBufFRAME_START = STX0;SendBufAIM_ADDR = AIM;SendBufORG_ADDR = ORG;SendBufFRAME_LEN = nInfoLen+PROTOCOL_485_LEN; / 幀長SendBufCMD_CODE = nCMD; / 命令碼SendBufINFO_LEN = nInfoLen; / 信息長度memcpy(&SendBufINFO, pInfo, nInfoLen); / 信息SendBuf

38、BCC+nInfoLen= CheckSum(SendBuf,SendBufFRAME_LEN - 2); / 校驗(yàn)碼/ CheckSum()為計(jì)算校驗(yàn)碼函數(shù)SendBufFRAME_END + nInfoLen = ETX0;/ 發(fā)送數(shù)據(jù)UART0_Send(SendBuf, (uint32)SendBufFRAME_LEN);RS485_RECEIVE(); / 將RSM485CHT 隔離收發(fā)器設(shè)置為接收模式程序?qū)瑑?nèi)各字段填入發(fā)送緩沖區(qū),最后調(diào)用通信驅(qū)動層函數(shù)UART0_Send 把緩沖區(qū)的數(shù)據(jù)發(fā)送出去。5. 接收上位機(jī)命令和數(shù)據(jù)下位機(jī)接收上位機(jī)命令和數(shù)據(jù)的函數(shù)如下所示:/* 函數(shù)名稱:

39、IRQ_UART0* 函數(shù)功能:串口 0 接收中斷服務(wù)程序* 入口參數(shù):無* 出口參數(shù):無*/void _irq IRQ_UART0(void)uint32 i = 0;uint32 IIR = 0;/* UART0 接收中斷處理 */while (IIR = U0IIR) & 0 x01) = 0) / 若尚有中斷待處理switch (IIR & 0 x0e)case 0 x04: /* RDA中斷處理入口 */for (i = 0; i (8 - 1); i+)GuiUAT0DataBufGuiRcvNum+ = U0RBR;/ 讀空FIFO,清除RDA 中斷break;case 0 x0

40、c: /* CTI 中斷處理入口 */while (U0LSR & 0 x01) != 0)GuiUAT0DataBufGuiRcvNum+ = U0RBR;if (GuiUAT0DataBufGuiRcvNum - 1 = ETX0)/ 檢驗(yàn)各字段的合法性/ 檢驗(yàn)幀起始位if (GuiUAT0DataBufFRAME_START != STX0)GuiRcvNum = 0;return FALSE;/ 檢驗(yàn)信息歸屬性if (GuiUAT0DataBufAIM_ADDR != ORG)GuiRcvNum = 0;return FALSE;/ 檢驗(yàn)幀總數(shù)據(jù)長度if (GuiRcvNum Load

41、 Image加載要 HYPERLINK / t _blank 下載到FLASH的調(diào)試文件。第17問: Q:在ADS中是否可以進(jìn)行軟件調(diào)試基于UCOS-II的程序 A:ADS軟件調(diào)試只能調(diào)試 HYPERLINK t _blank arm的內(nèi)核,不能調(diào)試外設(shè)。但是取消 PLL 鎖定檢測后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上。開始移植時(shí)軟件仿真是最好的工具。第18問: Q: HYPERLINK t _blank armulate軟件是干什么的 2104不是用EasyJTAG.dll來仿真嗎 A:軟件仿真只能仿真 HYPERLINK t _blank arm 核。第19問: Q:有關(guān)LPC2106.I

42、NC的問題。我無法在project引用lpc2106.inc文件,只能引用lpc2106.h文件, 這是什么原因 且當(dāng)我的主程序用匯編編寫時(shí),不能引用lpc2106.h,用lpc2106.inc則無法加入project,請問匯編器應(yīng)如何設(shè)置 A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加 include 2106.inc. 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器。第20問: Q:入口點(diǎn)是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時(shí)總是提示我 Image does not have an entry point,可是我是

43、把光盤的vetctors.s 復(fù)制過來的,而且仔細(xì)看了看,已經(jīng)聲明了ENTERY,這是怎么回事A:需要在ADS中設(shè)置入口。第21問: Q:請教:如何定義不被初始化變量 A:讓編譯器不知道有這個(gè)內(nèi)存地址即可。 A:如用分散加載文件分配RAM故意預(yù)留一部分RAM不分配,用它來存您不需要初始化的東西。或者不調(diào)用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些。第22問: Q:我直接通過JTAG口 HYPERLINK / t _blank 下載EasyArm板帶的Ext1_test程序到 HYPERLINK t _blank arm中,出現(xiàn)中斷向量的告警: interrupt vector is no

44、t correct HYPERLINK t _blank arm is not running freely. 果然復(fù)位后芯片不能運(yùn)行。但是我用串口 HYPERLINK / t _blank 下載后芯片能正常工作,中斷也行的。 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨(dú)JTAG口 HYPERLINK / t _blank 下載不行。 不知道是什么原因 A:仿真器配置中要設(shè)置Erase Flash when need.也可以這樣試試: 1.可以先打開一個(gè)工程在RAM中調(diào)試運(yùn)行; 2.stop程序; 3.使用File-Load Image重新加載Ext1_test生成的*.axf文

45、件。 Q:仿真器配置中我是設(shè)置了Erase Flash when need,但照你說的話,那不是在RAM下調(diào)試嗎 在RAM下調(diào)試我是可以的,但是下載后出現(xiàn)interrupt vector data is not correct. 我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊 A:是的,是向量表的累加和不為零。 因?yàn)槿绻肐SP下載能運(yùn)行,說明向量表的累加和已為零,而用JTAG下載不能運(yùn)行的情況可能是 沒有正常下載代碼。先在RAM中調(diào)試,目的是為了后面正確下載程序到FLASH.第23問: Q:用Scatter怎樣將某個(gè)函數(shù)或文件定位在Flash的某個(gè)位置 第24問: Q:我在仿真時(shí)

46、遇到這樣的提示: Error, Flash is protected by user configation! 怎么寫到flash里面呢 A:看配套 HYPERLINK t _blank arm微控制器基礎(chǔ)與實(shí)戰(zhàn)附錄一。第25問: Q:我在移植實(shí)驗(yàn)中想到了兩個(gè)問題,如下: 1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實(shí)驗(yàn)時(shí),要用Release 2.在Release中為什么要將RW Base設(shè)置為0 x40000040 我將其設(shè)置為0 x40003000, 為什么不能工作 A:都只是一個(gè)問題,內(nèi)存空間的使用,因?yàn)榕躉S要比較大的內(nèi)存空間,所以要騰出點(diǎn)地方。

47、第26問: Q:請問沒有MMU的 HYPERLINK t _blank arm芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存 A:是否支持malloc()函數(shù)與芯片沒有多大關(guān)系,主要與編譯器有關(guān)。 Q:再問:如果沒有操作系統(tǒng)支持呢 A:也支持。第27問: Q:在I2C實(shí)驗(yàn)程序中,我想查看數(shù)據(jù)緩沖區(qū)DataBuf的值,怎么查看 A:watch窗口或鼠標(biāo)停留在要查看的變量名上。 Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標(biāo)在上面根本就不會出現(xiàn)他的值,即使在watch中加入, 結(jié)果也是name not found. A:變量被優(yōu)化,調(diào)試時(shí)可以把該變量定義為全局變量查看。第28問: Q:仿真軟件

48、和2104開發(fā)板連接不上 DBE Warning 00041: !An unspecified Debug Toolbox call failed 電源和開發(fā)板都連好,錯(cuò)誤和沒接開發(fā)板一樣,驅(qū)動也安裝了,安裝時(shí)按確定鍵時(shí),軟件很長時(shí)間才有如上反應(yīng),請幫忙 A:1.并口是否正常 2.在其它操作系統(tǒng)(如98)下或其它臺式PC下試試。第29問: Q:如何生成32位hex文件 我在Release Setting- HYPERLINK t _blank arm fromELF-Output Format中設(shè)置為Intel 32bit HEX,可是好像沒有生成hex文件 A:試試這種方法: Target-

49、Target Setting- ost Link中選擇 HYPERLINK t _blank arm fromELF加上你上面設(shè)的應(yīng)該不成問題。第30問: Q:請問關(guān)于settings中r0 base rw base的意思 A:ro:read only,rw:read and write.第31問: Q:編譯成功后的信息第一行,code,R0 data,RW data,ZI data,debug分別代表什么 A:R0 只讀段,即程序代碼空間; RW 可讀/寫段,即數(shù)據(jù)變量空間; ZI 清零變量段,即需要清零初始化的數(shù)據(jù)變量空間。第32問: Q:如何在ADS里面看任務(wù)執(zhí)行的一些情況 比如堆棧。

50、A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實(shí)現(xiàn)。 ucos下有一個(gè)統(tǒng)計(jì)功能的模塊可以間接實(shí)現(xiàn)部分功能。第33問: Q:請問向flash燒數(shù)據(jù)時(shí)出現(xiàn):exceeds flash limitation 請予賜教! A:要寫入的flash地址超過了范圍。如果不是代碼太大的問題,可以檢查scf文件是否正確。第34問: Q:在LPC2214之類的芯片中如何實(shí)現(xiàn)數(shù)組的絕對地址定位,比如51的_at_的用法。 A:*(char*)0 x40000300)類似訪問 Q:謝謝,但這樣做就無須定義數(shù)組變量,訪問也不便,還有高招嗎 A:可以使用分散加載。第35問: Q:請問 ADS編譯錯(cuò)誤L6221E:Execution r

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論