基于AT89C52的非接觸式IC卡預(yù)收費電度表設(shè)計
用戶使用電量的計量手段的準確程度取決于電互感器及電度表的精度?,F(xiàn)已出現(xiàn)了接觸式IC卡預(yù)收費電度表,它使收費從過去繁瑣的人工抄表、手工計價轉(zhuǎn)變?yōu)橛脩舫挚ㄙ忞?,實現(xiàn)了電費收繳管理自動化。但它不能解決無源(卡中無電源)和免接觸等問題[2~8]。
非接觸式IC卡(又稱射頻卡)是國外近幾年發(fā)展起來的新技術(shù)[1],它成功地將射頻識別技術(shù)和IC卡技術(shù)結(jié)合起來,解決了無源和免接觸難題。射頻卡無需專門的供電電源;它與讀寫器間無機械接觸,避免了接觸故障;它的表面無裸露芯片,可防水,且不易產(chǎn)生靜電擊空及彎曲損壞等問題;射頻卡使用時沒有正反面??傊墙佑|式IC卡具有可靠性高、使用方便、操作速度快等特點。本文采用非接觸式IC卡研制成功了智能預(yù)收費電度表。
1 工作原理
1.1 非接觸式IC卡的工作原理
非接觸式IC卡系統(tǒng)由讀寫器和非接觸式IC卡兩部分組成。應(yīng)用系統(tǒng)通過讀寫器對卡進行操作;讀卡器通過射頻信號同步進行近距離通訊,并為卡上芯片提供能量;非接觸式IC卡響應(yīng)讀寫器的指令,并報告處理的結(jié)果。非接觸式IC卡通過連接IC芯片的線圈在特定交變磁場中耦合獲得高壓能量,非接觸式IC卡的讀寫器通過發(fā)射線圈發(fā)射交變強磁場,強予IC卡能量,通過磁場的斷、續(xù)編碼寫入數(shù)據(jù),并通過線圈感應(yīng)IC卡發(fā)生的磁場閱讀IC卡發(fā)來的數(shù)據(jù);IC卡通過交變磁場獲得能量,通過檢驗磁場的數(shù)、續(xù)獲得讀寫頭寫來的數(shù)據(jù),并按設(shè)定的模式編碼、調(diào)制,向讀寫頭發(fā)出數(shù)據(jù)。
本系統(tǒng)采用上海華虹集成電路公司開發(fā)的SHC1701 RF讀寫模塊。它主要由射頻和SHC1501大規(guī)模集成電路構(gòu)成,共同安裝在PCB板上,同時安裝屏蔽罩,可完成讀寫器與IC卡之間的各種交互功能,包括調(diào)制/解調(diào)、加密/解密、認證、讀寫、加/減等,并具有同微處理器的接口。其基本結(jié)構(gòu)如圖1所示。
非接觸式IC卡與讀寫器的通信內(nèi)容包括復(fù)位應(yīng)答、防沖突、選擇卡片、相互認證、對數(shù)據(jù)塊的操作和中止。
1.2 預(yù)收費電度表的工作原理
預(yù)收費電度表可分為電子式和機電式兩種,它們的區(qū)別在于電能變換元件不同。前者將電壓、電流進行A/D轉(zhuǎn)換,再將采樣值相乘并累計,得到用戶消 耗的電度數(shù);后者借用原感應(yīng)式電度表的機芯,通過光電傳感器讀取轉(zhuǎn)盤數(shù)據(jù)數(shù)得到用戶消耗的電度數(shù)。為節(jié)省成本,選用機電式電度表。
本系統(tǒng)的工作原理為:
(1)用戶持IC卡到供電部門交款購電時,供電部門把用戶的IC卡放在與PC機相連的讀寫器上,由寫卡程序在IC卡上寫入與用戶交款數(shù)相符的一定電度數(shù)。
(2)用戶把IC卡帶回家,將卡掠過家中預(yù)收費電度表的讀定,卡中電度數(shù)被主機讀出,與預(yù)收費電度表中來剩余的電度數(shù)相加。由于機內(nèi)采用備用電池,不怕掉電失去數(shù)據(jù)。
(3)電表表盤轉(zhuǎn)動時,由紅外發(fā)射接收管把表盤數(shù)變成電脈沖送入單片機。單片機記錄表盤的轉(zhuǎn)數(shù),當(dāng)轉(zhuǎn)數(shù)等于電表常數(shù)時,通過單片機控制使內(nèi)存中的剩余電度數(shù)減去一度。
(4)單片機隨時監(jiān)測內(nèi)存中剩余電度數(shù)是否小于15度。如是,則點亮預(yù)告用電量將盡的發(fā)光二極管指示器,提示用戶持卡到供電部門重新購電。
(5)當(dāng)單片機發(fā)現(xiàn)用戶電表中剩余電量完全用完時,控制繼電器切斷用戶供電電源。
(7)系統(tǒng)采用VB的通訊控件通過RS232與單片機進行通訊。微機通過事先約定好的字符來實現(xiàn)對單片機的控制,如小區(qū)的管理中心定期通過 RS232串行通訊口讀取用戶電度表的使用電量和剩余電度數(shù),并制成數(shù)據(jù)庫加以保存。供電部門可通過Internet對小區(qū)采集的數(shù)據(jù)進行訪問和管理,從 而實現(xiàn)了供電管理部門網(wǎng)絡(luò)化的管理手段。
(8)本裝置屬于二次儀表,精度主要取決于一次儀表。只要表盤轉(zhuǎn)動正常,二次儀表不會引入誤差。
2 硬件電路
非接觸式IC卡 預(yù)收費電度表的硬件電路結(jié)構(gòu)圖如圖2所示。圖中主控單元采用AT89C52單片機,其內(nèi)有8K字節(jié)的快速擦寫存儲器(FLASH),無需外接程序存儲器 (EPROM)。外接電路主要包括:四位LED顯示電路、電表表盤檢測電路、控制供電的繼電器電路、振鈴控制電路、RS232串行通訊電路、看門狗復(fù)位電 路、電源控制電路以及控制非接觸式IC卡的SHC1701讀寫模塊。
SHC1701 RF模塊是IC卡讀寫器的核心單元,它由SHC1501專用電路和RF電路等組成,覆蓋了所有對非接觸式IC卡SHC1101的訪問操作。IC卡 讀寫模塊及顯示電路與單片機的接口如圖3所示。圖中采用4位共陽極的動態(tài)數(shù)碼顯示管,顯示字符由單片機P0口送至鎖存器74LS374鎖存,再經(jīng)顯示驅(qū)動 芯片ULN2003驅(qū)動數(shù)據(jù)管顯示,P1.0~P1.3分別控制每一位的動態(tài)顯示。顯示電路用顯示可供使用的電度數(shù)。當(dāng)讀卡發(fā)生錯誤時,將顯示錯誤信息。 在供電部門存款時,將顯示存入電卡中的電度數(shù)。
電表轉(zhuǎn)盤讀數(shù)頭(紅外發(fā)射接收管)產(chǎn)生的脈沖信號經(jīng)一個非門輸出到單片機的P1.4口,單片機實時對P1.4口進行監(jiān)測。
RS232串行通訊電路采用MAX232芯片,實現(xiàn)單片機與微機的數(shù)據(jù)交換。微機主要采用VB的通訊控件通過RS232與單片機進行通訊,通過事先約定好的字符對單片機實現(xiàn)控制。
看門狗電路由4538單穩(wěn)電路組成。初上電時,CLR端為低電平,使輸出Q為低電平,從而使系統(tǒng)復(fù)位。正常工作時,單片機在每個主程序循環(huán)時發(fā)出一個低電平脈沖,觸發(fā)單穩(wěn);當(dāng)程序受干擾跑飛時,單穩(wěn)因得不到觸發(fā)脈沖而復(fù)位,此時,輸出端Q=0,使系統(tǒng)復(fù)位。
振鈴控制電路由蜂鳴器、兩個三極管和電阻組成。當(dāng)單片機的P1.7端發(fā)出一個高電平時,觸發(fā)蜂鳴器蜂鳴。為使系統(tǒng)在停電時也能正常工作,由兩組 電源給系統(tǒng)供電,一組是將220V/50Hz的市電經(jīng)變壓、整流、穩(wěn)壓得到5V直流電,另一組由12V/4A的可充電電流經(jīng)斬波、隱壓、穩(wěn)壓得到5V直流 電。一般由市電供電,并對可充電電池充電。市電停電時由電池供電,12V/4A的可充電電流能使系統(tǒng)連續(xù)工作24h以上。
3 軟件設(shè)計
本非接觸式IC卡 預(yù)收費電度表的程序采用了模塊化的設(shè)計,整個系統(tǒng)由用戶端電度表計費程序和供電部門存未及管理程序兩部分組成。每部分程序又由單片機系統(tǒng)程序和VB用戶接 口程序兩部分組成,單片機程序和VB程序之間采用VB的通訊控件MSComm通過RS232進行通訊,通訊協(xié)議使用基于ASCII碼的查詢命令、中斷收發(fā) 字符。微機通過事先約定好的字符對單片機實現(xiàn)控制,單片機通過判斷微機發(fā)來的不同字符,執(zhí)行不同的單片機子程序。
3.1 用戶端電度表計費程序
3.1.1 單片機系統(tǒng)程序的主要功能
(1)讀取有效的非接觸式IC卡功能。對卡進行防沖突、密碼認證、卡號認證等操作,并讀出卡中存儲的數(shù)據(jù),然后將卡清零、???。
(2)完成電度表的預(yù)收費功能。將從IC卡中讀出的電度數(shù)與單片機內(nèi)存剩余的電度數(shù)相加,并存回內(nèi)存。
(3)顯示功能。系統(tǒng)周期性地掃描,動態(tài)顯示機內(nèi)剩余的電度數(shù)。此外,當(dāng)讀寫IC卡發(fā)生錯誤時,顯示出錯信號。
(5)電度計數(shù)功能。系統(tǒng)實時監(jiān)測電表轉(zhuǎn)盤讀數(shù)頭(紅外發(fā)射接收管)發(fā)來的脈沖信號,當(dāng)脈沖信號由高電平變?yōu)榈碗娖綍r,計數(shù)器COUNT加1;而當(dāng)COUNT值等于電表常數(shù)(轉(zhuǎn)/度)時,剩余電度數(shù)減1,用電量加1,同時COUNT清零。
(6)報警斷電功能。當(dāng)機內(nèi)剩余電度數(shù)小于15度時,點亮預(yù)告用電量將盡的發(fā)光二極管指示器,提示用戶持卡到供電部門重新購電。而當(dāng)用戶電表中剩余電量完全用完時,控制繼電器切斷用戶供電電源。用戶只有再次存入電度數(shù)后,才能繼續(xù)供電。
單片機系統(tǒng)程序由主監(jiān)控程序、IC卡處理子程序、電度計數(shù)子程序、串行中斷服務(wù)子程序等組成,其框圖分別見圖4(a)、(b)、(c)、(d)。
3.1.2 VB用戶接口程序的主要功能
(1)顯示。根據(jù)輸入的用戶編號,顯示相應(yīng)的用戶信息。
(2)采集。將用戶編號通過通訊控件發(fā)送給單片機,單片機認證用戶編號后,返回該用戶的用電量和剩余電度數(shù)。
(3)寫入。將采集來的數(shù)據(jù)。加上用戶編號和日期,一并寫入數(shù)據(jù)庫,以供查詢。
(4)查看。查看當(dāng)用各用戶的用電量情況及剩余電度數(shù);查看所有的用電情況。
3.2 供電部門存款及管理程序
3.2.1 單片機系統(tǒng)程序的主要功能
(1)系統(tǒng)初始化設(shè)置。設(shè)置寄存器地址、中斷源入口、加載IC卡認證密碼以及設(shè)置串行口、定時器0和定時器1的工作模式等。
(2)接收微機發(fā)來的控制字符。執(zhí)行串行中斷服務(wù)子程序,如控制字符為R則執(zhí)行對IC卡的詢卡、防沖突、選卡、認證等操作,并返回給微機卡號;如控制字符為W則將用戶購買的電度數(shù)寫入IC卡,再讀出寫入的電度數(shù),然后??ā?/p>
(3)顯示功能。顯示IC卡中存入的電度數(shù),當(dāng)對IC卡操作過程中有任何錯誤時,將顯示錯誤信息,提示用戶。
程序由主程序程序和串行中斷服務(wù)子程序等組成,它們的框圖見圖5(a)、(b)。
(1)IC卡 存款功能。用戶持卡到供電部門存款,工作人員將放在讀寫器上,按“讀卡”按鈕,微機發(fā)送字符“R”給單片機,單片機執(zhí)行相應(yīng)的中斷處理后返回卡號。系統(tǒng)根 據(jù)返回的卡號顯示對應(yīng)的用戶信息,確認無誤后,輸入用戶交納的金額,系統(tǒng)自動轉(zhuǎn)化成電度數(shù)。按下“存款”按扭,將電度數(shù)存入IC卡,同時將存款的相關(guān)信息寫入數(shù)據(jù)庫,以供查詢。
(2)查詢功能。查詢用戶信息、IC卡信息以及用戶的用電情況,可以根據(jù)輸入的用戶編號或電卡號進行有選擇地查詢。
(3)維護功能。對數(shù)據(jù)庫的維護包括添加新的記錄、刪除不需要的記錄以及對現(xiàn)有記錄的更新。本系統(tǒng)所使用的數(shù)據(jù)庫由MSAccess建立,通過VB的數(shù)據(jù)對象控件與用戶界面關(guān)聯(lián),對數(shù)據(jù)的所有操作都實時地更新所關(guān)聯(lián)的數(shù)據(jù)庫。
本文將非接觸式IC卡技術(shù)與計算機技術(shù)相結(jié)合,研制出多功能電量計量收費裝置。該系統(tǒng)實現(xiàn)了用電收費的電子化,改變了先用電后收費的不合理狀況,促進了用電計量、收費的科學(xué)化管理。該裝置利用了老式機械表的功能和結(jié)構(gòu),降低了改造的成本,適于推廣使用。
評論