基于A(yíng)T89C52的非接觸式IC卡預收費電度表設計
用戶(hù)使用電量的計量手段的準確程度取決于電互感器及電度表的精度?,F已出現了接觸式IC卡預收費電度表,它使收費從過(guò)去繁瑣的人工抄表、手工計價(jià)轉變?yōu)橛脩?hù)持卡購電,實(shí)現了電費收繳管理自動(dòng)化。但它不能解決無(wú)源(卡中無(wú)電源)和免接觸等問(wèn)題[2~8]。
非接觸式IC卡(又稱(chēng)射頻卡)是國外近幾年發(fā)展起來(lái)的新技術(shù)[1],它成功地將射頻識別技術(shù)和IC卡技術(shù)結合起來(lái),解決了無(wú)源和免接觸難題。射頻卡無(wú)需專(zhuān)門(mén)的供電電源;它與讀寫(xiě)器間無(wú)機械接觸,避免了接觸故障;它的表面無(wú)裸露芯片,可防水,且不易產(chǎn)生靜電擊空及彎曲損壞等問(wèn)題;射頻卡使用時(shí)沒(méi)有正反面??傊?,非接觸式IC卡具有可靠性高、使用方便、操作速度快等特點(diǎn)。本文采用非接觸式IC卡研制成功了智能預收費電度表。
1 工作原理
1.1 非接觸式IC卡的工作原理
非接觸式IC卡系統由讀寫(xiě)器和非接觸式IC卡兩部分組成。應用系統通過(guò)讀寫(xiě)器對卡進(jìn)行操作;讀卡器通過(guò)射頻信號同步進(jìn)行近距離通訊,并為卡上芯片提供能量;非接觸式IC卡響應讀寫(xiě)器的指令,并報告處理的結果。非接觸式IC卡通過(guò)連接IC芯片的線(xiàn)圈在特定交變磁場(chǎng)中耦合獲得高壓能量,非接觸式IC卡的讀寫(xiě)器通過(guò)發(fā)射線(xiàn)圈發(fā)射交變強磁場(chǎng),強予IC卡能量,通過(guò)磁場(chǎng)的斷、續編碼寫(xiě)入數據,并通過(guò)線(xiàn)圈感應IC卡發(fā)生的磁場(chǎng)閱讀IC卡發(fā)來(lái)的數據;IC卡通過(guò)交變磁場(chǎng)獲得能量,通過(guò)檢驗磁場(chǎng)的數、續獲得讀寫(xiě)頭寫(xiě)來(lái)的數據,并按設定的模式編碼、調制,向讀寫(xiě)頭發(fā)出數據。
本系統采用上海華虹集成電路公司開(kāi)發(fā)的SHC1701 RF讀寫(xiě)模塊。它主要由射頻和SHC1501大規模集成電路構成,共同安裝在PCB板上,同時(shí)安裝屏蔽罩,可完成讀寫(xiě)器與IC卡之間的各種交互功能,包括調制/解調、加密/解密、認證、讀寫(xiě)、加/減等,并具有同微處理器的接口。其基本結構如圖1所示。

非接觸式IC卡與讀寫(xiě)器的通信內容包括復位應答、防沖突、選擇卡片、相互認證、對數據塊的操作和中止。
1.2 預收費電度表的工作原理
預收費電度表可分為電子式和機電式兩種,它們的區別在于電能變換元件不同。前者將電壓、電流進(jìn)行A/D轉換,再將采樣值相乘并累計,得到用戶(hù)消 耗的電度數;后者借用原感應式電度表的機芯,通過(guò)光電傳感器讀取轉盤(pán)數據數得到用戶(hù)消耗的電度數。為節省成本,選用機電式電度表。
本系統的工作原理為:
(1)用戶(hù)持IC卡到供電部門(mén)交款購電時(shí),供電部門(mén)把用戶(hù)的IC卡放在與PC機相連的讀寫(xiě)器上,由寫(xiě)卡程序在IC卡上寫(xiě)入與用戶(hù)交款數相符的一定電度數。
(2)用戶(hù)把IC卡帶回家,將卡掠過(guò)家中預收費電度表的讀定,卡中電度數被主機讀出,與預收費電度表中來(lái)剩余的電度數相加。由于機內采用備用電池,不怕掉電失去數據。
(3)電表表盤(pán)轉動(dòng)時(shí),由紅外發(fā)射接收管把表盤(pán)數變成電脈沖送入單片機。單片機記錄表盤(pán)的轉數,當轉數等于電表常數時(shí),通過(guò)單片機控制使內存中的剩余電度數減去一度。
(4)單片機隨時(shí)監測內存中剩余電度數是否小于15度。如是,則點(diǎn)亮預告用電量將盡的發(fā)光二極管指示器,提示用戶(hù)持卡到供電部門(mén)重新購電。
(5)當單片機發(fā)現用戶(hù)電表中剩余電量完全用完時(shí),控制繼電器切斷用戶(hù)供電電源。
(7)系統采用VB的通訊控件通過(guò)RS232與單片機進(jìn)行通訊。微機通過(guò)事先約定好的字符來(lái)實(shí)現對單片機的控制,如小區的管理中心定期通過(guò) RS232串行通訊口讀取用戶(hù)電度表的使用電量和剩余電度數,并制成數據庫加以保存。供電部門(mén)可通過(guò)Internet對小區采集的數據進(jìn)行訪(fǎng)問(wèn)和管理,從 而實(shí)現了供電管理部門(mén)網(wǎng)絡(luò )化的管理手段。
(8)本裝置屬于二次儀表,精度主要取決于一次儀表。只要表盤(pán)轉動(dòng)正常,二次儀表不會(huì )引入誤差。
2 硬件電路
非接觸式IC卡 預收費電度表的硬件電路結構圖如圖2所示。圖中主控單元采用AT89C52單片機,其內有8K字節的快速擦寫(xiě)存儲器(FLASH),無(wú)需外接程序存儲器 (EPROM)。外接電路主要包括:四位LED顯示電路、電表表盤(pán)檢測電路、控制供電的繼電器電路、振鈴控制電路、RS232串行通訊電路、看門(mén)狗復位電 路、電源控制電路以及控制非接觸式IC卡的SHC1701讀寫(xiě)模塊。
SHC1701 RF模塊是IC卡讀寫(xiě)器的核心單元,它由SHC1501專(zhuān)用電路和RF電路等組成,覆蓋了所有對非接觸式IC卡SHC1101的訪(fǎng)問(wèn)操作。IC卡 讀寫(xiě)模塊及顯示電路與單片機的接口如圖3所示。圖中采用4位共陽(yáng)極的動(dòng)態(tài)數碼顯示管,顯示字符由單片機P0口送至鎖存器74LS374鎖存,再經(jīng)顯示驅動(dòng) 芯片ULN2003驅動(dòng)數據管顯示,P1.0~P1.3分別控制每一位的動(dòng)態(tài)顯示。顯示電路用顯示可供使用的電度數。當讀卡發(fā)生錯誤時(shí),將顯示錯誤信息。 在供電部門(mén)存款時(shí),將顯示存入電卡中的電度數。

電表轉盤(pán)讀數頭(紅外發(fā)射接收管)產(chǎn)生的脈沖信號經(jīng)一個(gè)非門(mén)輸出到單片機的P1.4口,單片機實(shí)時(shí)對P1.4口進(jìn)行監測。
RS232串行通訊電路采用MAX232芯片,實(shí)現單片機與微機的數據交換。微機主要采用VB的通訊控件通過(guò)RS232與單片機進(jìn)行通訊,通過(guò)事先約定好的字符對單片機實(shí)現控制。
看門(mén)狗電路由4538單穩電路組成。初上電時(shí),CLR端為低電平,使輸出Q為低電平,從而使系統復位。正常工作時(shí),單片機在每個(gè)主程序循環(huán)時(shí)發(fā)出一個(gè)低電平脈沖,觸發(fā)單穩;當程序受干擾跑飛時(shí),單穩因得不到觸發(fā)脈沖而復位,此時(shí),輸出端Q=0,使系統復位。
振鈴控制電路由蜂鳴器、兩個(gè)三極管和電阻組成。當單片機的P1.7端發(fā)出一個(gè)高電平時(shí),觸發(fā)蜂鳴器蜂鳴。為使系統在停電時(shí)也能正常工作,由兩組 電源給系統供電,一組是將220V/50Hz的市電經(jīng)變壓、整流、穩壓得到5V直流電,另一組由12V/4A的可充電電流經(jīng)斬波、隱壓、穩壓得到5V直流 電。一般由市電供電,并對可充電電池充電。市電停電時(shí)由電池供電,12V/4A的可充電電流能使系統連續工作24h以上。
3 軟件設計
本非接觸式IC卡 預收費電度表的程序采用了模塊化的設計,整個(gè)系統由用戶(hù)端電度表計費程序和供電部門(mén)存未及管理程序兩部分組成。每部分程序又由單片機系統程序和VB用戶(hù)接 口程序兩部分組成,單片機程序和VB程序之間采用VB的通訊控件MSComm通過(guò)RS232進(jìn)行通訊,通訊協(xié)議使用基于A(yíng)SCII碼的查詢(xún)命令、中斷收發(fā) 字符。微機通過(guò)事先約定好的字符對單片機實(shí)現控制,單片機通過(guò)判斷微機發(fā)來(lái)的不同字符,執行不同的單片機子程序。
3.1 用戶(hù)端電度表計費程序
3.1.1 單片機系統程序的主要功能
(1)讀取有效的非接觸式IC卡功能。對卡進(jìn)行防沖突、密碼認證、卡號認證等操作,并讀出卡中存儲的數據,然后將卡清零、???。
(2)完成電度表的預收費功能。將從IC卡中讀出的電度數與單片機內存剩余的電度數相加,并存回內存。
(3)顯示功能。系統周期性地掃描,動(dòng)態(tài)顯示機內剩余的電度數。此外,當讀寫(xiě)IC卡發(fā)生錯誤時(shí),顯示出錯信號。
(5)電度計數功能。系統實(shí)時(shí)監測電表轉盤(pán)讀數頭(紅外發(fā)射接收管)發(fā)來(lái)的脈沖信號,當脈沖信號由高電平變?yōu)榈碗娖綍r(shí),計數器COUNT加1;而當COUNT值等于電表常數(轉/度)時(shí),剩余電度數減1,用電量加1,同時(shí)COUNT清零。
(6)報警斷電功能。當機內剩余電度數小于15度時(shí),點(diǎn)亮預告用電量將盡的發(fā)光二極管指示器,提示用戶(hù)持卡到供電部門(mén)重新購電。而當用戶(hù)電表中剩余電量完全用完時(shí),控制繼電器切斷用戶(hù)供電電源。用戶(hù)只有再次存入電度數后,才能繼續供電。
單片機系統程序由主監控程序、IC卡處理子程序、電度計數子程序、串行中斷服務(wù)子程序等組成,其框圖分別見(jiàn)圖4(a)、(b)、(c)、(d)。


3.1.2 VB用戶(hù)接口程序的主要功能
(1)顯示。根據輸入的用戶(hù)編號,顯示相應的用戶(hù)信息。
(2)采集。將用戶(hù)編號通過(guò)通訊控件發(fā)送給單片機,單片機認證用戶(hù)編號后,返回該用戶(hù)的用電量和剩余電度數。
(3)寫(xiě)入。將采集來(lái)的數據。加上用戶(hù)編號和日期,一并寫(xiě)入數據庫,以供查詢(xún)。
(4)查看。查看當用各用戶(hù)的用電量情況及剩余電度數;查看所有的用電情況。
3.2 供電部門(mén)存款及管理程序
3.2.1 單片機系統程序的主要功能
(1)系統初始化設置。設置寄存器地址、中斷源入口、加載IC卡認證密碼以及設置串行口、定時(shí)器0和定時(shí)器1的工作模式等。
(2)接收微機發(fā)來(lái)的控制字符。執行串行中斷服務(wù)子程序,如控制字符為R則執行對IC卡的詢(xún)卡、防沖突、選卡、認證等操作,并返回給微機卡號;如控制字符為W則將用戶(hù)購買(mǎi)的電度數寫(xiě)入IC卡,再讀出寫(xiě)入的電度數,然后???。
(3)顯示功能。顯示IC卡中存入的電度數,當對IC卡操作過(guò)程中有任何錯誤時(shí),將顯示錯誤信息,提示用戶(hù)。
程序由主程序程序和串行中斷服務(wù)子程序等組成,它們的框圖見(jiàn)圖5(a)、(b)。

(1)IC卡 存款功能。用戶(hù)持卡到供電部門(mén)存款,工作人員將放在讀寫(xiě)器上,按“讀卡”按鈕,微機發(fā)送字符“R”給單片機,單片機執行相應的中斷處理后返回卡號。系統根 據返回的卡號顯示對應的用戶(hù)信息,確認無(wú)誤后,輸入用戶(hù)交納的金額,系統自動(dòng)轉化成電度數。按下“存款”按扭,將電度數存入IC卡,同時(shí)將存款的相關(guān)信息寫(xiě)入數據庫,以供查詢(xún)。
(2)查詢(xún)功能。查詢(xún)用戶(hù)信息、IC卡信息以及用戶(hù)的用電情況,可以根據輸入的用戶(hù)編號或電卡號進(jìn)行有選擇地查詢(xún)。
(3)維護功能。對數據庫的維護包括添加新的記錄、刪除不需要的記錄以及對現有記錄的更新。本系統所使用的數據庫由MSAccess建立,通過(guò)VB的數據對象控件與用戶(hù)界面關(guān)聯(lián),對數據的所有操作都實(shí)時(shí)地更新所關(guān)聯(lián)的數據庫。
本文將非接觸式IC卡技術(shù)與計算機技術(shù)相結合,研制出多功能電量計量收費裝置。該系統實(shí)現了用電收費的電子化,改變了先用電后收費的不合理狀況,促進(jìn)了用電計量、收費的科學(xué)化管理。該裝置利用了老式機械表的功能和結構,降低了改造的成本,適于推廣使用。
評論