廣東省工商高級技工學校 王建國
食堂IC卡售飯機作為食堂收費終端,根據其實際使用環境,應該具有如下的功能特點,以適用于不同階段的數據處理。
就餐階段即正常使用階段。在IC卡插入售飯機后,系統能讀出IC卡里面預先存儲的金額,并能在面對就餐者和售飯員兩面雙屏進行顯示。售飯機利用鍵盤輸入就餐者選定的食物余款,售飯機自動卡中的金額減去應付金額。操作完成后屏幕顯示應付金額以及卡中的余額。
如果就餐者卡中的余額小于預先設定的金額,售飯機則給出報警音,提示就餐者為IC卡進行充值。食堂售飯窗口不具備為卡充值的功能,就餐者必須到指定的地方進行充值。
如果就餐卡出現故障,售飯機給出報警音,提示就餐者修卡。食堂售飯窗口不具備對卡進行修復的功能,就餐者必須到指定的地方修復。如果修復失敗,就餐者只有到充值窗口重新辦理就餐卡。

圖1 售飯機系統結構框圖
在充值階段,IC卡售飯機讀出卡里面的余額,就餐者在充值窗口交納一定的金額后,由工作人員通過鍵盤輸入此次充值金額,售飯機自動將此次充值金額加入卡中。操作完成后,屏幕顯示充值后卡中的余額。
初始化階段是為卡的發行做準備。在此階段,工作人員通過鍵盤進行就餐卡的初始化工作。此階段的主要任務是寫入用戶群號和初始金額。只有經過初始化之后,就餐卡方能發行。
此階段對損壞的就餐卡進行修復。如果修復失敗,售飯機給出報警聲,就餐者只有重新辦理就餐卡。
根據IC卡售飯機的功能特點,售飯機系統需要完成數據的輸入、顯示和處理三種功能。整個系統的結構框圖如圖書1所示。
(1)IC卡:本系統選用西門子SLE4442邏輯加密型IC卡進行數據的存儲和身份識別。邏輯加密卡內設有硬件加密電路,只有在輸入密碼正確后才能進行數據的改寫,否則數據只能被讀出。而且輸入的錯誤密碼達到規定的次數后,IC卡自動死鎖報廢。因而這種卡的安全性能很高,非常適合于涉及到金融等主面的應用[1]。
(2)鍵盤:考慮實際的使用情況和性價比,采用矩陣掃描鍵盤進行數據輸入。矩陣掃描鍵盤由行線和列線組成,按鍵設置在行列線的交叉點上,行列線分別接到按鍵開關的兩端。列線通過上拉電阻接到+5V上。平時當沒有按鍵按下時,列線處于高電平的狀態;而當有鍵按下時,行列線導通,因此列線的電平狀態將由與此相連接的行線的電平狀態決定。而行列線和多個鍵相連接,各個按鍵按下與否都將影響該鍵所在的行列線的電平。這樣行列線配合起來進行適當的處理,即可確定按鍵的位置。與獨立鍵盤相比,要節省很多的I/O口,適用于按鍵數量較多的場合。
(3)顯示單元:IC卡售飯機系統只需要進行數字的顯示即可,但需要顯示器件具有直觀和高亮度。在此基礎上,可采用常用的高亮度紅色LED數碼管作為顯示器件。
IC卡售飯機的硬件電路如圖2所示[2],具體包括IC卡接口電路、鍵盤和顯示接口電路、蜂鳴報警電路、IC卡上電檢測電路。

圖2 lC卡售飯機電路

圖3 主程序流程圖

圖4 按鍵處理程序流程圖
IC卡接口電路,采用SLE4442邏輯加密型IC卡。SLE4442采用兩線數據傳輸方式,符合ISO7816-3標準,并具有一個安全邏輯,用以控制存儲器的讀寫操作。在密碼校驗成功之前,除了3B密碼(可編程安全代碼)外,數據都可以讀出,只有在校驗密碼成功之后才可以執行數據的寫入動作。在校驗密碼之前,可以將錯誤計數器的某一位寫“0”。錯誤計數器的初始值為0x03,每校驗必密碼錯誤一次則將其中一位寫“0”,如果連續三次密碼校驗錯誤,錯誤計數器的值變為0x00,IC卡報廢[3]。
鍵盤和顯示接口電路采用ZLG7290鍵盤及數碼管專用驅動芯片,ZLG7290與單片機AT90S8535采I2C接口進行通信。為了使IC卡售飯機能夠適應不同階段的數據處理,系統設置了16個數字鍵和功能鍵,具體是數字鍵:0-9、小數點按鍵“.”;功能鍵:+、-、初始化鍵、修復鍵、確定鍵。
蜂鳴報警電路采用電磁式蜂鳴作為IC卡出錯報警提示,單片機AT90S8535的PD3口通過NPN型三極管驅動蜂鳴器。當PD3輸出高電平時,三極管導通,蜂鳴器發出報警聲。
IC卡上電檢測電路實現IC卡的上電檢測以確保單片機正常的操作。在IC卡的卡座上通常有靜、動兩片金屬片。在IC卡插入卡座時,動金屬片被IC卡擠壓而逐漸與靜金屬片靠攏,當IC卡完全插入卡座后,動金屬片完全與靜金屬片接觸。動金屬片的一端固定通過電阻和LED接地。靜金屬片固定接5V電壓。在IC卡沒有插入時,動金屬片端為0V電壓;IC卡插入后靜金屬片變為5V電壓,LED點亮,提示有IC卡插入,單片機開始對卡進行初始檢測。這樣,通過判斷與動金屬片連接的單片機的PD2口的電平,即可準確地檢測IC卡是否上電。
IC卡售飯機軟件系統采用模塊化程序設計。從結構上看,系統控制軟件主要包括一個主程序(如圖3)、按鍵處理程序(如圖4)和其它一些輔助處理程序[4]。主程序主要完成系統初始化、IC卡插入檢測、讀寫和鍵盤輸入與處理、異常情況的報警處理等工作,以完成人機交互的功能。按鍵處理程序是系統服務程序的一部分,完成按鍵的識別與處理工作,在確認有鍵被按下后,通過查找按鍵編碼表識別按鍵,區分功能鍵與數字鍵,從而根據不同的情況進行相應的處理。
系統集成與測試是系統設計的一個重要環節,由于AVR單片機具有在系統編程功能(ISP),這樣完全可以在焊接好硬件電路后進系統的仿真調試。IC卡售飯機系統的測方式分三部分:AT90S8535主機電路測試、鍵盤顯示電路的測試和IC卡電路測試。對各部分的測試應該編制各自的測試程序。
[1]張萌,和湘,江斌.單片機應用系統開發綜合實例[M].清華大學出版社,2007.
[2]張軍.AVR單片機應用系統開發典型實例[M].中國電力出版社,2005.
[3]宋吉和.C語言程序設計(第二版)[M].中國石油大學出版社,2006.
[4]鄭鋒,王巧芝,程麗平,張清鵬.51單片機典型應用工發范例大全[M].中國鐵道出版社,2011.