2015年本科C語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文設(shè)計(jì)論文_第1頁(yè)
2015年本科C語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文設(shè)計(jì)論文_第2頁(yè)
2015年本科C語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文設(shè)計(jì)論文_第3頁(yè)
2015年本科C語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文設(shè)計(jì)論文_第4頁(yè)
2015年本科C語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

安徽理工大學(xué)軟件學(xué)院安徽理工大學(xué)軟件學(xué)院智能公交卡終端系統(tǒng)軟件實(shí)現(xiàn)摘要隨著城市規(guī)模的擴(kuò)大,交通已經(jīng)成為城市發(fā)展的一個(gè)重要因素。公交車射頻卡可以提供更為方便、快捷的服務(wù)。面向開放式公交系統(tǒng)的乘客下車站臺(tái)刷卡系統(tǒng)及數(shù)據(jù)傳輸技術(shù)的改善,充分運(yùn)用了交通,電路即傳輸?shù)葘I(yè)的知識(shí)。本文對(duì)公交射頻刷卡器的系統(tǒng)設(shè)計(jì)進(jìn)行了研究。采用美國(guó)ATMEL公司的ATmega16單片機(jī)位控制核心,應(yīng)用PHILIPS公司的MIFARE射頻技術(shù)實(shí)現(xiàn)設(shè)計(jì)。本設(shè)計(jì)主要是系統(tǒng)軟件設(shè)計(jì)。這部分描述了所應(yīng)用的各部分的程序原理和代碼,運(yùn)用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡(jiǎn)潔明了;采用軟件AVRstudio4軟件進(jìn)行編程,sscom串口調(diào)試助手以及AVRfighter程序燒錄軟件進(jìn)行燒錄。關(guān)鍵詞ATmega16;射頻技術(shù);AVR;

SmartbuscardterminalsystemsoftwareAbstractAlongwiththeextensionofthecityscale,thetransportationhasalreadybecomeanimportantfactorofthecitydevelopment.Thebusradiofrequencycardcanprovidemoreconvenienceandfasterservance.Passengerstogetoffthesitecreditcardsystemforopenbussystemdevelopmentistheimprovementofexistingpublictransportcircuitandtransmissiontechnology.Thistextcarryonaresearchtothesystemdesignofthebusradiofrequencycardmachine,ItadoptedsinglechipmicrocomputeroftheATmega16oftheAmericanATMELcompanyasthecontrolcoreandappliedtheMIFAREradiofrequencytechniqueofthePHILIPScompanytorealizethedesign,Thisdesignofthesystemincludetwoparts:thehardwaredesignandthesoftwaredesign.Thehardwaredesignpartdescribedthehardwarecircuitsandtheprincipleofeachpart,mainlyinclude:displaycircuits,Thewatchdogcircuit,the93C46serialEEPROM,thebuffercircuitandreadcardmachine.Also,itgavethesystemhardwareoftheintegraldesignprinciplediagram.Aadoptingassemblelanguagetoeditthesoftware,usingblockingstructureandgivingtheflowchartofeachblockmakethelogicalRelationoftheprogramdesignmoresimplyanddirectlytounderstand.ItadoptedAVRstudio4todebugtheprogram.Moreover,thistextalsogavedetailedprogramlist.Keywords:ATmega16;射頻技術(shù);AVR;安徽理工大學(xué)軟件學(xué)院目錄23057摘要 i30118Abstract ii22628第一章緒論 1140901.1研究背景 1317241.2設(shè)計(jì)的意義和目的 1272561.3系統(tǒng)設(shè)計(jì)總體要求 220891.4系統(tǒng)設(shè)計(jì)的方案選擇 2205511.4.1IC卡的選擇 2155671.4.2用戶信息的存儲(chǔ) 2284821.4.3程序編寫 323481第二章軟件的總體設(shè)計(jì) 418072.1系統(tǒng)軟件設(shè)計(jì)思想 4323292.2系統(tǒng)軟件邏輯組成 427122.3系統(tǒng)流程圖 413988第三章軟件各個(gè)模塊的設(shè)計(jì) 627573.1主程序 6256053.2rc522.c程序 6317593.2.1SPI相關(guān)操作 667823.2.2讀RC632寄存器ReadRaw(add) 9219463.2.3寫RC632寄存器Write(add,data) 9168593.2.4清除RC632寄存器ClearBitMask(reg,mask) 9163013.2.5設(shè)置RC632寄存器SetBitMask(reg,mask) 9277823.2.6通訊PcdComMF522() 9277173.2.7尋卡PcdRuquest(reg,*pTagType) 9119283.2.8放沖撞PcdAnticoll(*psnr) 10260133.2.9Mc522復(fù)位PcdReset() 10160043.2.10開啟天線PcdAntennaOn() 1046303.2.11關(guān)閉天線PcdAntennaOff() 10133093.2.12端口的初始化init_port_rc522() 1046473.3LCD.c 1179283.3.1LCD12864寫數(shù)據(jù)(write_com(cmd)) 11270793.3.2LCD12864寫數(shù)據(jù)(write_data(dat)) 11163943.3.3LCD12864定位顯示數(shù)據(jù)write_lcd(line,row,*str,len) 12148163.3.4LCD12863定位顯示數(shù)據(jù) 12134243.3.5清屏LCD12864(clr_screen()) 12129803.3.6LCD12864初始化(init_lcd) 12152283.4bell.c(蜂鳴器) 12281903.4.1初始化蜂鳴器(init_bell()) 13102983.4.2蜂鳴器響(bell_poll()) 1364133.5usart.c(串口通信) 13270283.5.1USART數(shù)據(jù)寄存器UDR 14198873.5.2USART控制和狀態(tài)寄存器UCSRA 1492753.5.3USART控制和狀態(tài)寄存器UCSRB 15194973.5.4USART控制和狀態(tài)寄存器UCSRC 16299783.5.5波特率寄存器UBRRL和UBRRH 16281073.5.6初始化串口(init_usart()) 17266553.5.7發(fā)送數(shù)據(jù)(send_data(data)) 17202533.5.8接受數(shù)據(jù)receive_data 17201303.6連接數(shù)據(jù)庫(kù)以及PC的串口程序 17202943.6.1連接數(shù)據(jù)庫(kù) 17147713.6.2PC串口程序 19142223.7Mifare1非接觸式卡說明 20163983.7.1Mifare1非接觸式卡包含兩個(gè)部分:RF射頻接口電路和數(shù)字電路 20133223.7.2Mifare1卡的存儲(chǔ)結(jié)構(gòu) 2113454第四章軟件測(cè)試 22201634.1數(shù)據(jù)庫(kù)單元測(cè)試 22228684.1.1插入元素測(cè)試 22268214.1.2更新數(shù)據(jù)測(cè)試 23156074.2串口發(fā)送卡號(hào)單元測(cè)試 24186864.3集成測(cè)試 246785結(jié)論 2522239參考文獻(xiàn) 266659致謝 271805外文原文 2832510外文翻譯 42安徽理工大學(xué)軟件學(xué)院第一章緒論1.1研究背景隨著我國(guó)經(jīng)濟(jì)的快速發(fā)展,各個(gè)大中小型城市的發(fā)展日新月異,人民生活水平逐漸提高,我國(guó)的汽車保有量也在持續(xù)的快速的增長(zhǎng),許多國(guó)家公共交通部門開始應(yīng)用先進(jìn)的信息與通信技術(shù)進(jìn)行公交車定位、車輛監(jiān)控、自動(dòng)駕駛、計(jì)算機(jī)輔助調(diào)度及提供各種公共交通信息以提高公共服務(wù)水平。其中如美國(guó),日本,加拿大,英國(guó),法國(guó),韓國(guó)等國(guó)家都投入了較大的人力和物力從事智能公交系統(tǒng)的研究,在國(guó)際處于領(lǐng)先地位,并已取得顯著的成果。美國(guó)城市公共交通管理局(UMTA)已經(jīng)啟動(dòng)了智能公交系統(tǒng)項(xiàng)目“AdvancedPublicTransportationSystems(APTS)”,經(jīng)過現(xiàn)場(chǎng)實(shí)驗(yàn),UMTA關(guān)于APTS的評(píng)價(jià)是:”APTS可以顯著提高公交交通服務(wù)水平,吸引更多乘客采用公交和合伙乘車的出行模式,從而帶來了減少交通擁擠,空氣污染和能源消耗等一系列社會(huì)效益”。根據(jù)1998年美國(guó)運(yùn)輸部的聯(lián)邦公交交通信息的實(shí)時(shí)信息發(fā)布理論,以及使用先進(jìn)的電子,通訊技術(shù)提高公交效率和服務(wù)水平的實(shí)施技術(shù)。具體包括車隊(duì)管理,出行者信息,電子收費(fèi)和交通需求管理等幾個(gè)方面的研究。其中車隊(duì)管理主要研究通信系統(tǒng),地理信息系統(tǒng),自動(dòng)車輛定位系統(tǒng),自動(dòng)乘客計(jì)數(shù),公交運(yùn)營(yíng)軟件和交通信號(hào)優(yōu)先。日本城市公交交通智能化的發(fā)展經(jīng)歷了三個(gè)階段:二十世紀(jì)70年代末開始應(yīng)用公交汽車定位系統(tǒng)—公交汽車接近顯示系統(tǒng);80年代初開始應(yīng)用公交交通運(yùn)行管理系統(tǒng),其中包括乘客自動(dòng)統(tǒng)計(jì),運(yùn)行監(jiān)視和運(yùn)行控制;進(jìn)入90年代,由于機(jī)動(dòng)車數(shù)量的增長(zhǎng)和嚴(yán)重交通擁擠的影響,要保持正常的行車速度是十分困難的,由此引起的公交交通的不便性和不可靠性導(dǎo)致乘客數(shù)量的急劇減少。東京都交通局開發(fā)了城市公共交通運(yùn)輸控制系統(tǒng)(CTCS),旨在改進(jìn)公共汽車服務(wù),重新贏得乘客。在CTCS中,公共交通運(yùn)營(yíng)管理系統(tǒng)的一個(gè)基本的框架,其目的是通過掌握運(yùn)行情況以及乘客數(shù)據(jù)實(shí)現(xiàn)精確平穩(wěn)的公共交通運(yùn)營(yíng)服務(wù)。它將運(yùn)營(yíng)中的公共汽車和控制室之間建立信息交換,并利用誘導(dǎo)和雙向通訊的方法,將服務(wù)信息提供給服務(wù)人員和駕駛?cè)藛T,同時(shí)這些信息也通過進(jìn)站汽車指示系統(tǒng)和公交與鐵路接駁信息系統(tǒng)提供給乘客。公共交通綜合管理系統(tǒng)包括運(yùn)營(yíng)數(shù)據(jù),乘客計(jì)數(shù),監(jiān)視和控制公共汽車運(yùn)營(yíng)和乘客服務(wù)等功能,其中乘客服務(wù)功能中包括進(jìn)站汽車指示,信息查詢和公共交通與鐵路接駁信息提示。公共交通綜合管理系統(tǒng)的硬件包括公交主控中心,區(qū)域中心以及路邊,車庫(kù)和車載設(shè)備等。1.2設(shè)計(jì)的意義和目的設(shè)計(jì)意義:公交卡的廣泛推廣,將使公交管理邁上一個(gè)新臺(tái)階。公交射頻卡不僅避免了因找零引起的尷尬;此外,射頻卡的小巧、輕便、美觀,便于乘客攜帶;同時(shí),使用公交射頻卡,可減少現(xiàn)金流通量,也減少了疾病傳播的途徑;減少了乘客上車付費(fèi)的時(shí)間,縮短了公交車到站停靠的時(shí)間,一定程度上緩解了城市的交通壓力。設(shè)計(jì)的目的:通過此次的系統(tǒng)設(shè)計(jì),了解射頻卡以及GPS模塊的使用原理;掌握單片機(jī)原理和接口設(shè)計(jì);掌握實(shí)用電子信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的方法。1.3系統(tǒng)設(shè)計(jì)總體要求總體要求:(一)打開刷卡機(jī),連接上數(shù)據(jù)庫(kù),當(dāng)讀卡器尋到卡時(shí),讀卡器會(huì)通過串口給PC機(jī)發(fā)送卡號(hào),然后PC通過接受的卡號(hào),查詢數(shù)據(jù)庫(kù),把對(duì)應(yīng)的卡號(hào)金額減1,然后通過數(shù)據(jù)庫(kù)把計(jì)算后的金額發(fā)送給單片機(jī),在LCD12864上顯示對(duì)應(yīng)的卡號(hào)和卡內(nèi)剩余金額。(二)卡內(nèi)金額的充值,打開串口,數(shù)據(jù)庫(kù),讀卡器尋到卡時(shí),會(huì)將卡號(hào)發(fā)送給PC機(jī),PC根據(jù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)匹配卡號(hào),然后輸入充值金額,完成充值。(三)卡的注冊(cè),打開串口,數(shù)據(jù)庫(kù),讀卡器尋到卡時(shí),會(huì)將卡號(hào)發(fā)送給PC機(jī),輸入身份證號(hào)碼,PC將卡號(hào)和身份證號(hào)碼插入數(shù)據(jù)庫(kù)。(四)卡的掛失,打開串口,數(shù)據(jù)庫(kù),讀卡器尋到卡時(shí),會(huì)將卡號(hào)發(fā)送給PC機(jī),刪除數(shù)據(jù)庫(kù)中相應(yīng)的卡號(hào)和卡的信息。1.4系統(tǒng)設(shè)計(jì)的方案選擇1.4.1IC卡的選擇方案一:采用接觸式IC卡實(shí)現(xiàn)設(shè)計(jì)方案二:采用非接觸式IC卡實(shí)現(xiàn)設(shè)計(jì)分析:接觸式的IC卡通過機(jī)械觸電從讀卡器獲取能量和交換數(shù)據(jù);非接觸式IC卡通過線圈射頻感應(yīng)從讀卡器獲取能量和交換數(shù)據(jù),所以又稱射頻卡。與接觸式IC卡相比非接觸式卡更有優(yōu)勢(shì):可靠性高,非接觸式IC卡與讀卡器之間無(wú)機(jī)械接觸,避免了由于接觸讀寫而產(chǎn)生的各種故障;由于非接觸通訊,讀卡器在10cm范圍內(nèi)就可以對(duì)卡片操作,所以不必插拔卡,非常方便用戶使用;加密性好,非接觸式IC卡有IC芯片,感應(yīng)天線組成,并完全密封在一個(gè)標(biāo)準(zhǔn)PVC卡片中,無(wú)外漏部分。顯然,射頻卡在實(shí)際應(yīng)用中更有優(yōu)勢(shì)。因此,在設(shè)計(jì)過程中,選擇第二中方案。1.4.2用戶信息的存儲(chǔ)方案一:存儲(chǔ)在公交卡內(nèi)方案二:存儲(chǔ)在數(shù)據(jù)庫(kù)中分析:公交刷卡機(jī)是應(yīng)用于公交車上的,各車上的用戶數(shù)據(jù)難以保持同步,除非無(wú)線通信,考慮當(dāng)用戶的公交卡丟失時(shí),采用方案一卡中的信息可能造成泄漏,并且掛失的時(shí)候由于沒有存儲(chǔ)用戶信息而造成很多困難,可靠性安全性能低。而方案二實(shí)現(xiàn)了對(duì)公交卡的統(tǒng)一管理,操作方便,可靠性高,易于管理維護(hù)。所以選擇方案二。1.4.3程序編寫方案一:用匯編編程實(shí)現(xiàn)編碼程序方案二:用C語(yǔ)言實(shí)現(xiàn)程序的編寫分析:?jiǎn)纹瑱C(jī)可以采用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。匯編語(yǔ)言是機(jī)器語(yǔ)言,指令的執(zhí)行速度快,節(jié)省存儲(chǔ)空間。在本次設(shè)計(jì)中,C語(yǔ)言比較好理解,易于編程人員和其他人員看懂,基于C語(yǔ)言的通俗易懂符合人的正常邏輯,所以選擇用C語(yǔ)言來編寫程序。

第二章軟件的總體設(shè)計(jì)2.1系統(tǒng)軟件設(shè)計(jì)思想系統(tǒng)軟件按各電路分模塊編寫,形成各具獨(dú)立功能的子程序。主程序則對(duì)這些子程序進(jìn)行調(diào)用,以實(shí)現(xiàn)功能。當(dāng)讀卡器調(diào)用PcdRequest()函數(shù)來尋進(jìn)入天線內(nèi)的卡片,尋到卡后,調(diào)用PcdAnticoll()函數(shù)來防沖撞,防完沖撞后,會(huì)把卡的序列號(hào)(卡的唯一標(biāo)識(shí))放入數(shù)組CardRevBuf中,四個(gè)字節(jié)。然后調(diào)用函數(shù)send_data()函數(shù)通過串口把卡的序列號(hào)發(fā)送給PC,PC的串口接收程序是用JAVA來實(shí)現(xiàn),通過調(diào)用函數(shù)readPort()來接收卡的序列號(hào)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的相關(guān)操作(增,刪,改,查)。通過調(diào)用writePort()函數(shù)來把更新后的卡中的金額寫回卡中,并且通過調(diào)用lcd_show_val()函數(shù)來把卡的卡號(hào),金額顯示在LCD12864上,隨之蜂鳴器響來表示操作成功。2.2系統(tǒng)軟件邏輯組成主要分為RFID程序;RC522程序;LCD程序;USART程序;BELL程序。分析:RFID程序?yàn)橹鞒绦颍到y(tǒng)執(zhí)行的入口,通過調(diào)用其它模塊的函數(shù)實(shí)現(xiàn)功能。RC522程序?yàn)樽x卡器程序,來尋到進(jìn)入天線內(nèi)的卡,獲得卡號(hào)。LCD程序?yàn)橐壕э@示程序,來顯示主界面和卡的相關(guān)信息。USART程序?yàn)榇谕ㄐ懦绦?,來?shí)現(xiàn)單片機(jī)與PC中數(shù)據(jù)庫(kù)的交互。BELL程序?yàn)榉澍Q器程序,來實(shí)現(xiàn)提示相關(guān)操作成功。2.3系統(tǒng)流程圖如圖2-1所示圖2-1主程序流程圖用戶從開始刷卡,然后讀卡器尋卡,尋到卡后把卡號(hào)發(fā)送到數(shù)據(jù)庫(kù),如果卡號(hào)已經(jīng)在數(shù)據(jù)庫(kù)中存在并且金額大于等于1,則進(jìn)行扣費(fèi),否則,數(shù)據(jù)庫(kù)不會(huì)進(jìn)行任何操作。第三章軟件各個(gè)模塊的設(shè)計(jì)3.1主程序分析:包含對(duì)讀卡器,LCD12864,串口的初始化函數(shù)。顯示界面,以及調(diào)用尋卡,防沖撞函數(shù),發(fā)送卡的序列號(hào),接受返回的金額數(shù)據(jù),蜂鳴器的響來知識(shí)操作成功。3.2rc522.c程序分析:讀卡器是通過SPI總線來與單片機(jī)通信讀SPI數(shù)據(jù),寫SPI數(shù)據(jù),讀RC632寄存器,寫RC532寄存器,清除RC532寄存器,設(shè)置RC532寄存器,計(jì)算CRC16,通過RC522和ISO14443卡通訊,尋卡,防沖撞,選定卡片,復(fù)位RC522,設(shè)置RC522的工作方式,開啟天線,關(guān)閉天線,初始化RC522端口,初始化RC522模塊。3.2.1SPI相關(guān)操作SPI(SerialPeripheralInterface--串行外設(shè)接口)總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。SPI有三個(gè)寄存器分別為:控制寄存器SPCR,狀態(tài)寄存器SPSR,數(shù)據(jù)寄存器SPDR。SPI包含4條線MOSI輸出數(shù)據(jù),MISO輸入數(shù)據(jù),SCK時(shí)鐘,SS使能主要特征:(一)全雙工,3線同步數(shù)據(jù)傳輸(二)可選擇的主/從操作模式(三)數(shù)據(jù)傳送時(shí),可選擇LSB(低位在前)方式或MSB(高位在前)方式(四)7種可編程的位傳送速率(五)數(shù)據(jù)傳送結(jié)束中斷標(biāo)志(六)寫沖突標(biāo)志位保護(hù)(七)從閑置模式下被喚醒(八)倍速(CK/2)SPI傳送(主機(jī)模式下)(1)數(shù)據(jù)寄存器SPDR如圖3-1所示圖3-1SPDRSPI數(shù)據(jù)寄存器為可讀/寫的寄存器,用于在通用寄存器組與SPI移位寄存器之間傳送數(shù)據(jù)。寫數(shù)據(jù)到該寄存器時(shí),將啟動(dòng)或準(zhǔn)備數(shù)據(jù)傳送;讀該寄存器時(shí),讀到的是移位寄存器配備的接受緩沖區(qū)中的值(2)控制寄存器SPCR如圖3-2所示圖3-2SPCR位7--SPIE:SPI中斷允許。當(dāng)全局中斷觸發(fā)允許標(biāo)志位I位1,且SPIE為1時(shí),如果SPCR寄存器的中斷標(biāo)志SPIF位為1,則系統(tǒng)響應(yīng)SPI中斷。位6--SPE:SPI允許。當(dāng)該位寫入1時(shí),允許SPI接口。在進(jìn)行SPI的任何操作時(shí),必須將該位置位。位5--DORD:數(shù)據(jù)溢出順序。當(dāng)DORD=1時(shí),數(shù)據(jù)傳送為L(zhǎng)SB方式,即低位在先;當(dāng)DORD=0時(shí),數(shù)據(jù)傳送為MSB方式,即高位在先。位4--MSTR:主/從機(jī)選擇方式。如果SS端口設(shè)置為輸入,且在MSTR為1時(shí)被外部拉低,則MSTR將清除,同時(shí)SPSR中的SPIF位置為1,此時(shí)SPI由主機(jī)模式轉(zhuǎn)換為從機(jī)模式。此后用戶需要重新設(shè)置位MSTR,才能再次將SPI設(shè)置為主機(jī)方式。位3--CPOL:SCK時(shí)鐘極性選擇。當(dāng)該位被設(shè)置為時(shí),SCK在閑置時(shí)是高電平;為0時(shí),SCK在閑置時(shí)是低電平。如表3-1所示表3-1CPOLCPOL起始沿結(jié)束沿0上升沿下降沿1下降沿上升沿位2--CPHA:SCK時(shí)鐘相位選擇。CPHA位的設(shè)置決定了串行數(shù)據(jù)的鎖存采樣是在SCK時(shí)鐘的前沿還是后沿。CPOL和CPHA決定了SPI的工作模式。如表3-2所示表3-SEQ圖表\*ARABIC2CPHA0采樣設(shè)置1設(shè)置采樣位[1:0]--SPR1和SPR0:SPI時(shí)鐘速率選擇。這兩個(gè)標(biāo)志位與寄存器SPSR中的SPI2X位一起,用于設(shè)置主機(jī)模式下產(chǎn)生的串行時(shí)鐘SCK速率。SPR1和SPR0對(duì)于從機(jī)模式無(wú)影響。如表3-3所示表3-3SPRSPI2XSPR1SPR0SCK頻率000fosc/4001fosc/16010fosc/64011fosc/12100fosc/2101fosc/8110fosc/32111fosc/64(3)SPI的狀態(tài)寄存器SPSR如圖3-3所示圖3-3SPSR位7--SPIF:SPI中斷標(biāo)志。當(dāng)串行傳送完成時(shí),SPIF位置1.如果SPSR中的SPIF位為1,且全局中斷允許位I位1,則產(chǎn)生中斷。如果SS設(shè)置位輸入,且在SPI為主機(jī)模式時(shí)被外部拉低,則也會(huì)置位SPIF標(biāo)志。SPIF標(biāo)志位的屬性為只讀。清0SPIF有以下兩種方式:硬件方式。MCU響應(yīng)SPI中斷,轉(zhuǎn)入SPI中斷向量的同時(shí),SPIF位由硬件自動(dòng)清除。軟件方式。先讀取SPI狀態(tài)寄存器SPSR,然后再進(jìn)行一次對(duì)SPI數(shù)據(jù)寄存器SPDR的操作。位6--WCOL:寫沖突標(biāo)志。如果在SPI接口的數(shù)據(jù)傳送過程中向SPI的數(shù)據(jù)寄存器SPDR寫入數(shù)據(jù),則會(huì)置位WCOL。清0WCOL標(biāo)志只能通過以下軟件方式:先讀取SPI狀態(tài)寄存器SPCR,然后再實(shí)行一次對(duì)SPI數(shù)據(jù)寄存器SPDR的操作。位[5:1]--保留位:位0--SPI2X:倍速SPI選擇。在主機(jī)SPI模式下,當(dāng)該位寫為邏輯“1”時(shí),SPI的速度將加倍,這就意味著產(chǎn)生最小的SCK周期為MCU時(shí)鐘周期的2倍。當(dāng)SPI設(shè)置為從機(jī)模式時(shí),SCK必須低于fosc/4,才能確保有效數(shù)據(jù)傳送。(4)SPI讀時(shí)序SPIReadByte()如圖3-4所示圖3-4SPI讀時(shí)序可以看出先使能SS,然后把時(shí)鐘線SCK拉低,在輸入線上MISO讀0或1一個(gè)bit,然后把SCK拉高,即可,一次讀一個(gè)字節(jié)。(5)SPI寫時(shí)序SPIWriteByte(data)如圖3-5所示圖3-5SPI寫時(shí)序?qū)懙臅r(shí)候先使能SS,然后把時(shí)鐘線SCK拉低,在輸出線上MOSI寫0或1一個(gè)bit,然后把SCK拉高,即可,一次寫一個(gè)字節(jié)。3.2.2讀RC632寄存器ReadRaw(add)即從寄存器中相應(yīng)的地址讀取數(shù)據(jù),地址格式:1-6位是地址位,7位為1是讀,8位是0。然后調(diào)用SPIWriteByte(address)把地址寫到總線上。然后調(diào)用SPIReadByte()函數(shù)讀取相應(yīng)寄存器里面的數(shù)據(jù)。3.2.3寫RC632寄存器Write(add,data)即把數(shù)據(jù)寫到相應(yīng)的寄存器中,地址格式:1-6位是地址位,7位為0 是寫,8位是0,然后調(diào)用SPIWriteByte(address)先寫入寄存器地址。然后再調(diào)用SPIWriteByte(data)函數(shù)把數(shù)據(jù)寫入寄存器。3.2.4清除RC632寄存器ClearBitMask(reg,mask)先調(diào)用ReadRaw(reg)=tmp讀取相應(yīng)寄存器中的數(shù)據(jù),然后調(diào)用WriteRaw(reg,tmp&~mask)函數(shù)把相應(yīng)寄存器中的值設(shè)定為與完后的值。3.2.5設(shè)置RC632寄存器SetBitMask(reg,mask)先調(diào)用ReadRaw(reg)=tmp讀取相應(yīng)寄存器中的數(shù)據(jù),然后調(diào)用WriteRaw(reg,tmp|mask)函數(shù)把相應(yīng)寄存器中的值設(shè)定為或完后的值。3.2.6通訊PcdComMF522()先判斷命令com是PCD_AUTHENT(驗(yàn)證秘鑰)還是PCD_TRANSCEIVE(發(fā)送并接受數(shù)據(jù)),然后經(jīng)過相應(yīng)的寫RC632寄存器(往寄存器comienreg中斷請(qǐng)求傳遞的使能和禁能控制位),清除RC632相應(yīng)的位,寫RC632寄存器(往寄存器commandreg啟動(dòng)和停止命令的執(zhí)行)PCD_IDLE(取消當(dāng)前命令),初始化工作。然后把數(shù)據(jù)寫入數(shù)據(jù)寄存器FIFODataReg,把BitFramingReg第一位值位1(啟動(dòng)數(shù)據(jù)發(fā)送)。調(diào)整時(shí)鐘頻率,獲取完輸出的數(shù)據(jù)后,把ControlReg寄存器的最高位置1,關(guān)閉時(shí)鐘。3.2.7尋卡PcdRuquest(reg,*pTagType)先清除Status2Reg(包含接收器,發(fā)送器和數(shù)據(jù)模式檢測(cè))的最高位(內(nèi)部溫度開啟),寫RC632寄存器(BitFramingReg),把TxControlReg的最后兩位置位(TX1和TX2管腳的輸出信號(hào)將傳遞發(fā)送數(shù)據(jù)調(diào)制的13.56HZ 的能量載波信號(hào)),初始化工作。調(diào)用PcdComMF522函數(shù),最后把卡的類 型(2字節(jié))復(fù)制給pTagType指針?biāo)傅牡刂分小?.2.8放沖撞PcdAnticoll(*psnr)先清除Status2Reg(包含接收器,發(fā)送器和數(shù)據(jù)模式檢測(cè))的最高位(內(nèi)部溫度開啟),寫RC632寄存器(BitFramingReg),把TxControlReg的最 后兩位清0,清除寄存器CollReg寄存器的最高位(所有接受的位在在沖突后將被清除)。調(diào)用PcdcomMF522函數(shù),最后后的卡的序列號(hào)(卡的唯一標(biāo)識(shí))4字節(jié)寫入指針psnr指針?biāo)傅膬?nèi)存地址。3.2.9Mc522復(fù)位PcdReset()先使能復(fù)位線PC5,寫寄存器CommandReg(啟動(dòng)和停止命令寄存器)的值為PCD_RESETPHASE(0x0f復(fù)位)。寫寄存器ModeReg(定義接受和發(fā)送常模式),寫寄存器TReloadReg(描述16位長(zhǎng)的定時(shí)器重裝值),寫寄存器TModeReg(定義內(nèi)部定時(shí)器設(shè)置),寫TPrescalerReg寄存器(訪問權(quán)限),開啟天線。3.2.10開啟天線PcdAntennaOn()讀寄存器TxControlReg(控制天線驅(qū)動(dòng)Tx1和Tx2管腳的邏輯操作)。如果TxControlReg的Tx1和Tx2管腳為開啟,則設(shè)置位(最后兩位)。3.2.11關(guān)閉天線PcdAntennaOff()即清除寄存器TxControlReg的最后兩位。3.2.12端口的初始化init_port_rc522()MOSI對(duì)應(yīng)PC2,MISO對(duì)應(yīng)PC3,SCK對(duì)應(yīng)PC1,SS對(duì)應(yīng)PC0復(fù)位對(duì)應(yīng)PC5原理圖:如圖3-6所示圖3-6RFID原理圖3.3LCD.c分析LCD12864主要是把卡的相關(guān)信息顯示出來,用戶可以找到自己的卡號(hào)和卡內(nèi)剩余金額。lCD顯示用到PA0到PA7用于接收要顯示的數(shù)據(jù)。PC5控制使能,PC6控制讀寫,PC7控制操作數(shù)據(jù)寄存器還是狀態(tài)(命令)寄存器。原理圖:如圖3-7所示圖3-7LCD原理圖3.3.1LCD12864寫數(shù)據(jù)(write_com(cmd))分析:先設(shè)置PC6為0即寫,在設(shè)置PC7為0即寫的是命令寄存器,在設(shè)置PC5為1即使能,然后把數(shù)據(jù)寫給PORTA,完成。3.3.2LCD12864寫數(shù)據(jù)(write_data(dat))分析:先設(shè)置PC6為0即寫,在設(shè)置PC7為1即寫的是數(shù)據(jù)寄存器,在設(shè)置PC5為1即使能,然后把數(shù)據(jù)寫給PORTA,完成。3.3.3LCD12864定位顯示數(shù)據(jù)write_lcd(line,row,*str,len)分析:LCD12864有4行(0行開始),有8列(0列開始)。先寫命令write_com(cmd)即告訴LCD12864要在第幾行幾列顯示。再寫數(shù)據(jù)write_data(*str)LCD12864在指定位值顯示相應(yīng)數(shù)據(jù)。3.3.4LCD12863定位顯示數(shù)據(jù)分析:就是把接受到的字節(jié)轉(zhuǎn)化成對(duì)應(yīng)的字符對(duì)應(yīng)關(guān)系:如表3-4所示表3-4對(duì)應(yīng)關(guān)系字節(jié)0123456789101112131415字符0123456789ABCDEF3.3.5清屏LCD12864(clr_screen())分析:當(dāng)LCD12864要顯示不同的內(nèi)容的時(shí)候,先清屏,再顯示。3.3.6LCD12864初始化(init_lcd)寫命令write_com(0x30);選擇8bit數(shù)據(jù)流;寫命令write_com(0x0c);開顯示(無(wú)游標(biāo)、不反白);寫命令write_com(0x01);清除顯示,并且設(shè)定地址指針為00H;寫命令write_com(0x06);指定在資料的讀取及寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位。3.4bell.c(蜂鳴器)分析:蜂鳴器響意味著操作成功。PB1輸出控制著蜂鳴器。原理圖:如圖3-8所示圖3-8蜂鳴器原理圖3.4.1初始化蜂鳴器(init_bell())分析:即把PB1設(shè)為輸出。3.4.2蜂鳴器響(bell_poll())分析:PORTB^=_BV(PB1);PB11010循環(huán)蜂鳴器響。 _delay_ms(100);3.5usart.c(串口通信)分析:RX發(fā)送口PD0,TX接受口PD1。用于向電腦發(fā)送數(shù)據(jù)(即卡的序列號(hào))。原理圖:如圖3-9所示圖3-9usart原理圖AVR的異步傳輸接口USART功能全雙工通信(相互獨(dú)立的接受數(shù)據(jù)寄存器和發(fā)送數(shù)據(jù)寄存器)支持同步或異步傳輸操作。同步傳輸操作時(shí),可采用主機(jī)時(shí)鐘同步,也可采用從機(jī)時(shí)鐘同步。獨(dú)立的高精度波特率發(fā)生器,不占用定時(shí)/計(jì)數(shù)器擴(kuò)展的,支持5-9為數(shù)據(jù)位和1位或2位停止位的串行數(shù)據(jù)幀結(jié)構(gòu)。有硬件支持的奇偶校驗(yàn)位和數(shù)據(jù)校驗(yàn)。硬件實(shí)現(xiàn)的數(shù)據(jù)溢出檢測(cè)。硬件實(shí)現(xiàn)的幀錯(cuò)誤檢測(cè)。包括錯(cuò)誤起始位檢測(cè)的噪聲濾波器和數(shù)字低通濾波器。配備3個(gè)完全獨(dú)立的中斷源:TX發(fā)送完成,TX發(fā)送數(shù)據(jù)寄存器和RX接收完成支持多機(jī)通信模式支持倍速異步通信模式3.5.1USART數(shù)據(jù)寄存器UDRUDR寄存器有2個(gè)物理上分離的寄存器RXB,TXB構(gòu)成,他們使用相同的I/O地址。寫UDR的操作,是將發(fā)送的數(shù)據(jù)寫入到寄存器TXB中;讀UDR的操作,讀取的是接受寄存器RXB的內(nèi)容。當(dāng)設(shè)定使用5,6的數(shù)據(jù)幀時(shí),高位未用到的位在發(fā)送時(shí)被忽略,在接受時(shí)有硬件自動(dòng)清0.只有在USART寄存器中的UDRE位置1時(shí)(數(shù)據(jù)寄存器位空),UDR才能被寫入;否則寫入的數(shù)據(jù)將被USART忽略。在發(fā)送使能的情況下,寫入U(xiǎn)DR的數(shù)據(jù)將進(jìn)入發(fā)送器的移位寄存器,由引腳TXD串行移出。USART控制和狀態(tài)寄存器UCSRA如圖3-10所示圖3-10UCSRA位7--RXC:USART接受完成。當(dāng)收到的字符從接受移位寄存器傳到UDR中(RXB)且未被讀取時(shí),該位置1.不論是否有接受錯(cuò)誤,該位都設(shè)置。當(dāng)設(shè)置禁止接受時(shí),UDR中的數(shù)據(jù)就會(huì)刷新,同時(shí)清0RXC標(biāo)志。RXC的置位會(huì)產(chǎn)生完成的中斷請(qǐng)求。RXC在讀UDR時(shí)自動(dòng)清0.位6--TXC:USART發(fā)送完成。當(dāng)發(fā)送移位寄存器的全部數(shù)據(jù)移出后,且在數(shù)據(jù)寄存器UDR中(TXB)沒有待發(fā)送的數(shù)據(jù)時(shí),該位置1.TXC由硬件自動(dòng)清0.TXC位也可以通過向該位寫一個(gè)邏輯“1”而清“0”。位5--UDRE:USART數(shù)據(jù)寄存器空,當(dāng)寫入U(xiǎn)DR(TXB)的字符被傳送到發(fā)送移位寄存器中時(shí),該位置1,表示UDR可以寫入新的發(fā)送數(shù)據(jù)。UDRE的置1會(huì)產(chǎn)生發(fā)送數(shù)據(jù)寄存器空的中斷請(qǐng)求。系統(tǒng)復(fù)位時(shí),UDRE置1,表示USART數(shù)據(jù)寄存器為空,數(shù)據(jù)發(fā)送已準(zhǔn)備好。位4--FE:接受幀出錯(cuò)。如果在接受緩沖器中剛收到的數(shù)據(jù)幀被檢測(cè)到幀出錯(cuò),則該位置1.FE在收到數(shù)據(jù)幀的停止位“1”時(shí)被清除,此外,重寫寄存器USART的操作總是設(shè)置FE標(biāo)志位為“1”。位3--DOR:接受數(shù)據(jù)溢出出錯(cuò)。如果接受數(shù)據(jù)溢出條件被檢測(cè)到,則該位置“1”。當(dāng)接受緩沖器滿,同時(shí)接受器又檢測(cè)到一個(gè)新的起始位時(shí),則接收數(shù)據(jù)溢出出錯(cuò)發(fā)生。該位將一直保持為1,直到接受緩沖UDR被讀取。重寫寄存器USART的操作總是設(shè)置DOR標(biāo)志位為0.位2--PE:檢驗(yàn)錯(cuò)誤。在接受允許和校驗(yàn)位比較允許都使能時(shí),接受器檢測(cè)到剛接受的數(shù)據(jù)校驗(yàn)出錯(cuò),那么該位置1.該位將一直保持1,直到該接受緩沖UDR被讀取。重寫寄存器USART的操作總是設(shè)置PE標(biāo)志位為0.位1--U2X:USART傳輸速率倍速。該位只有在異步模式下有效,當(dāng)使用同步模式時(shí),應(yīng)設(shè)置該位為0.如果設(shè)置該位為1,則將使波特率分頻器的分頻比由16降到8,其效果是異步通信的傳輸速率加倍。位0--MPCM:多機(jī)通信模式允許。該位使能多機(jī)通信模式。當(dāng)MPCM位寫為“1”時(shí),所有接收到的數(shù)據(jù)幀,如果不包括地址信息的話,將被USART接受器忽略。USART的發(fā)送模塊不收MPCM設(shè)置的影響。USART控制和狀態(tài)寄存器UCSRB如圖3-11所示圖3-11UCSRB位7--RXCIE:RX接收完成中斷允許。當(dāng)該位置1時(shí),表示允許響應(yīng)接受額按成中斷請(qǐng)求。如果全局中斷標(biāo)志位I為1且RXCIE位為1,那么當(dāng)標(biāo)志位RXC置1時(shí),一個(gè)接受完成中斷服務(wù)被執(zhí)行。位6--TXCIE:TX發(fā)送完成中斷允許。當(dāng)該位置1時(shí),表示允許響應(yīng)發(fā)送完成中斷請(qǐng)求。如果全局中斷標(biāo)志位I為1,且TXCIE位為1,那么當(dāng)標(biāo)志位TXC置1時(shí),一個(gè)發(fā)送完成中斷服務(wù)被執(zhí)行。位5--UDRIE:USART數(shù)據(jù)寄存器空中斷允許。當(dāng)該位置1時(shí),表示允許響應(yīng)發(fā)送數(shù)據(jù)寄存器UDR空中斷請(qǐng)求。如果全局中斷標(biāo)志位I位1且UDRIE為1,那么當(dāng)標(biāo)志位UDRE置1時(shí),一個(gè)發(fā)送數(shù)據(jù)寄存器空中斷服務(wù)被執(zhí)行。位4--RXEN:數(shù)據(jù)接受允許。當(dāng)該位置1時(shí),允許USART接受數(shù)據(jù)。當(dāng)接受器使能時(shí),對(duì)應(yīng)引腳的特性由通用數(shù)字I/O口轉(zhuǎn)變?yōu)镽XD。禁止數(shù)據(jù)接受,將清除接受緩沖器中的數(shù)據(jù),并使FE,DOR,PE標(biāo)志位無(wú)效(為0)。當(dāng)接受數(shù)據(jù)被禁止后,USART發(fā)送器將不再占用RXD引腳。位3--TXEN:發(fā)送數(shù)據(jù)允許。當(dāng)該位置1時(shí),允許USART發(fā)送數(shù)據(jù)。當(dāng)發(fā)送器使能時(shí),對(duì)應(yīng)引腳的特性由通用數(shù)字I/O口轉(zhuǎn)變?yōu)門XD.如果在發(fā)送數(shù)據(jù)時(shí)禁止發(fā)送器,則在移位寄存器中的數(shù)據(jù)和后續(xù)UDR中的數(shù)據(jù)被全部發(fā)送完成后,發(fā)送器才會(huì)禁止。當(dāng)發(fā)送器禁止后,USART發(fā)送器將不再占用TXD引腳。位2--UCSZ2:數(shù)據(jù)字位數(shù)大小。該位與UCSRC寄存器中的UCSZ[1:0]位一起使用,用于設(shè)置接收和發(fā)送數(shù)據(jù)幀中數(shù)據(jù)字位的個(gè)數(shù)。位1--RXB8:接收數(shù)據(jù)的第8位。當(dāng)采用接收的數(shù)據(jù)幀格式為9位數(shù)據(jù)幀時(shí),RXB8中接收到數(shù)據(jù)的第9數(shù)據(jù)位。RXB8標(biāo)志位必須在讀UDR之前讀取。位0--TXB8:發(fā)送數(shù)據(jù)的第8位。當(dāng)采用發(fā)送數(shù)據(jù)幀格式9位數(shù)據(jù)幀時(shí),TXB8中發(fā)送數(shù)據(jù)的第9位數(shù)據(jù)位。TXB8標(biāo)志位必須在URD寫入前寫入。USART控制和狀態(tài)寄存器UCSRC如圖3-12所示圖3-12UCSRC位7--URSEL:寄存器選擇。該位用于對(duì)UCSRC/UBRRH寄存器進(jìn)行選擇。寫UCSRC寄存器時(shí),該位必須寫入1,讀取UCSRC時(shí),該位總是1.位6--UMSEL:USART工作模式選擇。該位用于選擇USART為同步或異步工作模式。位[5:4]--UPM[1:0]校驗(yàn)方式。這2位用于允許和選擇產(chǎn)生或驗(yàn)證校驗(yàn)位的類型。如果使能校驗(yàn)?zāi)J?,發(fā)送器將根據(jù)發(fā)送的數(shù)據(jù),自動(dòng)產(chǎn)生符合要求的校驗(yàn)位,并附加在每一個(gè)數(shù)據(jù)幀后發(fā)送。接收器將對(duì)接受的數(shù)據(jù)幀進(jìn)行校驗(yàn),產(chǎn)生校驗(yàn)位,并與UPM0的設(shè)置進(jìn)行比較。如果不匹配,則USART寄存器中的PE標(biāo)志位將置1。位3--USBS:停止位選擇。該位用于選擇插入到發(fā)送幀中停止位的個(gè)數(shù)。位[2:1]--UCSZ[1:0]:傳送或接受字符長(zhǎng)度。這2位同UCSRB寄存器中的UCSZ2位一起使用。位0--UCPOL:時(shí)鐘極性選擇。該位只在同步模式下使用。在異步模式下,應(yīng)將該位寫為0.UCPOL位設(shè)定了串行輸出數(shù)據(jù)變化和數(shù)據(jù)輸入采樣和同步時(shí)鐘XCK之間的關(guān)系。3.5.5波特率寄存器UBRRL和UBRRH如圖3-13所示圖3-13UBRRH位15--URSEL:寄存器選擇。該位用于對(duì)UBRRH/UCSRC寄存器的選擇。寫UBRRH寄存器時(shí),該位必須寫入0,讀取UBRRH時(shí),該位總是0.位[14:12]--保留位。位[11:0]--UBRR[11:0]:USART波特率設(shè)置寄存器。由寄存器UBRRH低4位和寄存器UBRRL的8位構(gòu)成一個(gè)12位的寄存器,用于對(duì)USART傳送或接受波特率的設(shè)置。如果波特率設(shè)置被改變,則正在進(jìn)行接受和發(fā)送將被打斷。寫UBRRL將立即更新對(duì)波特率預(yù)分頻的設(shè)置。3.5.6初始化串口(init_usart())分析:UCSRA=0x00;單倍速模式UCSRB=_BV(RXCIE)|_BV(TXCIE)|_BV(RXEN)|_BV(TXEN)UCSRC=_BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);UBRRH=0因?yàn)榫д?372800Hz的9600波特率。(unsignedint)((unsignedlong)F_CPU/(16*(unsignedlong)baud)-1)UBRRL=47;3.5.7發(fā)送數(shù)據(jù)(send_data(data))分析:while(!(UCSRA&_BV(UDRE)));當(dāng)UDRE位置位時(shí),表示可以寫入新的數(shù)據(jù)UDR=data;3.5.8接受數(shù)據(jù)receive_data分析:while(!(UCSRA&_BV(RXC)));當(dāng)RXC位置位時(shí),表示接受到新的數(shù)returnUDR;3.6連接數(shù)據(jù)庫(kù)以及PC的串口程序3.6.1連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)程序用JAVA實(shí)現(xiàn)。用oracle數(shù)據(jù)庫(kù)首先建表bus其中包含3個(gè)字段ID(卡號(hào)),customerID(持卡人 的身份證號(hào)),money(卡內(nèi)金額)。首先得有java.sql.*包(一)java.sql.DriverManager用來轉(zhuǎn)載驅(qū)動(dòng)程序,并為創(chuàng)建新的數(shù)據(jù)連接提供支持。Class.forName("oracle.jdbc.driver.OracleDriver");建立橋接器。(二)java.sql.StatementJDBC一般采用基于Statement對(duì)象的查詢方法。首先使用Statement類聲明一個(gè)SQL語(yǔ)句對(duì)象,然后通過該連接對(duì)象調(diào)用createStatement()方法創(chuàng)建SQL語(yǔ)句對(duì)象pstm=con.prepareStatement("select*frombus_managewhereid=?");有了SQL對(duì)象后,這個(gè)對(duì)象就調(diào)用相應(yīng)的方法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢操作。具體的,在Statement對(duì)象上,可以使用execQuery()方法執(zhí)行查詢語(yǔ)句。execQuery()方法的參數(shù)是一個(gè)String對(duì)象,即一個(gè)SQL的數(shù)據(jù)處理語(yǔ)句,并將查詢結(jié)果放在ResultSet類聲明的對(duì)象中,然后進(jìn)行相應(yīng)的處理。rs=pstm.executeQuery();在SQL中查詢操作是通過select語(yǔ)句來完成的,基本的select語(yǔ)句格式Select<列名>from<表名>對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新操作:(1)插入記錄(insert)Insertinto表名[字段名1,字段名2]values(值1,值2,...)注意:插入的值必須和列一一對(duì)應(yīng)。插入值的數(shù)據(jù)類型必須和對(duì)應(yīng)列的數(shù)據(jù)類型相一致。(2)更新記錄(update)Update<表名>set字段1=值1where<條件>(3)刪除記錄(delete)Deletefrom<表名>[wnere條件]在使用delete語(yǔ)句時(shí)要特別小心,因?yàn)镾QL中的Delete沒有相應(yīng)的Undo命令可以將刪除的數(shù)據(jù)恢復(fù),因此,為避免錯(cuò)誤,最好是在刪除前用帶相同條件的Select語(yǔ)句查詢一遍,確認(rèn)無(wú)誤后在執(zhí)行delete語(yǔ)句。(三)消費(fèi)當(dāng)做公交車刷卡消費(fèi)時(shí),應(yīng)當(dāng)時(shí)接受到的卡的序列號(hào)的卡內(nèi)金額減1具體操作先使用上述方法連接到數(shù)據(jù)庫(kù),然后打開串口程序,當(dāng)接受到卡的序列號(hào)時(shí)SQL語(yǔ)句"select*frombus_managewhereid=?"先查詢到相應(yīng)的卡rs=pstm.executeQuery();//返回結(jié)果集inttmp=rs.getInt(2)-1;把金額減1后放入tmp中,"updatebus_managesetmoney=?whereid=?"更新語(yǔ)句更新卡的金額。(四)充值當(dāng)要充值時(shí),應(yīng)當(dāng)時(shí)接受到的卡的序列號(hào)的卡內(nèi)金額加上充值的金額具體操作先使用上述方法連接到數(shù)據(jù)庫(kù),然后打開串口程序,當(dāng)接受到卡的序列號(hào)時(shí)SQL語(yǔ)句"select*frombus_managewhereid=?"先查詢到相應(yīng)的卡rs=pstm.executeQuery();//返回結(jié)果集intbalance=rs.getInt(2);intsum=balance+money;"updatebus_managesetmoney=?whereid=?"更新語(yǔ)句更新卡的金額。(五)新卡注冊(cè)執(zhí)行"insertintobus_managevalues(?,?,?)"插入語(yǔ)句setString(1,id);設(shè)定從串口接受到的IDsetInt(2,0);設(shè)定卡內(nèi)金額為0setString(3,text);設(shè)定用戶ID(身份證號(hào))executeUpdate();更新數(shù)據(jù)庫(kù)。(六)卡的掛失“select*frombus_managewhereid=?"先查詢接受的卡的ID.然后執(zhí)行"deletefrombus_managewhereid=?"刪除語(yǔ)句,在數(shù)據(jù)庫(kù)中刪除卡的序列號(hào)即卡的相關(guān)信息。3.6.2PC串口程序Java通信串口包串口API概覽

m.CommPort

這是用于描述一個(gè)被底層系統(tǒng)支持的端口的抽象類。它包含一些高層的IO控制方法,這些方法對(duì)于所有不同的通訊端口來說是通用的。SerialPort

和ParallelPort都是它的子類,前者用于控制串行端口而后者用于控這并口,二者對(duì)于各自底層的物理端口都有不同的控制方法。這里我們只關(guān)心SerialPort。

m.CommPortIdentifier

這個(gè)類主要用于對(duì)串口進(jìn)行管理和設(shè)置,是對(duì)串口進(jìn)行訪問控制的核心類。主要包括以下方法

(一)確定是否有可用的通信端口

(二)為IO操作打開通信端口

(三)決定端口的所有權(quán)

(四)處理端口所有權(quán)的爭(zhēng)用

(五)管理端口所有權(quán)變化引發(fā)的事件(Event)

m.SerialPort

這個(gè)類用于描述一個(gè)RS-232串行通信端口的底層接口,它定義了串口通信所需的最小功能集。通過它,用戶可以直接對(duì)串口進(jìn)行讀、寫及設(shè)置工作。

(1)串口初始化(initComm())打開硬件資源,并獲取串口:CommPortIdentifier.getPortIdentifier(commName);設(shè)置軟件資源,設(shè)置進(jìn)程名稱和超時(shí)時(shí)間CommPortIdentifier.getPortIdentifier(commName).open("Read",1000);打開數(shù)據(jù)傳輸參數(shù)setSerialPortParams(bPS,dataBit,stopBit,parityBit);//比特率9600,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)位。創(chuàng)建輸入流:getInputStream();創(chuàng)建輸出流getOutputStream();監(jiān)聽端口addEventListener(this)接受數(shù)據(jù)使能notifyOnDataAvailable(true)初始化串口線程為主線程readThread=newThread(this);(2)獲取系統(tǒng)中所用的全部串口(string[]listport())CommPortIdentifier.getPortIdentifiers();(3)開始讀串口轉(zhuǎn)化為字符串(StringreadPort())先讓輸入流使能,然后讀書據(jù)到buf中,轉(zhuǎn)換為字符串inti=(byte)buf[0]&0xff;msg=Integer.toHexString(i);以16進(jìn)制顯示。(4)寫串口以字符串形式發(fā)送消息把數(shù)據(jù)寫到輸出流上,刷新輸出流。(5)關(guān)閉串口(closePort())判斷輸出流位NULL,關(guān)閉輸出流和輸入流。關(guān)閉監(jiān)聽端口removeEventListener()接受數(shù)據(jù)禁能notifyOnDataAvailable(false)(6)串口監(jiān)聽事件(serialEvent())SerialPortEvent.BI:/*Breakinterrupt,通訊中斷 SerialPortEvent.OE:/*Overrunerror,溢位錯(cuò)誤*/SerialPortEvent.FE:/*Framingerror,傳幀錯(cuò)誤*/SerialPortEvent.PE:/*Parityerror,校驗(yàn)錯(cuò)誤*/SerialPortEvent.CD:/*Carrierdetect,載波檢測(cè)*/SerialPortEvent.CTS:/*Cleartosend,清除發(fā)送*/SerialPortEvent.DSR:/*Datasetready,數(shù)據(jù)設(shè)備就緒*/SerialPortEvent.RI:/*Ringindicator,響鈴指示*/SerialPortEvent.DATA_AVAILABLE://串口有可用數(shù)據(jù)讀到緩沖數(shù)組輸出到終端SerialPortEvent.OUTPUT_BUFFER_EMPTY:/*輸出緩沖區(qū)清空3.7Mifare1非接觸式卡說明3.7.1Mifare1非接觸式卡包含兩個(gè)部分:RF射頻接口電路和數(shù)字電路(一)RF射頻接口電路:在RF射頻接口電路中,主要包括有波形裝換模塊。它可將卡片讀寫器上的13.56HZ的無(wú)線電調(diào)制頻率接受,一方面送調(diào)制/解調(diào)模塊,另一方面進(jìn)行波形裝換,將正弦波轉(zhuǎn)換為方波,然后對(duì)其整個(gè)濾波,由電壓調(diào)節(jié)模塊對(duì)電壓進(jìn)行進(jìn)一步的處理(二)數(shù)字電路部分:總共包含ATR模塊,AntiCollision模塊,selectApplication模塊,Authentication&AccessControl模塊控制及算術(shù)運(yùn)算單元,RAM/ROM單元,數(shù)據(jù)加密單元和EEPROM存儲(chǔ)器及其接口電路八個(gè)部分。(1)ATR模塊當(dāng)一張Mifare1卡片處在卡片讀卡器的天線的工作范圍之內(nèi)時(shí),控制讀卡器向卡片發(fā)出REQUESTALL命令后,卡片的ATR將啟動(dòng),將卡片Block0中的卡片類型號(hào)共2個(gè)字節(jié)傳送給讀卡器,建立卡片與讀卡器的第一步通信。(2)selectApplication模塊當(dāng)卡片與讀卡器完成了上述步驟后,控制的讀卡器要想對(duì)卡片進(jìn)行讀,寫操作,則必須對(duì)卡片進(jìn)行select操作。以使卡片真正的被選中。被選中的卡片將卡片上存儲(chǔ)在Block0中的卡片的容量SIZE字節(jié)傳送給讀卡器。當(dāng)讀卡器收到這一字節(jié)后,就可以明確對(duì)卡片進(jìn)行進(jìn)一步操作。(3)Authentication&AccessControl模塊控制及算術(shù)運(yùn)算單元在確認(rèn)已經(jīng)選擇了一張 卡片時(shí),程序員對(duì)卡片進(jìn)行讀寫操作前,必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,如果匹配,則允許進(jìn)一步的Read/Write操作。Mifare1卡片上有16個(gè)扇區(qū),每個(gè)扇區(qū)都可分別設(shè)置各自密碼,互補(bǔ)干涉。3.7.2Mifare1卡的存儲(chǔ)結(jié)構(gòu)Mifare1卡片的存儲(chǔ)容量為1KB,采用EEPROM作為存儲(chǔ)介質(zhì),整個(gè)結(jié)構(gòu)劃分為16個(gè)扇區(qū),編號(hào)為0-15。每個(gè)扇區(qū)4塊,分別為塊0,塊1,塊2,塊3,每個(gè)塊16個(gè)字節(jié)每個(gè)扇區(qū)的塊3包含了該扇區(qū)的密碼A(6個(gè)字節(jié)),存取控制(4個(gè)字節(jié)),密碼B(6個(gè)字節(jié)),是一個(gè)特殊的塊。其余三塊一般是數(shù)據(jù)塊。但扇區(qū)0的塊0時(shí)特殊的,是廠商代碼,已固化。其中:第0~4個(gè)字節(jié)為卡片的序列號(hào),第5個(gè)字節(jié)為序列號(hào)的校驗(yàn)碼;第6個(gè)字節(jié)為卡片的容量“”字節(jié);第7,8個(gè)字節(jié)為卡片的類型號(hào)字節(jié);其他字節(jié)由廠商另加定義。

第四章軟件測(cè)試4.1數(shù)據(jù)庫(kù)單元測(cè)試4.1.1插入元素測(cè)試分析:要插入元素必須遵信一定的原則,金額必須是大于0的整數(shù);用戶的身份證號(hào)必須是17位的數(shù)字,不能小于17位或是17位中有不是數(shù)字的。如表4-14-24-3所示表4-1數(shù)據(jù)庫(kù)元素卡號(hào)卡內(nèi)金額用戶身份證號(hào)表4-2插入條件輸入條件有效等價(jià)類無(wú)效等價(jià)類是否金額大于0Money>0(1)Money<=0(2)是否金額為整數(shù)Money=12(3)Money=3.5(4)Money=a(5)是否身份證號(hào)為17位Customid6)Customid=1423(7)是否身份證號(hào)都為整數(shù)Customid8)Customid=1427011993100205a4(9)表4-3插入示例序號(hào)例子覆蓋等價(jià)類輸出1(12(1),(6)插入成功2(0(2),(6)插入失敗,金額為0插入失敗,金額小于0插入失敗,金額不是整數(shù)插入失敗,金額不是整數(shù)插入失敗,身份證號(hào)不是17位插入失敗,身份證號(hào)中有字母3(-1(2),(6)4(5.6(4),(6)5(1a(5),(6)6(12,1423)(1),(7)7(12,1427011993100205a4)(1),(7)4.1.2更新數(shù)據(jù)測(cè)試分析:更新數(shù)據(jù)庫(kù)時(shí),主要是對(duì)卡內(nèi)金額的操作,當(dāng)用戶刷卡時(shí)每次卡中金額減1,當(dāng)金額減到0時(shí),再要扣費(fèi)是會(huì)出現(xiàn)錯(cuò)誤。如表4-44-5所示表4-4更新條件輸入條件有效等價(jià)類無(wú)效等價(jià)類金額是否是大于1的整數(shù)Money=12(3)Money=-1(2)表4-5更新示例序號(hào)例子覆蓋等價(jià)類輸出1Money=12(1)Money=124.2串口發(fā)送卡號(hào)單元測(cè)試分析:當(dāng)讀卡器尋到進(jìn)入天線內(nèi)的卡時(shí),會(huì)把卡的序列號(hào)(卡的唯一標(biāo)識(shí))放入一個(gè)數(shù)組中,然后再通過串口把卡的序列號(hào)發(fā)送給PC機(jī)。PC機(jī)根據(jù)接受到的卡號(hào)進(jìn)行數(shù)據(jù)庫(kù)中該卡信息的相關(guān)操作。如表4-6所示表4-6發(fā)送卡號(hào)示例序號(hào)例子覆蓋等價(jià)類輸出1DB1434O8(1)DB1434O82B1234O8(2)數(shù)據(jù)庫(kù)不存在該卡,不能進(jìn)行下步操作4.3集成測(cè)試分析:在數(shù)據(jù)庫(kù)單元測(cè)試與串口發(fā)送卡號(hào)單元測(cè)試成功后,開始把這兩個(gè)最主要的模塊和在一起進(jìn)行集成測(cè)試,來驗(yàn)證在發(fā)送卡號(hào)正確和不正確的情況下,數(shù)據(jù)庫(kù)是否能進(jìn)行相關(guān)正確的操作。如表4-7所示表4-7集成示例序號(hào)例子覆蓋等價(jià)類輸出1DB1434O8(1)DB1434O82B1234O8(2)數(shù)據(jù)庫(kù)不存在該卡,不能進(jìn)行下步操作

結(jié)論本系統(tǒng)實(shí)現(xiàn)了對(duì)公交車刷卡系統(tǒng)的模擬實(shí)現(xiàn),實(shí)現(xiàn)了公交車的刷卡消費(fèi),公交車卡的充值,公交車卡的新卡注冊(cè),公交車卡的掛失功能。主要用到了AVR單片機(jī)的相關(guān)技術(shù),本系統(tǒng)用到的單片機(jī)是Atmega16,讀卡器RC522走的是SPI總線,LCD12864顯示頻用來顯示卡的卡號(hào)和卡內(nèi)金額的信息。電腦中的數(shù)據(jù)庫(kù)保存了卡的所有信息,持卡人的身份證號(hào),卡的卡號(hào),卡內(nèi)金額。用于和電腦中數(shù)據(jù)庫(kù)同步的信息通過RS232總線傳遞數(shù)據(jù),包括傳遞卡的卡號(hào),然后電腦經(jīng)過需要的操作來更新卡的信息,然后把這些信息反饋給單片機(jī)然后再LCD12864上顯示卡的相關(guān)信息。通過此次課題的研究,讓我更加深入的了解了單片機(jī)的一些功能,對(duì)于單片機(jī)在日常生活中的運(yùn)用有了更深層次的了解。在研究時(shí)也發(fā)現(xiàn)了自身對(duì)于單片機(jī)的不理解之處,并查看相關(guān)書籍等資料解決了不懂的問題。結(jié)合實(shí)際工作中的實(shí)踐,和這次的畢業(yè)論文撰寫,了解了很多也學(xué)到了很多。同時(shí),對(duì)以前所學(xué)的專業(yè)知識(shí),有了進(jìn)一步的加深和鞏固。

參考文獻(xiàn)[1]劉筱霞,陳春霞.現(xiàn)代電子標(biāo)簽及其印刷技術(shù)[J].包裝工程,2008,(05).

[2]程雪,周修理,李艷軍.射頻識(shí)別(RFID)技術(shù)在動(dòng)物食品溯源中的應(yīng)用[J].東北農(nóng)業(yè)大學(xué)學(xué)報(bào),2008,(10).

[3]石蕾,陳敏雅.RFID系統(tǒng)中閱讀器的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2008,(07).

[4]錢瑩,凌云.RFID中間件設(shè)計(jì)研究[J].電腦與信息技術(shù),2008,(05).

[5]陳沖,徐志,何明華.一種新的RFID防碰撞算法的研究[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,(03).

[6]周永明.一種改進(jìn)的查詢樹射頻識(shí)別防沖突新算法[J].廣東輕工職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,(02).

[7]李輝,劉國(guó)棟,胡小云,高麗芳,沈燁,鄭映欽.電子標(biāo)簽技術(shù)在出口鰻魚產(chǎn)品監(jiān)管中的應(yīng)用研究[J].中國(guó)國(guó)境衛(wèi)生檢疫雜志,2007,(06).

[8]蔡志剛.集裝箱無(wú)線射頻識(shí)別技術(shù)應(yīng)用研究[J].港口裝卸,2005,(05).

[9]謝潔銳,胡月明,劉才興,常薇.基于無(wú)線傳感器和RFID的農(nóng)產(chǎn)品安全全程監(jiān)控平臺(tái)[J].中國(guó)農(nóng)機(jī)化,2007,(01).

[10]朱成,陳明,劉成智.Zigbee與RFID技術(shù)在醫(yī)院信息化建設(shè)中的應(yīng)用[J].華夏醫(yī)學(xué),2008,(03).[11]BehzadRazavi.DesignofAnalogCMOSIntegratedCircuits[M]..2001.65~78

[12]RheeW.Designofhigh-performanceCMOSchargepumpsinphase-lockedloops.IEEEInternationalSymposiumonCir-cuitsandSystems.1999[3]ToddCharlesWeigandt.Low-phase-noise,low-timing-jitterdesigntechniquesfordelaycellbasedVCOsandfrequencysynthesizers[C]//PHDthesis..1998.234~245

[13]GeorgeLee,KarinaNg,EdmondKwang.Designofringoscillatorbasedvoltagecontrolledoscillator.ProjectFinalReport[R].2005[5]T.C.Weigandt,B.Kim,andP.R.Gray.AnalysisofTimingJitterinCMOSRingOscillators.IEEEInternationalSymposiumonCircuitsandSystems.1994.25~36

[14]NonisR,DaDaltN,PalestriP,etal.Modeling,designandcharacterizationofanewlow-jitteranalogdualtuningLC-VCOPLLarchitecture[J].IEEEJournalofSolidStateCircuits.2005[7]LimKyoohyun,ParkChanhong,KimDalsoo,etal.Alow-noisephase-lockedloopdesignbyloopbandwidthoptimization.IEEEJournalofSolidStateCircuits.2000.12~24[15]李廣弟等.單片機(jī)基礎(chǔ)[M].北京航空航天出版社,2001,(03).

致謝通過這段時(shí)間的研究設(shè)計(jì)學(xué)習(xí),我學(xué)到了很多以前不知道的知識(shí),并且在學(xué)習(xí)中培養(yǎng)了一種做事情一絲不茍的態(tài)度和耐心,為以后的工作打下了堅(jiān)實(shí)的基礎(chǔ)。在此我要向我們論文的指導(dǎo)老師表示衷心的感謝,可以讓我通過這次機(jī)會(huì)系統(tǒng)學(xué)習(xí)了單片機(jī)的有關(guān)知識(shí),并能具體結(jié)合實(shí)踐生活完成交通燈的設(shè)計(jì),他幽默,風(fēng)趣,嚴(yán)謹(jǐn)?shù)慕虒W(xué)作風(fēng)將是我學(xué)習(xí)的榜樣。

外文原文U-BLOX6m1Hardwaredescription1.1OverviewTheu-blox6leadlesschipcarrier(LCC)modulesarestandaloneGPSreceiversfeaturingthehighperformanceu-blox-6positioningengine.Thesecompact,easytointegratemodulescombineexceptionalGPSperformancewithhighlyflexiblepower,design,andconnectivityoptions.TheircompactformfactorsandSMTpadsallowfullyautomatedassemblywithstandardpick&placeandreflow-solderingequipmentforcost-efficient,highvolumeproductionenablingshorttime-to-market.u-bloxGPSmodulesarenotdesignedforlifesavingorsupportingdevicesorforaviationandshouldnotbeusedinproductsthatcouldinanywaynegativelyimpactthesecurityorhealthoftheuserorthirdpartiesorthatcouldcausedamagetogoods.1.2Architectureu-blox6LCCmodulesconsistoftwofunctionalparts-theRFandtheBasebandsections.SeeFigure1forblockdiagramsofthemodules.TheRFFront-Endincludestheinputmatchingelements,theSAWbandpassfilter,theu-blox6RF-IC(withintegratedLNA)andthefrequencysource.TheBasebandsectioncontainstheu-blox6Basebandprocessor,theRTCcrystalandadditionalelementssuchastheoptionalFLASHMemoryforenhancedprogrammabilityandflexibility. VCC-mainpowerThemainpowersupplyisfedthroughtheVCCpin.Duringoperation,thecurrentdrawnbytheu-blox6GPSmodulecanvarybysomeordersofmagnitude,especially,iflow-poweroperationmodesareenabled.Itisimp

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論