版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)術(shù)誠(chéng)信承諾本人鄭重聲明:所呈交的論文是我個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)的研究成果,也不包含為獲得大學(xué)或其他教育機(jī)構(gòu)的學(xué)位或證書(shū)所使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在論文中做了明確的說(shuō)明并表示了謝意。 簽名:___________日期:____________關(guān)于論文使用授權(quán)的說(shuō)明本人完全了解大學(xué)有關(guān)保留、使用學(xué)位論文的規(guī)定,即:學(xué)校有權(quán)保留送交論文的復(fù)印件,允許論文被查閱和借閱;學(xué)校可以公布論文的全部或部分內(nèi)容,可以采用影印、縮印或其他復(fù)制手段保存論文。簽名:___________導(dǎo)師簽名:___________日期:____________第[19]。同時(shí),還需要考慮數(shù)據(jù)格式的轉(zhuǎn)換、通信速率的匹配、通信中斷的處理等問(wèn)題,以?xún)?yōu)化通信效率,流程圖如圖5-3所示。圖5-3GSM子程序流程圖按鍵執(zhí)行程序設(shè)計(jì)按鍵消抖子程序的設(shè)計(jì),是為了避免機(jī)械按鍵抖動(dòng)引起的誤輸入問(wèn)題,提高系統(tǒng)的響應(yīng)可靠性。該程序主要包括兩個(gè)部分:檢測(cè)和消抖處理。在檢測(cè)階段,程序通過(guò)讀取按鍵輸入狀態(tài),判斷是否有按鍵按下。如果檢測(cè)到有按鍵按下,則進(jìn)入消抖處理階段。在消抖處理階段,程序啟動(dòng)一個(gè)短暫的延時(shí),通常為幾毫秒至數(shù)十毫秒之間。在此延時(shí)期間,程序不響應(yīng)任何按鍵輸入,以消除機(jī)械抖動(dòng)所帶來(lái)的影響。延時(shí)結(jié)束后,程序再次確認(rèn)按鍵狀態(tài),若仍然為按下?tīng)顟B(tài),則認(rèn)為這是一次有效的按鍵輸入,執(zhí)行相應(yīng)的操作。否則,將按鍵狀態(tài)判定為無(wú)效輸入,直接返回。需要注意的是,消抖處理的時(shí)間間隔需要根據(jù)具體的應(yīng)用場(chǎng)景進(jìn)行調(diào)整,以確保既能消除機(jī)械抖動(dòng)的影響,又不會(huì)對(duì)用戶(hù)的實(shí)際操作造成過(guò)大的延遲和不必要的等待。同時(shí),在設(shè)計(jì)該子程序時(shí),還需要考慮到多鍵同時(shí)按下等情況,以保證程序的可靠性和穩(wěn)定性。該子程序會(huì)被主程序周期性調(diào)用,確保所有的按鍵輸入都能得到可靠的處理,流程圖如圖5-4所示。圖5-4按鍵子程序流程圖系統(tǒng)仿真與實(shí)物調(diào)試系統(tǒng)仿真在完成硬件電路設(shè)計(jì)和軟件程序設(shè)計(jì)后,需要對(duì)整個(gè)系統(tǒng)進(jìn)行仿真與實(shí)物調(diào)試,以驗(yàn)證系統(tǒng)的各個(gè)功能是否正常運(yùn)行。在制作實(shí)物之前先對(duì)系統(tǒng)進(jìn)行仿真,測(cè)試方案是否可行。仿真調(diào)試步驟如下:(1)檢查線路連接,各模塊能否正常工作如圖6-1所示,運(yùn)行仿真后,各模塊均能正常工作,線路連接正確。圖6-1系統(tǒng)仿真圖(2)按鍵功能調(diào)試流量傳感器由滑動(dòng)電阻模擬仿真,可以直接通過(guò)滑動(dòng)電阻調(diào)節(jié)天然氣量,不需要設(shè)置按鍵來(lái)調(diào)節(jié),所以仿真按鍵用來(lái)改變報(bào)警值,按下K1可以看到屏幕上顯示當(dāng)前的報(bào)警值,如圖6-2所示,然后可以通過(guò)K2、K3將報(bào)警值調(diào)整到想要的數(shù)值。如圖6-3、6-4所示。(3)報(bào)警功能以及短信模擬功能調(diào)試設(shè)置的報(bào)警值是10,當(dāng)天然氣剩余量低于10,系統(tǒng)就會(huì)蜂鳴器報(bào)警,并且發(fā)送短信,如圖6-5所示。圖6-2按鍵1調(diào)試圖圖6-3按鍵2調(diào)試圖(4)用氣管理功能調(diào)試當(dāng)天然氣剩余量為0時(shí),電磁閥關(guān)閉,停止供氣,如圖6-6所示。圖6-4按鍵3調(diào)試圖圖6-5短信提醒仿真圖圖6-6用氣管理仿真圖(5)防拆卸功能調(diào)試當(dāng)有人試圖暴力拆卸系統(tǒng)時(shí),單片機(jī)接收到信號(hào),然后通過(guò)蜂鳴器進(jìn)行報(bào)警,指示燈亮起,提醒用戶(hù),如圖6-7所示。圖6-7防拆卸仿真圖該仿真是由proteus軟件進(jìn)行仿真的,由于仿真軟件里沒(méi)有STC12單片機(jī),所以用基本功能相近的51單片機(jī)代替進(jìn)行仿真。由于有些功能無(wú)法進(jìn)行,只是對(duì)基本功能與一些可以模擬的功能進(jìn)行了仿真,部分功能由于無(wú)法仿真,選擇了仿真相似的功能,所以與實(shí)物有一定區(qū)別。實(shí)物調(diào)試仿真系統(tǒng)能正常運(yùn)行,部分可以通過(guò)仿真實(shí)現(xiàn)的功能正常,說(shuō)明方案可行。然后制作實(shí)物并且進(jìn)行實(shí)物調(diào)試,調(diào)試的主要步驟如下:(1)檢查硬件電路連接是否正確,各模塊是否能夠正常供電。系統(tǒng)實(shí)物圖片如圖6-8所示,打開(kāi)開(kāi)關(guān)各模塊能正常供電如圖6-9所示,可以判斷電路連接正確。(2)數(shù)據(jù)存儲(chǔ)功能調(diào)試如圖6-9所示,開(kāi)機(jī)后通過(guò)顯示屏可以看到歷史用過(guò)的用氣記錄都在第一行顯示,即存儲(chǔ)功能正常(3)流量檢測(cè)功能調(diào)試由于現(xiàn)實(shí)中不能接到真正的天然氣管道檢測(cè)流量,可以通過(guò)往流量計(jì)進(jìn)氣口吹氣的方法模擬氣體通過(guò),可以看到剩余的氣量隨著從吹氣而減少,如圖6-10所示。6-8系統(tǒng)實(shí)物圖圖6-9實(shí)物供電調(diào)試圖圖6-10流量監(jiān)測(cè)調(diào)試圖(4)報(bào)警功能及短信功能調(diào)試到天然氣剩余量低于10時(shí)就會(huì)報(bào)警提醒,蜂鳴器報(bào)警無(wú)法用圖片表示,因此設(shè)計(jì)了黃色小燈,報(bào)警時(shí)黃燈亮起,如圖6-11所示,以及發(fā)送短信給指定手機(jī),如圖6-12所示。圖6-11報(bào)警功能調(diào)試圖圖6-12短信模塊調(diào)試圖(5)用氣管理功能調(diào)試當(dāng)剩余氣量為零時(shí),電磁閥關(guān)閉,停止供氣。進(jìn)行充值后再次供氣,由于實(shí)物無(wú)法看到閥門(mén)是否關(guān)閉,此功能在上面仿真調(diào)試中體現(xiàn)。按下K2,可以看到顯示屏上出現(xiàn)一個(gè)+,此時(shí)可以給IC卡充值,如圖6-13所示。將IC卡放到感應(yīng)區(qū)即可給IC卡充值,如圖6-14所示。圖6-13IC卡充值狀態(tài)圖6-14充值卡再次按下按鍵按關(guān)閉IC卡充值,再次將IC卡放置感應(yīng)區(qū)即可給系統(tǒng)充值。由于之前給剩余的氣量用完了,是報(bào)警狀態(tài)(黃燈亮),當(dāng)給系統(tǒng)充值之后,停止報(bào)警(黃燈熄滅,綠地亮)如圖6-15、6-16所示。圖6-15系統(tǒng)充值圖6-16充值完成(6)防拆卸功能調(diào)試當(dāng)有人試圖暴力拆卸系統(tǒng)時(shí)會(huì)觸動(dòng)輕觸開(kāi)關(guān)。系統(tǒng)會(huì)蜂鳴器報(bào)警以及亮紅燈報(bào)警,如圖6-17所示。圖6-17防拆卸調(diào)試(7)電壓檢測(cè)功能調(diào)試由于調(diào)試使用的電源一直都是穩(wěn)定的電源,所以不會(huì)出現(xiàn)電壓低報(bào)警的情況,此功能用仿真的形式體現(xiàn),為了檢測(cè)到運(yùn)行時(shí)的電壓,系統(tǒng)設(shè)計(jì)了K1,按下即會(huì)顯示此時(shí)的電壓,如圖6-18所示。圖6-18電壓檢測(cè)調(diào)試圖結(jié)論該住宅自動(dòng)抄表系統(tǒng)設(shè)計(jì)主要由STC12C5A60S2單片機(jī)、電源模塊、LCD1602顯示模塊、RC522射頻模塊、流量傳感器模塊、電磁閥模塊、報(bào)警模塊、GSM模塊和按鍵模塊組成。該系統(tǒng)具有用氣管理、自動(dòng)供停氣、顯示、報(bào)警、防拆卸、遠(yuǎn)程發(fā)送短信和電池電壓檢測(cè)等功能。實(shí)現(xiàn)了對(duì)天然氣用量的自動(dòng)抄讀和管理,為用戶(hù)提供了更加安全、方便的燃?xì)馐褂皿w驗(yàn)。隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展,人們對(duì)生活品質(zhì)的要求也越來(lái)越高。在居民生活中,天然氣作為一種清潔高效的能源,其使用量不斷提升。而傳統(tǒng)的手工抄表和管理方式存在諸多問(wèn)題,如費(fèi)時(shí)費(fèi)力、數(shù)據(jù)易丟失、安全隱患大等問(wèn)題。因此,開(kāi)展住宅自動(dòng)抄表系統(tǒng)的研究具有重要的現(xiàn)實(shí)意義和廣闊的應(yīng)用前景。值得一提的是,系統(tǒng)還具有較強(qiáng)的擴(kuò)展性,未來(lái)可以進(jìn)一步增加更多的智能化功能,如遠(yuǎn)程控制、大數(shù)據(jù)分析等,以適應(yīng)未來(lái)智能家居的發(fā)展趨勢(shì)。由于時(shí)間和能力有限,我的畢業(yè)設(shè)計(jì)還存在一些缺陷和不足之處。在某些模塊的設(shè)計(jì)和實(shí)現(xiàn)上還不夠完善,在創(chuàng)新性和實(shí)用性方面有待加強(qiáng),在用戶(hù)體驗(yàn)方面還有待提升致謝此次設(shè)計(jì)的圓滿(mǎn)完成了,我的大學(xué)生活即將也要畫(huà)上句號(hào),在此我要衷心感謝在我畢業(yè)設(shè)計(jì)過(guò)程中給予我?guī)椭娜?。首先,感謝我的指導(dǎo)老師。正是老師的悉心指導(dǎo)與精神鼓舞,給予了我極大的啟迪,讓我們對(duì)嵌入式系統(tǒng)設(shè)計(jì)有了全新認(rèn)識(shí),也樹(shù)立了鍥而不舍鉆研的決心。在設(shè)計(jì)的每一個(gè)關(guān)鍵階段,老師都毫無(wú)保留地傳授自己的專(zhuān)業(yè)知識(shí)和科研經(jīng)驗(yàn)。當(dāng)我遇到疑惑和困難時(shí),老師總是耐心解答、細(xì)心指點(diǎn),引導(dǎo)我走出迷惑,最終將理論知識(shí)付諸實(shí)踐。正是老師嚴(yán)格的要求和精雕細(xì)琢,才讓我最終交出了一份令人滿(mǎn)意的答卷。其次,感謝我的家人。我的求學(xué)路上,他們一直是我堅(jiān)強(qiáng)的后盾,給予我無(wú)盡的關(guān)愛(ài)和支持,在我遇到困難和挫折時(shí),他們始終在我身后,給予我?guī)椭?,讓我?jiān)定信心,勇往直前。再次,感謝我的女朋友。在我大學(xué)的最后階段,我想借此機(jī)會(huì)向你表達(dá)我最深切的感謝。你不僅是我的女朋友更是我生命中最重要的伴侶和支持者。你的理解和耐心是我能夠?qū)W⑴c畢業(yè)設(shè)計(jì)的支柱,你的陪伴讓我的生活充滿(mǎn)了快樂(lè)和意義。在這個(gè)特殊的時(shí)刻,我想讓你知道,你的付出并沒(méi)有被忽視,它們是我能夠走到今天的重要力量。最后,感謝一下自己,在這四年里,不斷學(xué)習(xí),拼搏,克服了許多困難,也取得了一定的成績(jī)。面對(duì)壓力和困惑時(shí),始終保持著積極的心態(tài)。參考文獻(xiàn)王陽(yáng)陽(yáng),閆淑娟.智能抄表系統(tǒng)的研究及應(yīng)用[J].世界有色金屬,2021(18):231-232.曾乃鴻.當(dāng)前自動(dòng)抄表技術(shù)的現(xiàn)狀和展望[J].華東電力,2001(01):57-59.SanghoonJ,E.KL.ComparisonofAMIandSCADASystemsforLeakDetectionandLocalizationinWaterDistributionNetworks[J].JournalofWaterResourcesPlanningandManagement,2023,149(11):28-39張曉偉.智能電表及集抄系統(tǒng)的運(yùn)行維護(hù)策略[J].現(xiàn)代商貿(mào)工業(yè),2016,37(32):196-198.譚志強(qiáng),黃懿.自動(dòng)抄表技術(shù)的發(fā)展[J].電測(cè)與儀表,2009,46(01):1-5.張幸.智能遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)[J].科學(xué)技術(shù)創(chuàng)新,2020(17):90-91.徐自遠(yuǎn),顧德祥,錢(qián)穎雪等.單片機(jī)技術(shù)與技能訓(xùn)練[M].北京.清華大學(xué)出版社,2014:06-15孫書(shū)鷹,陳志佳,寇超.新一代嵌入式微處理器STM32F103開(kāi)發(fā)與應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2010,31(12):59-63.柴建民.LUGB渦街流量計(jì)的技術(shù)特點(diǎn)與應(yīng)用[J].世界有色金屬,2015(05):48-50.蘇杰仁.OLED屏顯示分析與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2023,7(13):53-57.宋鳳娟,付侃,薛雅麗.STC12C5A60S2單片機(jī)高速A/D轉(zhuǎn)換方法[J].煤礦機(jī)械,2010,31(06):219-221.黃鈺.智能遠(yuǎn)程抄表系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].成都.電子科技大學(xué),2021:28-39張軍.燃?xì)膺h(yuǎn)程自動(dòng)抄表系統(tǒng)的研究與設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2019,32(02):39-40.劉兵,陳宗鋆.基于物聯(lián)網(wǎng)技術(shù)的IC卡工業(yè)燃?xì)獗磉h(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研發(fā)[J].儀表技術(shù),2017(1):5-9韓華剛,李迎春,易曉明,等.基于MSP430單片機(jī)的新型智能IC卡天然氣表設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(09):137-140.曹鋒.無(wú)線智能抄表系統(tǒng)設(shè)計(jì)[J].信息系統(tǒng)工程,2011(11):117-118.蘇杰仁.字符型LCD1602顯示分析與實(shí)現(xiàn)[J].科技資訊,2022,20(22):9-12RanZ,XiaoLuS,MinWC,etal.Designofelectricpowerremotemeterreadingsystem[J].JournalofPhysics:ConferenceSeries,2021,1802(3):032030.王藍(lán)儀,徐磊,汪向華,等.基于GSM的天然氣自動(dòng)抄表系統(tǒng)設(shè)計(jì)[J].山西電子技術(shù),2020(04):33-36.楊迪,呂云彤,冀明.電能表遠(yuǎn)程抄表系統(tǒng)通信方式設(shè)計(jì)研究[J].波譜學(xué)雜志,2023,40(04):481.附錄1外文參考文獻(xiàn)(原文、譯文)電力遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)RanZhang,XiaoLuSun,WeiMinChen,LiZhongStateGridSichuanElectricPowerCorporationMeteringCenter,ChengduSichuan、610045*Correspondingauthor:ran_zhang2020@摘要:記錄用戶(hù)用電量是電力部門(mén)每月的例行工作,往往需要耗費(fèi)大量的物力和人力。因此,利用新的技術(shù)手段,借助遠(yuǎn)程和本地自動(dòng)抄表技術(shù),達(dá)到自動(dòng)抄表監(jiān)控電能表的目的,提高工作效率,真正實(shí)現(xiàn)自動(dòng)化用電管理,遠(yuǎn)程電能表抄表系統(tǒng)成為電網(wǎng)公司替代抄表問(wèn)題的解決方案。該系統(tǒng)可滿(mǎn)足遠(yuǎn)程電能表抄表系統(tǒng)在一定范圍內(nèi)對(duì)用戶(hù)電能表的遠(yuǎn)程數(shù)據(jù)記錄、采集和實(shí)時(shí)監(jiān)控功能。1.導(dǎo)言目前,電表的改革正在有條不紊地進(jìn)行。遠(yuǎn)程自動(dòng)抄表技術(shù)的發(fā)展對(duì)用戶(hù)用電管理水平的提高起到了積極的作用。計(jì)算機(jī)的主要特點(diǎn)是精度高、速度快。這些特性可用于遠(yuǎn)程抄表。在系統(tǒng)設(shè)計(jì)中采用該方法,可以減輕抄表員的工作強(qiáng)度,避免不必要的勞動(dòng)損失,同時(shí)有助于降低允差率和漏失。因此,可以說(shuō)遠(yuǎn)程自動(dòng)抄表系統(tǒng)從根本上解決了人工抄表的所有弊端。根據(jù)省公司高、低壓用戶(hù)抄表工作要求,采用閉環(huán)運(yùn)維支持方式支持高、低壓用戶(hù)。日常工作調(diào)整在閉環(huán)運(yùn)維系統(tǒng)的WEB端進(jìn)行,現(xiàn)場(chǎng)日常例行工作通過(guò)現(xiàn)場(chǎng)手持電腦進(jìn)行調(diào)整。介紹了遠(yuǎn)程抄表系統(tǒng)的組成、工作原理、集中器的工作原理及主要模塊的功能。2.遠(yuǎn)程抄表系統(tǒng)組成圖1遠(yuǎn)程抄表系統(tǒng)框圖圖1顯示了遠(yuǎn)程抄表系統(tǒng)的組成。圖中用戶(hù)載波表的主要功能是加載載波終端。在此之后,它可以使用功率載波通信來(lái)記錄電壓、電量和已用功率。集中器在同一配電變壓器上可按設(shè)計(jì)數(shù)據(jù)分時(shí)記錄數(shù)據(jù),計(jì)算結(jié)果應(yīng)及時(shí)保存。主站的計(jì)算機(jī)也可以在集中期間使用電話網(wǎng)絡(luò)和其他通信。指令的發(fā)出還可以遠(yuǎn)程實(shí)現(xiàn)相關(guān)設(shè)置的更改。可為集中器全面讀取和管理數(shù)據(jù)。同時(shí)還可實(shí)現(xiàn)集中器下各表計(jì)的斷電控制,實(shí)現(xiàn)遠(yuǎn)程抄表。這一發(fā)展加強(qiáng)了國(guó)家對(duì)電網(wǎng)的控制,顯著提高了社會(huì)經(jīng)濟(jì)效益,并在一定程度上降低了用工和成本。為今后電力現(xiàn)代化管理奠定了堅(jiān)實(shí)的基礎(chǔ)。3.集中器工作原理集中器在整個(gè)遠(yuǎn)程自動(dòng)抄表系統(tǒng)中的作用相當(dāng)于人腦。計(jì)算機(jī)的核心是CPU。這也是通信抄表設(shè)備最關(guān)鍵的部分。用于完成集中器與中央服務(wù)器之間的串口連接。通訊功能,借助RS232和RS485兩個(gè)接口模塊,實(shí)現(xiàn)采集器與集中器之間的通訊功能。同時(shí)存儲(chǔ)采集器發(fā)送的Flash內(nèi)存,通過(guò)LCD和鍵盤(pán)對(duì)采集器進(jìn)行初始化和參數(shù)化。設(shè)置。其工作原理如圖2所示圖2集中器工作原理框圖集中器可以根據(jù)已編程和設(shè)置的不同頻帶復(fù)制儀表控制計(jì)劃,并對(duì)各負(fù)荷頻段的電表主站進(jìn)行雙向視頻數(shù)據(jù)實(shí)時(shí)傳輸。內(nèi)部電路可以連接到控制系統(tǒng)的無(wú)線廣播時(shí)間總線,并且可以執(zhí)行自動(dòng)定時(shí)讀取儀表的控制命令,存儲(chǔ)抄表主站的實(shí)時(shí)數(shù)據(jù),并通過(guò)各種無(wú)線網(wǎng)絡(luò)介質(zhì)與抄表主站進(jìn)行實(shí)時(shí)數(shù)據(jù)交換。集中器的功能是將位于變頻區(qū)的本地載波射頻電能表與車(chē)站的本地網(wǎng)絡(luò)設(shè)備相連。實(shí)時(shí)自動(dòng)記錄車(chē)站數(shù)據(jù),采集管理終端和車(chē)站載波電能表的相關(guān)數(shù)據(jù)??梢詫?shí)時(shí)存儲(chǔ)和儲(chǔ)存。保存。數(shù)據(jù)通過(guò)移動(dòng)電話線或移動(dòng)電話線自動(dòng)傳輸或發(fā)送到國(guó)家電力局計(jì)算機(jī)數(shù)據(jù)中心。4.集中器組件數(shù)據(jù)集中器的主要部件包括RAM、CPU、指示電路、直流電源和接口。主要采用RS232接口和載波接口與外部單片機(jī)系統(tǒng)進(jìn)行通信。以下是主要組成部分:(a).直流電源:電壓為5V的直流電源(b).基于LCD的觸摸顯示電路:主要采用TSC2200RHB芯片。(c).控制模塊:控制芯片型號(hào)為STM32F103ZET6(d).接臺(tái)電路:主要有RS485和RS232兩個(gè)專(zhuān)用接口,這兩個(gè)接口主要依靠電纜實(shí)現(xiàn)計(jì)算機(jī)與抄表機(jī)之間的通信。(e).NANDFLASH存儲(chǔ)器模塊:NANDFLASH存儲(chǔ)器可以存儲(chǔ)從收集器傳送來(lái)的用戶(hù)數(shù)據(jù)。(f).仿真器接口:使用ARMJTAG芯片連接計(jì)算機(jī)進(jìn)行調(diào)試。工作原理,CPU和RAM的工作原理與傳統(tǒng)計(jì)算機(jī)相差不大。本文將介紹該接口的具體工作原理。RS232接口:RS232接口主要包括DB9接口和DB25兩種,本文主要采用9針D插座和外部設(shè)備進(jìn)行數(shù)據(jù)傳輸。對(duì)于TXD和RSD.=-3V~-15v,“o"=+3~+15V,在CTS、RTS、DTR、DSR和DCD的控制線上:信號(hào)有效(開(kāi),開(kāi)狀態(tài),正電壓)=+3V~+15V信號(hào)無(wú)效(OFF,OFF狀態(tài),負(fù)電壓)=-3v~-15vD型插座所有引腳上的電平信號(hào)為EIA電平:“1”=-3V~-15v,“0"=+3~+15V。EIA電平需要通過(guò)長(zhǎng)達(dá)100米的導(dǎo)線傳輸后,同時(shí),在導(dǎo)線的消耗衰減之后,仍然可以區(qū)分“1”或“0”。因此,當(dāng)數(shù)據(jù)集中器將信號(hào)傳輸?shù)紻型時(shí),當(dāng)插座連接時(shí),一些其他信號(hào)必須轉(zhuǎn)換為D型信號(hào),通過(guò)D型插座傳輸?shù)狡渌盘?hào)需要EIA級(jí)別轉(zhuǎn)換為其他級(jí)別。電平轉(zhuǎn)換功能是RS232的主要功能,需要保持信號(hào)的一致性才能實(shí)現(xiàn)完美的通信。RS485主要采用差分信號(hào)的負(fù)邏輯,+2V~+6V可以用“1”表示,-6V~-2V可以用“0"表示。RS485主要包括兩線制和四線制兩種接線方式。半雙工通信方式主要基于二線制,全雙工通信方式主要基于四線制。連接RS-485的通信鏈路僅通過(guò)雙膠線連接每個(gè)接口的“A”和“B”端。然而,該信號(hào)連接方法不連接到信號(hào)地。雖然在很多場(chǎng)合都能正常工作,但使用時(shí)存在隱患。主要有兩個(gè)原因:(a).共模干擾問(wèn)題:RS-485接口采用差模傳輸信號(hào),不需要對(duì)某一參考點(diǎn)進(jìn)行信號(hào)檢測(cè)。系統(tǒng)只需要檢測(cè)兩條差分線路之間的信號(hào)差。然而,人們忽略了一個(gè)實(shí)際問(wèn)題,即收發(fā)器具有一定范圍的共模電壓。對(duì)于RS-485,收發(fā)器的共模電壓范圍為-7~+12V。只有滿(mǎn)足此條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)電纜中的共模電壓大于上述范圍,將影響通信信號(hào)的穩(wěn)定性,甚至損壞接口。(b).EMI問(wèn)題:驅(qū)動(dòng)器輸出信號(hào)的共模部分必須通過(guò)返回路徑傳輸。如果沒(méi)有低阻抗的返回路徑(通常是信號(hào)地),將產(chǎn)生輻射到源端,整個(gè)總線將成為巨大的天線發(fā)射器輻射電磁波5.STM32F103ZET6芯片測(cè)試上一整頁(yè)電路測(cè)試測(cè)試STM32F103ZET6芯片是否存在虛焊、元器件焊接、短路、開(kāi)路等問(wèn)題。完成所有檢查后,需要測(cè)試芯片I/O功能和每個(gè)引腳功能。您可以使用萬(wàn)用表測(cè)試STM32F103ZET6。主要檢査點(diǎn)包括相鄰引腳之間是否存在短路或引腳與PCB之間是否存在虛焊。如果存在短路,芯片可能會(huì)燒毀,如果存在虛焊,可能會(huì)影響芯片的正常工作。經(jīng)逐一測(cè)試,STM32F103ZET6無(wú)短路、虛焊現(xiàn)象。上電后測(cè)量系統(tǒng)電源電壓為+-5V,STM32F103ZET6與電源連接的所有引腳均為3.3V,一切正常。5.1.復(fù)位引腳、晶體振蕩器引腳、串行通信引腳測(cè)試復(fù)位引腳:電路系統(tǒng)在電源線上上電和斷電后,NRST(引腳25)為高電平。按下復(fù)位按鈕后,NRST(引腳25)變?yōu)榈碗娖?,因此我們可以?zhǔn)確地確定每個(gè)復(fù)位引腳電路的正常工作。晶體振蕩器引腳:借助示波器觀察STM32F103ZET6晶體振蕩器引腳。您可以看到與晶體振蕩器頻率相同的正弦波,振幅約為1V,這證明晶體振蕩器電路可以正常工作。串口通訊引腳:用keil編寫(xiě)相應(yīng)的程序,使某個(gè)引腳輸出方波信號(hào),同時(shí)編譯下載到STM32F103ZET6。在示波器的幫助下,在引腳附近可以看到方波信號(hào),這證明電路和串行通信引腳之間的連接是正常的。5.2.I/O端口功能測(cè)試程序設(shè)計(jì)I/O端口是STM32F103ZET6和外部組件之間數(shù)據(jù)交換的通道。I/O端口有兩種工作模式,一種是總線模式,另一種是I/O端口。由于系統(tǒng)外圍設(shè)備眾多,且大多基于位置控制,故采用I/O方式。(a).測(cè)試字節(jié)輸出模式STM32F103ZET6有七組/0口,主要是PA、PB、PC、PD、PE、PF、PG,所謂字節(jié)輸出方法就是允許STM32F103ZET6的某組I/O口輸出一個(gè)字節(jié)。測(cè)試時(shí)STM32F103ZET6只有一組I/O口可以按照相應(yīng)的程序輸出一個(gè)字節(jié)。證明字節(jié)輸出方法正常。測(cè)試后,所有字節(jié)的端口輸出被證明是正確的。(b).測(cè)試位輸出模式STM32F103ZET6每組I/O端口共8位,位輸出模式是使每組的任意位輸出為0或1測(cè)試時(shí),只需讓STM32F103ZET6每組8位按程序輸出0或1,即可說(shuō)明位輸出模式正常。測(cè)試完成后,各端口各位輸出模式正常。6.結(jié)論抄表系統(tǒng)可以說(shuō)是現(xiàn)代計(jì)量技術(shù)、信息通信技術(shù)、計(jì)算機(jī)技術(shù)的完美結(jié)合。能夠考慮數(shù)據(jù)收集和處理、能耗測(cè)量等。將城市居民用能信息與綜合治理相結(jié)合,不僅可以大大提高部門(mén)工作效率,而且可以滿(mǎn)足當(dāng)今用戶(hù)對(duì)繳費(fèi)的新需求。附錄2電路原理圖附錄3系統(tǒng)電路PCB圖附錄4元器件清單序號(hào)名稱(chēng)規(guī)格/型號(hào)數(shù)量1電阻10K12電阻2K13電阻1K54電阻39045電解電容10uf16瓷片電容30p27電解電容470uf18電解電容100uf29二極管IN4007110液晶顯示屏LCD1602111發(fā)光二極管Gre112發(fā)光二極管Yel113發(fā)光二極管Red114PNP三極管8550215單片機(jī)STC12C5A60S2116三端穩(wěn)壓5VLM7805117三端穩(wěn)壓3.3VAMS1117-3.3118RFID模塊RFID-RC552119晶振11.0592120流量計(jì)LUGB121繼電器ERLAY-SPDT122蜂鳴器BELL123電源開(kāi)關(guān)8*8MM124防拆卸按鍵KW11125按鍵6*6*5MM3附錄5源程序#include<STC12C5A60S2.h>//頭文件#include"main.h"#include"mfrc522.h"#include<intrins.h> #include<string.h>#include<stdio.h>/********************************************************************************************///數(shù)值類(lèi)別typedefsignedcharint8;//有符號(hào)8位整型變量typedefunsignedcharuint8;//無(wú)符號(hào)8位整型變量typedefsignedintint16;//有符號(hào)16位整型變量typedefunsignedintuint16;//無(wú)符號(hào)16位整型變量typedefsignedlongint32;//有符號(hào)32位整型變量typedefunsignedlonguint32;//無(wú)符號(hào)32位整型變量/******************************************************************************///全局變量staticuint8bz=0,UART_dat[4],command;staticuint8ds1=0,ds2=0,ds3=0,mc=0;//定時(shí)中斷次數(shù)staticuint16ds0=0;unsignedcharcodedata1[16]={0xC8,0x00,0x00,0x00,0x37,0xFF,0xFF,0xFF,0xC8,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};//200//M1卡的某一塊寫(xiě)為如下格式,則該塊為錢(qián)包,可接收扣款和充值命令//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反uint8data2[4]={0x00,0x00,0x00,0x01};//存值減值金額uint8codeDefaultKey[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//密碼uint8TYPE_DATA[2];//類(lèi)型uint8ID_DATA[4];//ID地址uint8value_DATA[4];//卡里面的值 uint8g_ucTempbuf[20];//uint8tt=0;bitflag_pro;bitflag_sk=0;uint16ad0;uint32tot=0,mon=0,card=0;uint8a=0,b=0,c=0,d=0;//定義特殊寄存器sfrwdt_contr=0xc1; //定義看門(mén)狗地址sfrisp_data=0xc2; //定義ISP數(shù)據(jù)寄存器sfrisp_addrh=0xc3; //定義ISP地址高8位sfrisp_addrl=0xc4; //定義ISP地址低8位sfrisp_cmd=0xc5; //定義ISP命令模式寄存器sfrisp_trig=0xc6; //定義ISP命令觸發(fā)寄存器sfrisp_contr=0xc7; //定義ISP控制模式寄存器//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%驅(qū)動(dòng)程序開(kāi)始%%%%%%%%%%%%%%%%%%%%%%%%%%%%///*******************************************************************************函數(shù)名稱(chēng):DelaymS()*功能:1mS延時(shí)函數(shù)*入口參數(shù):16位整型延時(shí)時(shí)間(mS)******************************************************************************/voidDelaymS(uint16ms){ uint8a,b,c; while(--ms!=0){for(c=3;c>0;c--)for(b=197;b>0;b--)for(a=2;a>0;a--); }}/******************************************************************************///@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LCM1602模塊驅(qū)動(dòng)開(kāi)始@@@@@@@@@@@@@@@@@@@@@@@@@@@///******************************************************************************///定義LCM1602指令集#define CMD_clear 0x01 //清除屏幕#define CMD_back 0x02 //DDRAM回零位#define CMD_dec1 0x04 //讀入后AC(指針)減1,向左寫(xiě)#define CMD_add1 0x06 //讀入后AC(指針)加1,向右寫(xiě)#define CMD_dis_gb1 0x0f //開(kāi)顯示_開(kāi)光標(biāo)_開(kāi)光標(biāo)閃爍#define CMD_dis_gb2 0x0e //開(kāi)顯示_開(kāi)光標(biāo)_關(guān)光標(biāo)閃爍#define CMD_dis_gb3 0x0c //開(kāi)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍#define CMD_OFF_dis 0x08 //關(guān)顯示_關(guān)光標(biāo)_關(guān)光標(biāo)閃爍#define CMD_set82 0x38 //8位總線_2行顯示#define CMD_set81 0x30 //8位總線_1行顯示(上邊行)#define CMD_set42 0x28 //4位總線_2行顯示#define CMD_set41 0x20 //4位總線_1行顯示(上邊行)#define lin_1 0x80 //4位總線_1行顯示(上邊行)#define lin_2 0xc0 //4位總線_1行顯示(上邊行)/******************************************************************************//****************************************************************************[底層協(xié)議]*函數(shù)名稱(chēng):LCM1602_TestBusy()*功能:LCM1602測(cè)忙,若LCM1602處于忙狀態(tài),本函數(shù)將繼續(xù)測(cè)忙,直到LCM1602處于非忙狀態(tài)。*入口參數(shù):無(wú)*出口參數(shù):無(wú)*******************************************************************************/voidLCM1602_TestBusy(void){LCM1602_DB0_DB7=0xff;//設(shè)備讀狀態(tài)LCM1602_RS=0;LCM1602_RW=1;LCM1602_E=1;while(LCM1602_Busy);//等待LCM不忙LCM1602_E=0;//}/****************************************************************************[底層協(xié)議]*函數(shù)名稱(chēng):LCM1602_WriteCMD()*功能:向LCM1602寫(xiě)命令*入口參數(shù):LCM1602_command要寫(xiě)入LCM1602的命令字節(jié)*出口參數(shù):無(wú)********************************************************************************/voidLCM1602_WriteCMD(uint8LCM1602_command){LCM1602_TestBusy();LCM1602_DB0_DB7=LCM1602_command;LCM1602_RS=0;LCM1602_RW=0;LCM1602_E=1;LCM1602_E=0;}/****************************************************************************[底層協(xié)議]*函數(shù)名稱(chēng):LCM1602_WriteData()*功能:向LCM1602寫(xiě)數(shù)據(jù)*入口參數(shù):LCM1602_data要寫(xiě)入LCM1602的數(shù)據(jù)字節(jié)*出口參數(shù):無(wú)********************************************************************************/voidLCM1602_WriteData(uint8LCM1602_data){LCM1602_TestBusy();LCM1602_DB0_DB7=LCM1602_data;LCM1602_RS=1;LCM1602_RW=0;LCM1602_E=1;LCM1602_E=0;}/**********************************************************************************函數(shù)名稱(chēng):LCM1602_Init()*功能:LCM1602初始化*入口參數(shù):無(wú)*出口參數(shù):無(wú)*********************************************************************************/voidLCM1602_Init(void){LCM1602_WriteCMD(CMD_set82);//顯示模式設(shè)置:顯示2行,每個(gè)字符為5*7個(gè)像素LCM1602_WriteCMD(CMD_clear);//顯示清屏LCM1602_WriteCMD(CMD_back);//數(shù)據(jù)指針指向第1行第1個(gè)字符位置LCM1602_WriteCMD(CMD_add1);//顯示光標(biāo)移動(dòng)設(shè)置:文字不動(dòng),光標(biāo)右移LCM1602_WriteCMD(CMD_dis_gb3);//顯示開(kāi)及光標(biāo)設(shè)置:顯示開(kāi),光標(biāo)關(guān),閃爍關(guān)}/**********************************************************************************函數(shù)名稱(chēng):print()*功能:向LCM發(fā)送一個(gè)ASIIC字符串,長(zhǎng)度48字符之內(nèi)*入口參數(shù):ASIIC字符串*出口參數(shù):無(wú)*********************************************************************************/voidprint(uint8a,uint8*str){ LCM1602_WriteCMD(a); while(*str!='\0'){ LCM1602_WriteData(*str++);} *str=0;}/*********************************************************************************函數(shù)名稱(chēng):print2()*功能:向LCM發(fā)送一個(gè)數(shù)字串,長(zhǎng)度48字符之內(nèi)*入口參數(shù):數(shù)字串*出口參數(shù):無(wú)********************************************************************************/voidprint2(uint8a,uint8t){//設(shè)置寫(xiě)入地址和數(shù)據(jù) LCM1602_WriteCMD(a); LCM1602_WriteData(t);}//******************************************************************************///@@@@@@@@@@@@@@@@@@@@@@@@@@@LCM1602模塊驅(qū)動(dòng)結(jié)束@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A/D轉(zhuǎn)換程序開(kāi)始@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///*********************************************************************************函數(shù)名稱(chēng):ad()*功能:AD轉(zhuǎn)換*入口參數(shù):通道號(hào)*出口參數(shù):AD轉(zhuǎn)換值*******************************************************************************/uint16ad(uint8j)////////////////////////////////////端口定義///////////////////////////////////////////////////////////////////////MFRC500sbitMF522_NSS=P1^1;sbitMF522_SCK=P1^2;sbitMF522_SI=P1^3;sbitMF522_SO=P1^4;sbitMF522_RST=P1^5;//顯示屏sbitrs =P2^7; sbitrw =P2^6;sbitep =P2^5;sbitkey_bj =P3^4;//開(kāi)蓋檢測(cè)開(kāi)關(guān)sbitkey_ys =P3^5;//模擬用水按鈕sbitkey_cz =P3^6;//模擬充值按鈕sbitkey_fw =P3^7;//復(fù)位開(kāi)關(guān)sbitled_dcf =P2^2;//電磁閥指示燈——綠色sbitled_yed =P2^1;//余額低指示燈——黃色sbitled_bj =P2^0;//開(kāi)蓋報(bào)警指示燈——紅色sbitout_dcf =P2^3;//電磁閥sbitout_beep =P1^6;//蜂鳴器//////////////////////////////////////////////////////////////////////函數(shù)原型/////////////////////////////////////////////////////////////////////voidInitializeSystem();voidDelaymS(unsignedinttime);voidlcd_wcmd(unsignedcharcmd);voidlcd_pos(unsignedcharpos);voidlcd_init(void);voidLCD1206a(void);voidLCD1206b(void);bitlcd_bz(void);voidpro(void);voidkey(void);voidwritek(void);voidreadk(void);voidinit_k(void);#include<intrins.h>#include"reg52.h"#include"main.h"#include"mfrc522.h"#defineMAXRLEN18///////////////////////////////////////////////////////////////////////功能:尋卡//參數(shù)說(shuō)明:req_code[IN]:尋卡方式//0x52=尋感應(yīng)區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡//0x26=尋未進(jìn)入休眠狀態(tài)的卡//pTagType[OUT]:卡片類(lèi)型代碼//0x4400=Mifare_UltraLight//0x0400=Mifare_One(S50)//0x0200=Mifare_One(S70)//0x0800=Mifare_Pro(X)//0x4403=Mifare_DESFire//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdRequest(unsignedcharreq_code,unsignedchar*pTagType){charstatus;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08);WriteRawRC(BitFramingReg,0x07);SetBitMask(TxControlReg,0x03);ucComMF522Buf[0]=req_code;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x10)){*pTagType=ucComMF522Buf[0];*(pTagType+1)=ucComMF522Buf[1];}else{status=MI_ERR;}returnstatus;}///////////////////////////////////////////////////////////////////////功能:防沖撞//參數(shù)說(shuō)明:pSnr[OUT]:卡片序列號(hào),4字節(jié)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdAnticoll(unsignedchar*pSnr){charstatus;unsignedchari,snr_check=0;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ClearBitMask(Status2Reg,0x08);WriteRawRC(BitFramingReg,0x00);ClearBitMask(CollReg,0x80);ucComMF522Buf[0]=PICC_ANTICOLL1;ucComMF522Buf[1]=0x20;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);if(status==MI_OK){ for(i=0;i<4;i++){*(pSnr+i)=ucComMF522Buf[i];snr_check^=ucComMF522Buf[i];}if(snr_check!=ucComMF522Buf[i]){status=MI_ERR;}}SetBitMask(CollReg,0x80);returnstatus;}///////////////////////////////////////////////////////////////////////功能:選定卡片//參數(shù)說(shuō)明:pSnr[IN]:卡片序列號(hào),4字節(jié)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdSelect(unsignedchar*pSnr)//卡片類(lèi)型{charstatus;unsignedchari;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_ANTICOLL1;ucComMF522Buf[1]=0x70;ucComMF522Buf[6]=0;for(i=0;i<4;i++){ ucComMF522Buf[i+2]=*(pSnr+i); ucComMF522Buf[6]^=*(pSnr+i);}CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);ClearBitMask(Status2Reg,0x08);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x18)){status=MI_OK;}else{status=MI_ERR;}returnstatus;} ///////////////////////////////////////////////////////////////////////功能:驗(yàn)證卡片密碼//參數(shù)說(shuō)明:auth_mode[IN]:密碼驗(yàn)證模式//0x60=驗(yàn)證A密鑰//0x61=驗(yàn)證B密鑰//addr[IN]:塊地址//pKey[IN]:密碼//pSnr[IN]:卡片序列號(hào),4字節(jié)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdAuthState(unsignedcharauth_mode,unsignedcharaddr,unsignedchar*pKey,unsignedchar*pSnr){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=auth_mode;ucComMF522Buf[1]=addr;for(i=0;i<6;i++){ucComMF522Buf[i+2]=*(pKey+i);}for(i=0;i<6;i++){ucComMF522Buf[i+8]=*(pSnr+i);}//memcpy(&ucComMF522Buf[2],pKey,6);//memcpy(&ucComMF522Buf[8],pSnr,4);status=PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);if((status!=MI_OK)||(!(ReadRawRC(Status2Reg)&0x08))){status=MI_ERR;}returnstatus;}///////////////////////////////////////////////////////////////////////功能:讀取M1卡一塊數(shù)據(jù)//參數(shù)說(shuō)明:addr[IN]:塊地址//pData[OUT]:讀出的數(shù)據(jù),16字節(jié)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdRead(unsignedcharaddr,unsignedchar*pData){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_READ;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status==MI_OK)&&(unLen==0x90))//{memcpy(pData,ucComMF522Buf,16);}{for(i=0;i<16;i++){*(pData+i)=ucComMF522Buf[i];}}else{status=MI_ERR;}returnstatus;}///////////////////////////////////////////////////////////////////////功能:寫(xiě)數(shù)據(jù)到M1卡一塊//參數(shù)說(shuō)明:addr[IN]:塊地址//pData[IN]:寫(xiě)入的數(shù)據(jù),16字節(jié)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdWrite(unsignedcharaddr,unsignedchar*pData){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_WRITE;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}if(status==MI_OK){//memcpy(ucComMF522Buf,pData,16);for(i=0;i<16;i++){ucComMF522Buf[i]=*(pData+i);}CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf[16]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}}returnstatus;} ///////////////////////////////////////////////////////////////////////功能:扣款和充值//參數(shù)說(shuō)明:dd_mode[IN]:命令字//0xC0=扣款//0xC1=充值//addr[IN]:錢(qián)包地址//pValue[IN]:4字節(jié)增(減)值,低位在前//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdValue(unsignedchardd_mode,unsignedcharaddr,unsignedchar*pValue){charstatus;unsignedintunLen;unsignedchari,ucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=dd_mode;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}if(status==MI_OK){//memcpy(ucComMF522Buf,pValue,4);for(i=0;i<16;i++){ucComMF522Buf[i]=*(pValue+i);}CalulateCRC(ucComMF522Buf,4,&ucComMF522Buf[4]);unLen=0;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,6,ucComMF522Buf,&unLen);if(status!=MI_ERR){ status=MI_OK; }}if(status==MI_OK){ucComMF522Buf[0]=PICC_TRANSFER;ucComMF522Buf[1]=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}}returnstatus;}///////////////////////////////////////////////////////////////////////功能:備份錢(qián)包//參數(shù)說(shuō)明:sourceaddr[IN]:源地址//goaladdr[IN]:目標(biāo)地址//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdBakValue(unsignedcharsourceaddr,unsignedchargoaladdr){charstatus;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_RESTORE;ucComMF522Buf[1]=sourceaddr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}if(status==MI_OK){ucComMF522Buf[0]=0;ucComMF522Buf[1]=0;ucComMF522Buf[2]=0;ucComMF522Buf[3]=0;CalulateCRC(ucComMF522Buf,4,&ucComMF522Buf[4]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,6,ucComMF522Buf,&unLen);if(status!=MI_ERR){status=MI_OK;}}if(status!=MI_OK){returnMI_ERR;}ucComMF522Buf[0]=PICC_TRANSFER;ucComMF522Buf[1]=goaladdr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if((status!=MI_OK)||(unLen!=4)||((ucComMF522Buf[0]&0x0F)!=0x0A)){status=MI_ERR;}returnstatus;} ///////////////////////////////////////////////////////////////////////功能:命令卡片進(jìn)入休眠狀態(tài)//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdHalt(void){charstatus;unsignedintunLen;unsignedcharucComMF522Buf[MAXRLEN];ucComMF522Buf[0]=PICC_HALT;ucComMF522Buf[1]=0;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);returnMI_OK;}///////////////////////////////////////////////////////////////////////用MF522計(jì)算CRC16函數(shù)/////////////////////////////////////////////////////////////////////voidCalulateCRC(unsignedchar*pIndata,unsignedcharlen,unsignedchar*pOutData){unsignedchari,n;ClearBitMask(DivIrqReg,0x04);WriteRawRC(CommandReg,PCD_IDLE);SetBitMask(FIFOLevelReg,0x80);for(i=0;i<len;i++){WriteRawRC(FIFODataReg,*(pIndata+i));}WriteRawRC(CommandReg,PCD_CALCCRC);i=0xFF;do{n=ReadRawRC(DivIrqReg);i--;}while((i!=0)&&!(n&0x04));pOutData[0]=ReadRawRC(CRCResultRegL);pOutData[1]=ReadRawRC(CRCResultRegM);}///////////////////////////////////////////////////////////////////////功能:復(fù)位RC522//返回:成功返回MI_OK/////////////////////////////////////////////////////////////////////charPcdReset(void){MF522_RST=1; DelaymS(1);MF522_RST=0;DelaymS(1);MF522_RST=1; DelaymS(1);WriteRawRC(CommandReg,PCD_RESETPHASE); //01,0F DelaymS(1);WriteRawRC(ModeReg,0x3D);//和Mifare卡通訊,CRC初始值0x6363 11WriteRawRC(TReloadRegL,30);//2DWriteRawRC(TReloadRegH,0); //2CWriteRawRC(TModeReg,0x8D); //2AWriteRawRC(TPrescalerReg,0x3E); //2B//WriteRawRC(TxASKReg,0x40);//調(diào)試和測(cè)試用returnMI_OK;}///////////////////////////////////////////////////////////////////////功能:讀RC632寄存器//參數(shù)說(shuō)明:Address[IN]:寄存器地址//返回:讀出的值/////////////////////////////////////////////////////////////////////unsignedcharReadRawRC(unsignedcharAddress){unsignedchari,ucAddr;unsignedcharucResult=0;MF522_SCK=0;MF522_NSS=0;ucAddr=((Address<<1)&0x7E)|0x80;for(i=8;i>0;i--){MF522_SI=((ucAddr&0x80)==0x80);MF522_SCK=1;ucAddr<<=1;MF522_SCK=0;}for(i=8;i>0;i--){MF522_SCK=1;ucResult<<=1;ucResult|=(bit)MF522_SO;MF522_SCK=0;}MF522_NSS=1;MF522_SCK=1;returnucResult;}///////////////
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年政府公共安全監(jiān)控技術(shù)合同范本3篇
- 2024年版建設(shè)項(xiàng)目招標(biāo)協(xié)調(diào)合同
- 三年級(jí)教學(xué)計(jì)劃3篇
- 員工工作計(jì)劃
- 2024-2030年中國(guó)羥甲煙胺片行業(yè)發(fā)展?jié)摿︻A(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 服裝銷(xiāo)售工作計(jì)劃
- 學(xué)習(xí)部工作計(jì)劃4篇
- 去超市實(shí)習(xí)報(bào)告范文集合7篇
- 銀行員工辭職信
- 關(guān)于教師職稱(chēng)述職報(bào)告匯編5篇
- 2022-2023年北京版數(shù)學(xué)三年級(jí)上冊(cè)期末考試測(cè)試卷及答案(3套)
- 《籃球高運(yùn)球和低運(yùn)球》教案(共三篇)
- 什么是民營(yíng)經(jīng)濟(jì)
- 四川省2021-2022學(xué)年物理高一下期末監(jiān)測(cè)試題含解析
- “婦科護(hù)理三基三嚴(yán)”考試試題及答案
- 貴州省遵義市2023-2024學(xué)年九年級(jí)上學(xué)期期末學(xué)業(yè)水平監(jiān)測(cè)英語(yǔ)試卷
- 2024年廣東省學(xué)士學(xué)位英語(yǔ)歷年真題附答案
- 材料力學(xué)之彈塑性力學(xué)算法:等效塑性應(yīng)變計(jì)算:塑性流動(dòng)理論與塑性硬化.Tex.header
- (高清版)AQ∕T 8006-2018 安全生產(chǎn)檢測(cè)檢驗(yàn)機(jī)構(gòu)能力的通 用要求
- 電梯井道改造施工合同
- 插座安裝 服務(wù)合同范本
評(píng)論
0/150
提交評(píng)論