關(guān) 閉

新聞中心

EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > 基于非接觸IC卡自動(dòng)計(jì)時(shí)停車收費(fèi)系統(tǒng)設(shè)計(jì)

基于非接觸IC卡自動(dòng)計(jì)時(shí)停車收費(fèi)系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2008-03-11 來源:網(wǎng)絡(luò) 收藏

  摘 要:根據(jù)場(chǎng)智能化管理的需要提出了系統(tǒng)設(shè)計(jì)思想。系統(tǒng)硬件設(shè)備由入口設(shè)備、出口設(shè)備和發(fā)卡設(shè)備組成,論述了它們的硬件電路設(shè)計(jì)和軟件設(shè)計(jì),并重點(diǎn)討論了IC卡讀寫的硬、軟件設(shè)計(jì)。

  隨著國民經(jīng)濟(jì)飛速發(fā)展.城市汽車數(shù)量劇增,難問題愈來愈凸現(xiàn),在增加場(chǎng)數(shù)量的同時(shí),提高停車場(chǎng)的智能化管理是解決這個(gè)問題的關(guān)鍵。本設(shè)計(jì)開發(fā)的自動(dòng)計(jì)時(shí)停車收費(fèi)系統(tǒng),以技術(shù)為基礎(chǔ).實(shí)現(xiàn)了停車場(chǎng)收費(fèi)管理現(xiàn)代化,它具有效率高、管理科學(xué)、安全可靠等特點(diǎn)。

  1 系統(tǒng)整體設(shè)計(jì)

  整個(gè)系統(tǒng)硬件設(shè)備由停車場(chǎng)人口設(shè)備、停車場(chǎng)出口設(shè)備和發(fā)卡設(shè)備三部分組成。人口設(shè)備和出口設(shè)備位于停車場(chǎng)人口和出口單機(jī)工作,而發(fā)卡設(shè)備位于管理中心,由控制。三部分設(shè)備的硬件設(shè)計(jì)和主要功能如表1所示。

  表1 設(shè)備硬件組成與功能

  

  硬件組成上,發(fā)卡設(shè)備直接由控制,所以無需鍵盤、LCD模塊等硬件,出口設(shè)備包含人口設(shè)備和發(fā)卡設(shè)備所有的硬件,它們的設(shè)計(jì)只需在出口設(shè)備硬件基礎(chǔ)上去掉相應(yīng)模塊,所以在后面的硬件設(shè)計(jì)介紹中以出口設(shè)備為代表 三種設(shè)備的不同功能由軟件編程實(shí)現(xiàn),出口程序經(jīng)過精簡和簡單的修改可得到人口設(shè)備程序,所以在軟件設(shè)計(jì)中主要討論了出口設(shè)備和發(fā)卡設(shè)備的程序流程。在整個(gè)系統(tǒng)中,是三部分硬件設(shè)備相互聯(lián)系的橋梁,的讀寫程序設(shè)計(jì)是系統(tǒng)實(shí)現(xiàn)的關(guān)鍵,本文將重點(diǎn)討論。

  2 IC卡卡內(nèi)存儲(chǔ)空間的分配

  本設(shè)計(jì)使用PHILIPS公司的MF1 IC卡,卡內(nèi)集成1KB的E2PROM,并劃分為16個(gè)可獨(dú)立使用的扇區(qū),每個(gè)扇區(qū)又分為4個(gè)16字節(jié)的,每個(gè)扇區(qū)的第4個(gè)保存該扇區(qū)的密碼和訪問控制,IC卡中的16個(gè)扇區(qū)可用于16個(gè)不同系統(tǒng)中。本設(shè)計(jì)使用扇區(qū)2,具體存儲(chǔ)空間劃分:塊0的低4個(gè)字節(jié)存儲(chǔ)用戶序列號(hào),塊1存放存儲(chǔ)用戶余額,塊2低7個(gè)字節(jié)存放停車起始時(shí)間 塊3存放兩套6字節(jié)密碼和4寧節(jié)訪問控制。

  3 硬件設(shè)計(jì)

  3.1出口設(shè)備硬件結(jié)構(gòu)

  出口設(shè)備硬件結(jié)構(gòu)如圖1所示.AT89C55單片機(jī)作為控制器,它片內(nèi)集成20KB的程序存儲(chǔ)器,滿足本設(shè)計(jì)對(duì)程序存儲(chǔ)器容量的要求:ZLG7289芯片外接4x4的鍵盤;DS1302為停車計(jì)時(shí)提供準(zhǔn)確時(shí)鐘;LCD液晶顯示各種信息,如按鍵信息、時(shí)間和停車費(fèi)用等:AT24C256存儲(chǔ)用戶結(jié)算信息:通過RS-232 I亍通信:通過ZLG500對(duì)IC卡進(jìn)行讀寫操作:通過P1.7端口向擋車閘電機(jī)控制器發(fā)送開關(guān)車閘信號(hào)。為充分利用單片機(jī)有限的端口,外圍設(shè)備多采用了具有I2C接口f如AT2,4C256、DS1302)和SPI接1:3(如ZLG7289、ZLG500)的器件。

  

  

  

  圖1 出口設(shè)備硬件示意圖

  3.2非接觸IC卡讀寫模塊ZLG500

  ZLG500負(fù)責(zé)對(duì)非接觸IC卡的讀寫操作。需外接PCB天線。ZLG500模塊連接電路如圖2所示.傳輸啟動(dòng)端SS接O,和ZLG500之問發(fā)送數(shù)據(jù),首先由發(fā)送方將SS拉低并且在發(fā)送結(jié)束后將SS拉高,本設(shè)計(jì)中MCU以下降沿中斷觸發(fā)的方式接收ZLG500發(fā)送的數(shù)據(jù).并將O設(shè)置為最高優(yōu)先級(jí),保證第一時(shí)間接收到IC卡數(shù)據(jù)。SCLK為SPI接口的時(shí)鐘線,總是由MCU產(chǎn)生。SDATA為雙向數(shù)據(jù)線,在數(shù)據(jù)傳輸開始前,由數(shù)據(jù)發(fā)送方將SDATA拉低,數(shù)據(jù)接收方同意接收數(shù)據(jù)則將SDATA拉高,作為接收響應(yīng)信號(hào),之后SDATA作為數(shù)據(jù)傳送線。模塊自帶看門狗,復(fù)位端RST可懸空或接低電平。CTRL和BZ接發(fā)光二極管和蜂嗚。

  

  

  圖2 ZLG500模塊電路

  3.3 AT24C256存儲(chǔ)器存儲(chǔ)空間劃分

  采用具有32KB存儲(chǔ)容量AT24C256存儲(chǔ)收費(fèi)結(jié)算信息。存儲(chǔ)空間劃分:第1、2字節(jié)為出口,第3、4個(gè)字節(jié)為已打卡數(shù)量,第5到第8個(gè)字節(jié)為收費(fèi)總金額,后面為用戶數(shù)據(jù)區(qū),每位用戶數(shù)據(jù)由13字節(jié)組成.包括4字節(jié)用戶序列號(hào)和2字節(jié)消費(fèi)金額(BCD碼1.最多記錄5460個(gè)用戶數(shù)據(jù)。

  3.4 LCD顯示

  采用SMG12864液晶顯示模塊,可顯示4行8列共32個(gè)16x16的漢字。它自帶2個(gè)KS0108B和1個(gè)KS0107B顯示驅(qū)動(dòng)控制器.2個(gè)KS0108B分別控制左右兩個(gè)半屏64x64)像素點(diǎn)的顯示.KS0107B作為64行的行驅(qū)動(dòng)控制。液晶模塊采用直接控制方式.P2.2和P2.3分別接CS1和CS2用于左右半屏控制器的片選,RS(接P2.O)為內(nèi)部功能寄存器選擇,R/W(接P2.1)為讀寫控制信號(hào).P2.7接LCD驅(qū)動(dòng)器的使能端E。

  3.5鍵盤設(shè)計(jì)

  鍵盤接口電路采用ZLG7289芯片.其按鍵有效輸出端,KEY)接MCU的INT1./KEY在有效按鍵時(shí)為低電平,平時(shí)為高電平。 EY的下降沿觸發(fā)按鍵中斷之后,MCU根據(jù)ZLG7289發(fā)送的鍵值進(jìn)行相應(yīng)處理。設(shè)計(jì)按鍵有:數(shù)字鍵0-9、"."、"功能"、"退出"、"退格"、"確定"。

  4 軟件設(shè)計(jì)

  軟件設(shè)計(jì)采用了模塊化設(shè)計(jì)方法.首先設(shè)計(jì)出設(shè)備外圍各硬件的驅(qū)動(dòng)程序,將各硬件的驅(qū)動(dòng)函數(shù)聲明在相應(yīng)頭文件(.h文件)中,然后在主程序中包含這些頭文件,按系統(tǒng)功能需要調(diào)用各個(gè)模塊的驅(qū)動(dòng)函數(shù)。限于篇幅,本文只詳細(xì)討論了主程序流程和讀寫卡程序。

  4.1主程序

  4.1.1出口設(shè)備主程序流程

  (1)啟動(dòng)后對(duì)LCD、E2pROM、ZLG500和時(shí)鐘等初始化;

  (2)讀取當(dāng)前時(shí)間、LCD顯示待機(jī)界面;

  (3)等待射頻IC卡的請(qǐng)求、按鍵請(qǐng)求或串13通信請(qǐng)求。有任一種請(qǐng)求則進(jìn)入相應(yīng)處理程序,并且處理程序返回之前。屏蔽其它兩種請(qǐng)求。① IC卡請(qǐng)求,驗(yàn)證用戶IC 合法性,若為非法卡.則放棄IC卡請(qǐng)求,若為合法卡,從DS1302和IC卡中獲取當(dāng)前時(shí)間和停車起始時(shí)間,計(jì)算出停車費(fèi)用,從IC卡獲取用戶余額。若判斷消費(fèi)金額超過用戶余額則蜂嗚報(bào)警并在LCD 中提示。否則將扣除消費(fèi)金額并將余額寫入IC卡中,最后將用戶序列號(hào)和消費(fèi)金額存儲(chǔ)到AT24C256中,上位機(jī)根據(jù)存儲(chǔ)器中用戶消費(fèi)金額更新用戶余額。② 按鍵請(qǐng)求."功能"鍵被按下會(huì)中斷觸發(fā)按鍵處理程序,液晶顯示"請(qǐng)輸入密碼",正確輸入密碼后,在液晶中顯示各種功能,如"設(shè)置時(shí)間"、"查詢總金額"、"記錄個(gè)數(shù)"等,按數(shù)字鍵選擇相應(yīng)功能,按"退出"鍵可以退到上一層操作界面,按"確定"鍵可確認(rèn)輸入,"退格"鍵取消前一步輸入。③ 請(qǐng)求,出口設(shè)備與上位機(jī)連接時(shí).根據(jù)上位機(jī)命令.可進(jìn)行存儲(chǔ)器數(shù)據(jù)上傳、設(shè)置設(shè)備時(shí)間等操作。

  (4)向擋車閘電機(jī)控制器發(fā)出開關(guān)信號(hào)。

  4.1.2 發(fā)卡設(shè)備主程序流程

  開機(jī)后對(duì)讀寫卡模塊和串口進(jìn)行初始化. 然后等待上位機(jī)命令:

  (1)若為"發(fā)新卡命令".接著接收上位機(jī)發(fā)來的新用戶數(shù)據(jù),當(dāng)在有效范圍內(nèi)檢測(cè)到合法卡時(shí)將數(shù)據(jù)寫入IC卡內(nèi)扇區(qū)2

  中相應(yīng)位置中:

  (2)若為"充值命令",將有效范圍內(nèi)IC卡的用戶信息傳給上位機(jī),然后等待上位機(jī)發(fā)來"寫卡命令":

  (3)收到"寫卡命令",緊接著接收上位機(jī)發(fā)送的數(shù)據(jù),然后將接收到的數(shù)據(jù)寫入IC卡中。

  4.2讀寫IC卡模塊通信協(xié)議與程序設(shè)計(jì)

  4.2 1 MCU與ZLG500之間的通信協(xié)議

  MCU與ZLG500之間的通信接圖3所示的數(shù)據(jù)格式進(jìn)行。

  

  圖3 MCU與ZLG500之間通信的數(shù)據(jù)格式

  數(shù)據(jù)塊各字段描述如下:

  ① SeqNr:數(shù)據(jù)交換包的序號(hào);

  ② Command:MCU向ZLG500發(fā)送命令的代碼,例如Read命令為0x46。Write命令為0x47:

 ?、?Status:ZLG500對(duì)MCU發(fā)出命令的響應(yīng);

 ?、?Len:要發(fā)送數(shù)據(jù)的個(gè)數(shù),以字節(jié)為單位;

  ⑤ Data[0?N1:要發(fā)送的Len個(gè)字節(jié)的數(shù)據(jù);

 ?、?BCC:BCC校驗(yàn)碼,計(jì)算公式為:Byte[n]=NOT(Byte XOR Byte XOR....XOR Byte[n一11)。

  MCU與ZLG500之間通信必須先由MCU發(fā)起,MCU按照數(shù)據(jù)格式向ZLG500發(fā)送命令和數(shù)據(jù),ZLG500執(zhí)行完命令后,將命令執(zhí)行的狀態(tài)和響應(yīng)數(shù)據(jù)按照數(shù)據(jù)格式發(fā)回給MCU。

  4.2.2讀寫IC卡過程的代碼實(shí)現(xiàn)

  讀寫IC卡程序分為底層驅(qū)動(dòng)函數(shù)和高層應(yīng)用接口。底層驅(qū)動(dòng)函數(shù)使用匯編語言設(shè)計(jì), 主要包括SPI總線數(shù)據(jù)發(fā)送函數(shù)(_SPI_SEND)和


關(guān)鍵詞: 上位機(jī) 存儲(chǔ)塊 外部中斷 非接觸IC卡 MCU 接收函數(shù) 連接圖 串口通信 設(shè)備號(hào) 停車

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉