基于非接觸IC卡自動(dòng)計時(shí)停車(chē)收費系統設計
摘 要:根據停車(chē)場(chǎng)智能化管理的需要提出了系統設計思想。系統硬件設備由入口設備、出口設備和發(fā)卡設備組成,論述了它們的硬件電路設計和軟件設計,并重點(diǎn)討論了IC卡讀寫(xiě)的硬、軟件設計。
隨著(zhù)國民經(jīng)濟飛速發(fā)展.城市汽車(chē)數量劇增,停車(chē)難問(wèn)題愈來(lái)愈凸現,在增加停車(chē)場(chǎng)數量的同時(shí),提高停車(chē)場(chǎng)的智能化管理是解決這個(gè)問(wèn)題的關(guān)鍵。本設計開(kāi)發(fā)的自動(dòng)計時(shí)停車(chē)收費系統,以非接觸IC卡技術(shù)為基礎.實(shí)現了停車(chē)場(chǎng)收費管理現代化,它具有效率高、管理科學(xué)、安全可靠等特點(diǎn)。
1 系統整體設計
整個(gè)系統硬件設備由停車(chē)場(chǎng)人口設備、停車(chē)場(chǎng)出口設備和發(fā)卡設備三部分組成。人口設備和出口設備位于停車(chē)場(chǎng)人口和出口單機工作,而發(fā)卡設備位于管理中心,由上位機控制。三部分設備的硬件設計和主要功能如表1所示。
表1 設備硬件組成與功能
硬件組成上,發(fā)卡設備直接由上位機控制,所以無(wú)需鍵盤(pán)、LCD模塊等硬件,出口設備包含人口設備和發(fā)卡設備所有的硬件,它們的設計只需在出口設備硬件基礎上去掉相應模塊,所以在后面的硬件設計介紹中以出口設備為代表 三種設備的不同功能由軟件編程實(shí)現,出口程序經(jīng)過(guò)精簡(jiǎn)和簡(jiǎn)單的修改可得到人口設備程序,所以在軟件設計中主要討論了出口設備和發(fā)卡設備的程序流程。在整個(gè)系統中,非接觸IC卡是三部分硬件設備相互聯(lián)系的橋梁,非接觸IC卡的讀寫(xiě)程序設計是系統實(shí)現的關(guān)鍵,本文將重點(diǎn)討論。
2 IC卡卡內存儲空間的分配
本設計使用PHILIPS公司的MF1 IC卡,卡內集成1KB的E2PROM,并劃分為16個(gè)可獨立使用的扇區,每個(gè)扇區又分為4個(gè)16字節的存儲塊,每個(gè)扇區的第4個(gè)存儲塊保存該扇區的密碼和訪(fǎng)問(wèn)控制,IC卡中的16個(gè)扇區可用于16個(gè)不同系統中。本設計使用扇區2,具體存儲空間劃分:塊0的低4個(gè)字節存儲用戶(hù)序列號,塊1存放存儲用戶(hù)余額,塊2低7個(gè)字節存放停車(chē)起始時(shí)間 塊3存放兩套6字節密碼和4寧節訪(fǎng)問(wèn)控制。
3 硬件設計
3.1出口設備硬件結構
出口設備硬件結構如圖1所示.AT89C55單片機作為控制器,它片內集成20KB的程序存儲器,滿(mǎn)足本設計對程序存儲器容量的要求:ZLG7289芯片外接4x4的鍵盤(pán);DS1302為停車(chē)計時(shí)提供準確時(shí)鐘;LCD液晶顯示各種信息,如按鍵信息、時(shí)間和停車(chē)費用等:AT24C256存儲用戶(hù)結算信息:通過(guò)RS-232 I亍上位機通信:通過(guò)ZLG500對IC卡進(jìn)行讀寫(xiě)操作:MCU通過(guò)P1.7端口向擋車(chē)閘電機控制器發(fā)送開(kāi)關(guān)車(chē)閘信號。為充分利用單片機有限的端口,外圍設備多采用了具有I2C接口f如AT2,4C256、DS1302)和SPI接1:3(如ZLG7289、ZLG500)的器件。
圖1 出口設備硬件示意圖
3.2非接觸IC卡讀寫(xiě)模塊ZLG500
ZLG500負責對非接觸IC卡的讀寫(xiě)操作。需外接PCB天線(xiàn)。ZLG500模塊連接電路如圖2所示.傳輸啟動(dòng)端SS接MCU的外部中斷O,MCU和ZLG500之問(wèn)發(fā)送數據,首先由發(fā)送方將SS拉低并且在發(fā)送結束后將SS拉高,本設計中MCU以下降沿中斷觸發(fā)的方式接收Z(yǔ)LG500發(fā)送的數據.并將外部中斷O設置為最高優(yōu)先級,保證第一時(shí)間接收到IC卡數據。SCLK為SPI接口的時(shí)鐘線(xiàn),總是由MCU產(chǎn)生。SDATA為雙向數據線(xiàn),在數據傳輸開(kāi)始前,由數據發(fā)送方將SDATA拉低,數據接收方同意接收數據則將SDATA拉高,作為接收響應信號,之后SDATA作為數據傳送線(xiàn)。模塊自帶看門(mén)狗,復位端RST可懸空或接低電平。CTRL和BZ接發(fā)光二極管和蜂嗚。
圖2 ZLG500模塊電路連接圖
3.3 AT24C256存儲器存儲空間劃分
采用具有32KB存儲容量AT24C256存儲收費結算信息。存儲空間劃分:第1、2字節為出口設備號,第3、4個(gè)字節為已打卡數量,第5到第8個(gè)字節為收費總金額,后面為用戶(hù)數據區,每位用戶(hù)數據由13字節組成.包括4字節用戶(hù)序列號和2字節消費金額(BCD碼1.最多記錄5460個(gè)用戶(hù)數據。
3.4 LCD顯示
采用SMG12864液晶顯示模塊,可顯示4行8列共32個(gè)16x16的漢字。它自帶2個(gè)KS0108B和1個(gè)KS0107B顯示驅動(dòng)控制器.2個(gè)KS0108B分別控制左右兩個(gè)半屏64x64)像素點(diǎn)的顯示.KS0107B作為64行的行驅動(dòng)控制。液晶模塊采用直接控制方式.P2.2和P2.3分別接CS1和CS2用于左右半屏控制器的片選,RS(接P2.O)為內部功能寄存器選擇,R/W(接P2.1)為讀寫(xiě)控制信號.P2.7接LCD驅動(dòng)器的使能端E。
3.5鍵盤(pán)設計
鍵盤(pán)接口電路采用ZLG7289芯片.其按鍵有效輸出端,KEY)接MCU的INT1./KEY在有效按鍵時(shí)為低電平,平時(shí)為高電平。 EY的下降沿觸發(fā)按鍵中斷之后,MCU根據ZLG7289發(fā)送的鍵值進(jìn)行相應處理。設計按鍵有:數字鍵0-9、"."、"功能"、"退出"、"退格"、"確定"。
4 軟件設計
軟件設計采用了模塊化設計方法.首先設計出設備外圍各硬件的驅動(dòng)程序,將各硬件的驅動(dòng)函數聲明在相應頭文件(.h文件)中,然后在主程序中包含這些頭文件,按系統功能需要調用各個(gè)模塊的驅動(dòng)函數。限于篇幅,本文只詳細討論了主程序流程和讀寫(xiě)卡程序。
4.1主程序
4.1.1出口設備主程序流程
(1)啟動(dòng)后對LCD、E2pROM、ZLG500和時(shí)鐘等初始化;
(2)讀取當前時(shí)間、LCD顯示待機界面;
(3)等待射頻IC卡的請求、按鍵請求或串13通信請求。有任一種請求則進(jìn)入相應處理程序,并且處理程序返回之前。屏蔽其它兩種請求。① IC卡請求,驗證用戶(hù)IC 合法性,若為非法卡.則放棄IC卡請求,若為合法卡,從DS1302和IC卡中獲取當前時(shí)間和停車(chē)起始時(shí)間,計算出停車(chē)費用,從IC卡獲取用戶(hù)余額。若判斷消費金額超過(guò)用戶(hù)余額則蜂嗚報警并在LCD 中提示。否則將扣除消費金額并將余額寫(xiě)入IC卡中,最后將用戶(hù)序列號和消費金額存儲到AT24C256中,上位機根據存儲器中用戶(hù)消費金額更新用戶(hù)余額。② 按鍵請求."功能"鍵被按下會(huì )中斷觸發(fā)按鍵處理程序,液晶顯示"請輸入密碼",正確輸入密碼后,在液晶中顯示各種功能,如"設置時(shí)間"、"查詢(xún)總金額"、"記錄個(gè)數"等,按數字鍵選擇相應功能,按"退出"鍵可以退到上一層操作界面,按"確定"鍵可確認輸入,"退格"鍵取消前一步輸入。③ 串口通信請求,出口設備與上位機連接時(shí).根據上位機命令.可進(jìn)行存儲器數據上傳、設置設備時(shí)間等操作。
(4)向擋車(chē)閘電機控制器發(fā)出開(kāi)關(guān)信號。
4.1.2 發(fā)卡設備主程序流程
開(kāi)機后對讀寫(xiě)卡模塊和串口進(jìn)行初始化. 然后等待上位機命令:
(1)若為"發(fā)新卡命令".接著(zhù)接收上位機發(fā)來(lái)的新用戶(hù)數據,當在有效范圍內檢測到合法卡時(shí)將數據寫(xiě)入IC卡內扇區2
中相應位置中:
(2)若為"充值命令",將有效范圍內IC卡的用戶(hù)信息傳給上位機,然后等待上位機發(fā)來(lái)"寫(xiě)卡命令":
(3)收到"寫(xiě)卡命令",緊接著(zhù)接收上位機發(fā)送的數據,然后將接收到的數據寫(xiě)入IC卡中。
4.2讀寫(xiě)IC卡模塊通信協(xié)議與程序設計
4.2 1 MCU與ZLG500之間的通信協(xié)議
MCU與ZLG500之間的通信接圖3所示的數據格式進(jìn)行。
圖3 MCU與ZLG500之間通信的數據格式
數據塊各字段描述如下:
?、?SeqNr:數據交換包的序號;
?、?Command:MCU向ZLG500發(fā)送命令的代碼,例如Read命令為0x46。Write命令為0x47:
?、?Status:ZLG500對MCU發(fā)出命令的響應;
?、?Len:要發(fā)送數據的個(gè)數,以字節為單位;
?、?Data[0?N1:要發(fā)送的Len個(gè)字節的數據;
?、?BCC:BCC校驗碼,計算公式為:Byte[n]=NOT(Byte XOR Byte XOR....XOR Byte[n一11)。
MCU與ZLG500之間通信必須先由MCU發(fā)起,MCU按照數據格式向ZLG500發(fā)送命令和數據,ZLG500執行完命令后,將命令執行的狀態(tài)和響應數據按照數據格式發(fā)回給MCU。
4.2.2讀寫(xiě)IC卡過(guò)程的代碼實(shí)現
讀寫(xiě)IC卡程序分為底層驅動(dòng)函數和高層應用接口。底層驅動(dòng)函數使用匯編語(yǔ)言設計, 主要包括SPI總線(xiàn)數據發(fā)送函數(_SPI_SEND)和
評論