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