版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《基于MSP430單片機(jī)原理及應(yīng)用》第六章MSP430應(yīng)用系統(tǒng)設(shè)計(jì)目錄6.1單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)6.2MSP430系列單片機(jī)的分類6.3MSP430x16x硬件結(jié)構(gòu)概述6.4MSP430x16x重要特性和外部引腳6.5MSP430x16x的時(shí)鐘模塊與低功耗目錄6.1單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)(1)單片機(jī)嵌入式系統(tǒng)開發(fā)所需的基礎(chǔ)知識和技能(2)單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)流程單片機(jī)嵌入式系統(tǒng)開發(fā)所需的基礎(chǔ)知識和技能
在IT行業(yè),應(yīng)用系統(tǒng)設(shè)計(jì)可以分成兩大類,一類用于科學(xué)計(jì)算、數(shù)據(jù)處理、企業(yè)管理、Internet網(wǎng)站建立等;另一類用于工業(yè)過程檢測控制、智能儀表儀器和自動(dòng)化設(shè)備、小型電子系統(tǒng)、通信設(shè)備、家用電器等。
對于前一類的應(yīng)用系統(tǒng)設(shè)計(jì),通常都是基于通用計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的系統(tǒng)開發(fā),硬件設(shè)備也是通用的,可以從市場購買,而其主要的工作是軟件開發(fā),使用的開發(fā)平臺以C++、VB、數(shù)據(jù)庫系統(tǒng)、網(wǎng)站建立開發(fā)平臺等。
而后一類應(yīng)用系統(tǒng)的設(shè)計(jì)則同前一類有很大的不同。它涉及的應(yīng)用系統(tǒng)是一個(gè)專用的系統(tǒng),往往要從零開始。即必須根據(jù)實(shí)際的需求,從系統(tǒng)硬件的構(gòu)成設(shè)計(jì)與實(shí)現(xiàn),到相應(yīng)的軟件設(shè)計(jì)與實(shí)現(xiàn),兩者并重,相輔相成,缺一不可。第二類應(yīng)用系統(tǒng)的特點(diǎn)是:系統(tǒng)功能、要求、性能的多樣性和專用性;硬件電路和軟件設(shè)計(jì)的不可分割和專一性;可靠性高,抗干擾能力強(qiáng);體積小、重量輕、功耗省、投資少;開發(fā)周期短。單片機(jī)嵌入式系統(tǒng)開發(fā)所需的基礎(chǔ)知識和技能單片機(jī)嵌入式應(yīng)用系統(tǒng)設(shè)計(jì)歸屬于第二類應(yīng)用系統(tǒng)的范疇。因此,對于從事單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)、開發(fā)的電子工程師和專業(yè)人員,不僅要熟悉各種電子器件和IC芯片的使用和特性,具備模擬電路、數(shù)字電路等各類硬件電路和硬件系統(tǒng)的設(shè)計(jì)能力,還必須具有很強(qiáng)的計(jì)算機(jī)綜合應(yīng)用和軟件編程設(shè)計(jì)能力。MSP430單片機(jī)的特點(diǎn)當(dāng)設(shè)計(jì)的單片機(jī)嵌入式系統(tǒng)是一個(gè)大型管理控制系統(tǒng)的下位機(jī),或要與Internet或局域網(wǎng)中的數(shù)據(jù)庫聯(lián)網(wǎng),除了要熟練掌握與單片機(jī)有關(guān)的硬件(模擬電路、數(shù)字電路、單片機(jī)等)和軟件開發(fā)技術(shù)外,還要具備與整個(gè)大的系統(tǒng)有關(guān)的基礎(chǔ)和技術(shù)(如,數(shù)據(jù)庫、Internet協(xié)議、VB、VC等)。因此,對高級電子工程師來講,對個(gè)人PC機(jī)的熟練掌握程度,以及軟件設(shè)計(jì)和編程的能力,決不亞于計(jì)算機(jī)專業(yè)的人員,在某些方面比計(jì)算機(jī)專業(yè)的人員要求還高,還要全面。要具備較高的硬件系統(tǒng)設(shè)計(jì)開發(fā)能力和水平,不是在短期內(nèi)通過理論和書本的學(xué)習(xí)就能實(shí)現(xiàn)的,需要經(jīng)過一定時(shí)間的積累,將理論與實(shí)際相結(jié)合,動(dòng)手去做,才能打下良好的基礎(chǔ)。所以說,不親自動(dòng)手實(shí)踐,是不可能真正掌握設(shè)計(jì)開發(fā)單片機(jī)嵌入式系統(tǒng)技術(shù)的。有了良好的基礎(chǔ),加上長期的實(shí)踐經(jīng)驗(yàn),以及緊跟世界半導(dǎo)體器件的最新發(fā)展,才能成為一個(gè)真正的電子工程師。單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)流程單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)遵循“軟硬結(jié)合,缺一不可”的原則,任何單片機(jī)系統(tǒng)都包含軟件系統(tǒng)和硬件系統(tǒng)兩個(gè)部分。單片機(jī)嵌入式系統(tǒng)開發(fā)流程圖如圖6-1所示。單片機(jī)嵌入式系統(tǒng)設(shè)計(jì)流程圖6-1單片機(jī)嵌入式系統(tǒng)開發(fā)流程MSP430單片機(jī)的特點(diǎn)對于一個(gè)具體的單片機(jī)系統(tǒng)的設(shè)計(jì),需要從以下幾個(gè)方面考慮(1)調(diào)研、立項(xiàng)、確定系統(tǒng)設(shè)計(jì)任務(wù)(2)系統(tǒng)方案設(shè)計(jì)(3)系統(tǒng)硬件設(shè)計(jì)(4)系統(tǒng)軟件設(shè)計(jì)(5)系統(tǒng)的調(diào)試調(diào)研、立項(xiàng)、確定系統(tǒng)設(shè)計(jì)任務(wù)
對即將進(jìn)行的項(xiàng)目,需要進(jìn)行市場調(diào)研。市場調(diào)研包括三個(gè)方面。第一,了解市場需求。通過各種渠道,了解當(dāng)前市場上有多少同種產(chǎn)品,及產(chǎn)品的價(jià)格、規(guī)格等方面信息。掌握當(dāng)前市場對該產(chǎn)品的需求量及發(fā)展的情況,分析市場前景是否良好。第二,了解客戶要求。通過和客戶的交流,了解客戶的需求是什么,對產(chǎn)品的性能等各方面指標(biāo)有什么特殊要求。第三,分析客戶要求,轉(zhuǎn)變成客戶需求。市場調(diào)研完成后,撰寫市場調(diào)研分析,明確客戶需求及攻關(guān)難點(diǎn)。市場調(diào)研分析完成后,即可進(jìn)行項(xiàng)目工作。調(diào)研、立項(xiàng)、確定系統(tǒng)設(shè)計(jì)任務(wù)市場調(diào)研完成后,就需要進(jìn)行立項(xiàng)工作。首先需要明確項(xiàng)目的需求;完成項(xiàng)目所需要的時(shí)間;需要配合的部門;預(yù)計(jì)花費(fèi)的金額;項(xiàng)目各部分的功能規(guī)格等,并完成可行性方案、項(xiàng)目總體方案書、項(xiàng)目需求說明書、項(xiàng)目規(guī)格說明書四個(gè)文件的初稿。針對初稿開會討論,明確各自的任務(wù),并認(rèn)真記錄會議紀(jì)要,對各部門提出的要求匯總。經(jīng)多次討論確認(rèn)項(xiàng)目方案后,完成最終版本。經(jīng)各相關(guān)部門經(jīng)理確認(rèn),總工程師審核,總經(jīng)理核準(zhǔn)后,開始進(jìn)行項(xiàng)目的開發(fā)。相關(guān)文件存檔。調(diào)研、立項(xiàng)、確定系統(tǒng)設(shè)計(jì)任務(wù)項(xiàng)目的開發(fā)要嚴(yán)格按照可行性方案、項(xiàng)目總體方案書、項(xiàng)目需求說明書、項(xiàng)目規(guī)格說明書四個(gè)文件的要求進(jìn)行。如出現(xiàn)意外情況,需要修改其中內(nèi)容,則需要和各相關(guān)部門討論,經(jīng)總工程師同意,總經(jīng)理核準(zhǔn)后進(jìn)行修改。修改后的文件同樣需要各相關(guān)部門經(jīng)理確認(rèn),總工程師審核,總經(jīng)理核準(zhǔn)。版本號升級,并存檔。系統(tǒng)方案設(shè)計(jì)在系統(tǒng)設(shè)計(jì)任務(wù)和技術(shù)指標(biāo)確定以后,即可進(jìn)行系統(tǒng)的總體方案設(shè)計(jì),一般包括:(1)單片機(jī)芯片的選擇。單片機(jī)芯片的選擇應(yīng)適合于應(yīng)用系統(tǒng)的要求。不僅要考慮單片機(jī)芯片本身的性能是否能夠滿足系統(tǒng)的需要,如:執(zhí)行速度、中斷功能、I/O驅(qū)動(dòng)能力與數(shù)量、系統(tǒng)功耗以及抗干擾性能等,同時(shí)還要考慮開發(fā)和使用是否方便、市場供應(yīng)情況與價(jià)格、封裝形式等其它因素。系統(tǒng)方案設(shè)計(jì)(2)外圍電路芯片和器件的選擇。僅僅一片單片機(jī)芯片是不能構(gòu)成一個(gè)完整的嵌入式系統(tǒng)的。一個(gè)典型的系統(tǒng)往往由輸入部分(按鍵、A/D、各種類型的傳感器與輸入接口轉(zhuǎn)換電路),輸出部分(指示燈、LED顯示、LCD顯示、各種類型的傳動(dòng)控制部件),存儲器(用于系統(tǒng)數(shù)據(jù)記錄與保存),通信接口(用于向上位機(jī)交換數(shù)據(jù)、構(gòu)成聯(lián)網(wǎng)應(yīng)用),電源供電等多個(gè)單元組成。這些不同的單元涉及到模擬、數(shù)字、弱電、強(qiáng)電以及它們相互之間的協(xié)調(diào)配合、轉(zhuǎn)換、驅(qū)動(dòng)、抗干擾等。因此,對于外圍芯片和器件的選擇,整個(gè)電路的設(shè)計(jì),系統(tǒng)硬件機(jī)械結(jié)構(gòu)的設(shè)計(jì),接插件的選擇,甚至產(chǎn)品結(jié)構(gòu)、生產(chǎn)工藝等,都要進(jìn)行全面和細(xì)致的考慮。任何一個(gè)忽視和不完善,都會給整個(gè)系統(tǒng)帶來隱患,甚至造成系統(tǒng)設(shè)計(jì)和開發(fā)的失敗。系統(tǒng)方案設(shè)計(jì)(3)軟、硬件的分工與配合的綜合考慮。單片機(jī)嵌入式系統(tǒng)中的硬件和軟件具有一定的互換性,有些功能可以用硬件實(shí)現(xiàn),也可以用軟件來實(shí)現(xiàn),因此,在方案設(shè)計(jì)階段要認(rèn)真考慮軟、硬件的分工和配合。采用軟件實(shí)現(xiàn)功能可以簡化硬件結(jié)構(gòu),降低成本,但軟件系統(tǒng)則相應(yīng)的復(fù)雜化,增加了軟件設(shè)計(jì)的工作量。而用硬件實(shí)現(xiàn)功能則可以縮短系統(tǒng)的開發(fā)周期,使軟件設(shè)計(jì)簡單,相對提高了系統(tǒng)的可靠性,但可能會提高成本。在設(shè)計(jì)過程中,軟、硬件的分工與配合需要取得協(xié)調(diào),才能設(shè)計(jì)出好的應(yīng)用系統(tǒng)。系統(tǒng)硬件設(shè)計(jì)開發(fā)人員在全面了解要設(shè)計(jì)開發(fā)系統(tǒng)所具備的功能和要求,制定出整體的系統(tǒng)設(shè)計(jì)方案后,接下來就是根據(jù)具體的需求和設(shè)計(jì)方案,選擇能可靠實(shí)現(xiàn)全部功能的單片機(jī)芯片和相應(yīng)的外圍電路器件,設(shè)計(jì)整個(gè)系統(tǒng)的電原理圖。原理圖設(shè)計(jì)完成后,還要根據(jù)實(shí)際需要設(shè)計(jì)相應(yīng)的印刷板(PCB)圖。這個(gè)階段常使用的軟件平臺是電子電路CAD軟件,如AltiumDesigner軟件等。原理圖文檔、PCB圖文檔命名規(guī)則如下:項(xiàng)目名稱_電路板名稱_完成日期_版本號.schdoc;項(xiàng)目名稱_電路板名稱_完成日期_版本號.pcbdoc;同一版本的原理圖和PCB圖需要完全對應(yīng)。并在圖中標(biāo)明該版本對應(yīng)上一版本修改了哪些地方。原理圖和PCB圖完成一個(gè)版本后,入檔。系統(tǒng)硬件設(shè)計(jì)單片機(jī)嵌入式系統(tǒng)的硬件系統(tǒng)設(shè)計(jì)是一個(gè)綜合能力的表現(xiàn),它全面反映和體現(xiàn)了設(shè)計(jì)開發(fā)人員的所具有的技術(shù)水平和創(chuàng)新設(shè)計(jì)能力。比如說,設(shè)計(jì)一個(gè)具備相同功能的單片機(jī)嵌入式系統(tǒng),如采用傳統(tǒng)并行總線擴(kuò)展外圍設(shè)備的設(shè)計(jì)思路,設(shè)計(jì)出的硬件系統(tǒng)就相對龐大和復(fù)雜,因?yàn)閮H地址線和數(shù)據(jù)線就有16+8=24根,還需要相應(yīng)的鎖存器和地址譯碼器等器件,穩(wěn)定性、抗干擾性都相對差一些。如采用新型的單片機(jī),CMOS器件,選用串行接口的大容量存儲器、AD/DA等器件,就可減少硬件開發(fā)的工作量,大大縮短系統(tǒng)設(shè)計(jì)開發(fā)的周期,同時(shí)也提高了系統(tǒng)的可靠性。系統(tǒng)軟件設(shè)計(jì)
在硬件系統(tǒng)設(shè)計(jì)的基礎(chǔ)上,則要根據(jù)系統(tǒng)的功能要求和硬件電路的結(jié)構(gòu)設(shè)計(jì)和編寫系統(tǒng)軟件。作為單片機(jī)系統(tǒng)軟件設(shè)計(jì)人員,應(yīng)該具備扎實(shí)的硬件功底,不僅是對系統(tǒng)的功能和要求有深入的了解,而且對實(shí)現(xiàn)的硬件系統(tǒng)、使用的芯片和外圍電路的性能也要很好的掌握。這樣才能設(shè)計(jì)出可靠的系統(tǒng)程序。
一個(gè)嵌入式系統(tǒng)的系統(tǒng)軟件實(shí)際上就是該系統(tǒng)的監(jiān)控程序。對于一些小型嵌入式系統(tǒng)的應(yīng)用程序一般采用匯編語言編寫。對于中、大型的嵌入式系統(tǒng),常采用高級語言(如:C語言、Basic語言)來編寫。軟件設(shè)計(jì)和編寫也是開發(fā)嵌入式系統(tǒng)過程中非常重要和困難的任務(wù)之一,因?yàn)樗苯雨P(guān)系到實(shí)現(xiàn)系統(tǒng)的功能和系統(tǒng)的性能。系統(tǒng)軟件設(shè)計(jì)程序設(shè)計(jì)需要完成程序燒錄文件、程序修改文件。程序燒錄文件的命名規(guī)則為(以HEX燒錄文件為例):項(xiàng)目名稱_對應(yīng)電路板名稱_完成日期_版本號.hex。程序修改文件需要壓縮成*.rar文件入檔。程序修改文件的命名規(guī)則為:項(xiàng)目名稱_對應(yīng)電路板名稱_完成日期_版本號.rar。程序修改文件入檔需要另附一份程序修改說明。程序修改說明中需列出:程序修改文件中共有幾個(gè)文件,對應(yīng)于上一個(gè)版本來說修改了哪些文件,修改了哪些功能等內(nèi)容。程序完成后,生成軟件測試文檔。軟件測試文檔應(yīng)注明程序測試條件、測試過程、需要的工具、測試重點(diǎn)、測試的要求等方面。經(jīng)批準(zhǔn)后,修改版本號,并入檔。系統(tǒng)的調(diào)試當(dāng)硬件和軟件設(shè)計(jì)好后,就可以進(jìn)行系統(tǒng)調(diào)試了。硬件電路系統(tǒng)調(diào)試檢查分為靜態(tài)檢查和動(dòng)態(tài)檢查。硬件的靜態(tài)檢查主要檢查電路制作的正確性,如路線、焊接等。動(dòng)態(tài)檢查一般首先要使用仿真系統(tǒng)(對于采用ISP技術(shù)的系統(tǒng)可直接)輸入各種單元部分的系統(tǒng)調(diào)試和診斷程序,檢查系統(tǒng)的各個(gè)部分的功能是否能正常工作。硬件電路調(diào)試完成后可進(jìn)行系統(tǒng)的軟硬件聯(lián)調(diào)。先將各功能模塊程序分別調(diào)試完畢,然后組合,進(jìn)行完整的系統(tǒng)運(yùn)行程序調(diào)試。最后還要進(jìn)行各種工業(yè)測試和現(xiàn)場測試,考驗(yàn)系統(tǒng)在實(shí)際應(yīng)用環(huán)境中是否能正??煽康墓ぷ?,是否達(dá)到設(shè)計(jì)的性能和指標(biāo)。系統(tǒng)的調(diào)試
系統(tǒng)的調(diào)試往往要經(jīng)過多次的反復(fù)。硬件系統(tǒng)設(shè)計(jì)的不足、軟件程序中的漏洞,都可能是造成系統(tǒng)調(diào)試出現(xiàn)問題。系統(tǒng)調(diào)試要具備相當(dāng)水平和實(shí)踐經(jīng)驗(yàn),它全面反映了嵌入式系統(tǒng)設(shè)計(jì)開發(fā)者的水平和能力。學(xué)習(xí)和掌握單片嵌入式系統(tǒng)的設(shè)計(jì)、開發(fā)與應(yīng)用,要在學(xué)習(xí)中實(shí)踐、在實(shí)踐中加深學(xué)習(xí),只有這樣才能不斷鞏固、加強(qiáng)和深入下去,才能真正的掌握這門技術(shù)。目錄9.2基于MSP430F169的嵌入式以太網(wǎng)遠(yuǎn)程網(wǎng)絡(luò)溫濕度監(jiān)控系統(tǒng)(1)單片機(jī)選擇(2)AM2301數(shù)字溫濕度傳感器簡介(3)AM2301單總線通信(4)LCD12864模塊(5)網(wǎng)絡(luò)模塊的選擇和簡介(6)CS8900A以太網(wǎng)Server的硬件結(jié)構(gòu)(7)各硬件電路設(shè)計(jì)(8)系統(tǒng)軟件設(shè)計(jì)(9)上位機(jī)的設(shè)計(jì)(10)軟硬系統(tǒng)調(diào)試(11)整機(jī)系統(tǒng)測試基于MSP430F169的嵌入式以太網(wǎng)遠(yuǎn)程網(wǎng)絡(luò)溫濕度監(jiān)控系統(tǒng)在溫濕度傳感器、單片機(jī)以及網(wǎng)絡(luò)應(yīng)用的理論知識基礎(chǔ)上,選用TI公司的MSP430F169完成一種可以提供不間斷監(jiān)控記錄,提供網(wǎng)絡(luò)遠(yuǎn)程終端,本地主機(jī)終端和本地液晶三種工作方式,以及能夠報(bào)警的遠(yuǎn)程網(wǎng)絡(luò)溫濕度監(jiān)控器系統(tǒng)。系統(tǒng)結(jié)構(gòu)如圖所示。圖6-2系統(tǒng)結(jié)構(gòu)圖單片機(jī)選擇一般溫濕度傳感器傳輸?shù)臄?shù)據(jù)量不大,MCU對數(shù)據(jù)的處理也比較簡單。考慮到本設(shè)計(jì)需要有三種顯示工作方式,I/O接口需要的比較多,選擇TI公司的MSP430F169單片機(jī)。AM2301數(shù)字溫濕度傳感器簡介AM2301數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比高等優(yōu)點(diǎn)。AM2301的溫度測量范圍:-40~80℃;濕度測量范圍:0~100%RH;分辨率:0.1℃/0.1%RH。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達(dá)20米以上,使其成為各類應(yīng)用場合的最佳選則。產(chǎn)品為3引線(單總線接口),連接方便。表6-1給出AM2301的主要性能指標(biāo)。圖6-3給出AM2301接口說明和引腳圖。AM2301數(shù)字溫濕度傳感器簡介參數(shù)條件MinTypMax單位濕度分辨率----0.1--%RH----16--Bit重復(fù)性----±1--%RH精度25℃--±3--%RH0—50℃----±5%RH互換性可完全互換采樣周期--12--S響應(yīng)時(shí)間1/e(63%)25℃lm/s空氣--2--S遲滯----±0.3--%RH長期穩(wěn)定性典型值--±1--%RH/yr溫度分辨率----0.1--℃----16--Bit重復(fù)性----±0.5--℃精度------±1℃量程范圍---40--80℃響應(yīng)時(shí)間1/e(63%)6--20S表6-1AM2301接收模塊主要性能指標(biāo)
電源引腳(VDDGND):AM2301的供電電壓范圍為3.5V-5.5V,建議供電電壓為5V。電源引腳(VDD,GND)之間可增加一個(gè)100nF的電容,去耦濾波。
串行數(shù)據(jù)引腳(SDA):SDA引腳為三態(tài)結(jié)構(gòu),用于讀、寫傳感器數(shù)據(jù)。圖6-3AM2301接口說明AM2301數(shù)字溫濕度傳感器簡介AM2301單總線通信
微處理器與AM2301連接的典型應(yīng)用電路如圖6-4所示。單總線通信模式時(shí),SDA上拉后與微處理器的I/O端口相連。圖6-4AM2301典型應(yīng)用電路SDA用于微處理器與AM2301之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間5ms左右,當(dāng)前數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:40bit數(shù)據(jù)=16bit濕度數(shù)據(jù)+16bit溫度數(shù)據(jù)+8bit校驗(yàn)。
用戶主機(jī)(MCU)發(fā)送一次開始信號后,AM2301從低功耗模式轉(zhuǎn)換到高速模式,等待主機(jī)開始信號結(jié)束后,AM2301發(fā)送響應(yīng)信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集。如圖6-5所示(注:主機(jī)從AM2301讀取的溫濕度的數(shù)據(jù)總是前一次的測量值,如兩次測量間隔時(shí)間很長,請連續(xù)讀兩次以獲得實(shí)時(shí)的溫濕度值)。AM2301單總線通信圖6-5AM2301單總線通信時(shí)序圖MSP430單片機(jī)的特點(diǎn)空閑時(shí)總線為高電平,通訊開始時(shí)主機(jī)(MCU)拉低總線500us后釋放總線,延時(shí)20-40us后主機(jī)開始檢測從機(jī)(AM2301)的響應(yīng)信號。圖6-6AM2301單總線通信時(shí)序圖MSP430單片機(jī)的特點(diǎn)
從機(jī)的響應(yīng)信號是一個(gè)80us左右的低電平,隨后從機(jī)再拉高總線80us左右代表即將進(jìn)入數(shù)據(jù)傳送。如圖6-6所示,高電平后就是數(shù)據(jù)位,每1bit數(shù)據(jù)都是由一個(gè)低電平時(shí)隙和一個(gè)高電平組成。低電平時(shí)隙就是一個(gè)50us左右的低電平,它代表數(shù)據(jù)位的起始,其后的高電平的長度決定數(shù)據(jù)位所代表的數(shù)值,較長的高電平代表“1”,如圖6-7所示,較短的高電平代表“0”,如圖6-8所示。共40bit數(shù)據(jù),當(dāng)最后一個(gè)bit數(shù)據(jù)傳送完畢后,從機(jī)將再次拉低總線50us左右,隨后釋放總線,由上拉電阻拉高。圖6-7數(shù)字“1”信號表示方法圖6-8數(shù)字“0”信號表示方法LCD12864模塊帶中文字庫的LCD12864是一種具有4/8位并行、2/3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;顯示分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣的漢字,也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。網(wǎng)絡(luò)模塊的選擇和簡介市面上常用的網(wǎng)絡(luò)模塊一般有ENC28J60、W5100、W5200、CS8900A。由于W5100和W5200價(jià)格較貴,而ENC28J60只支持SPI傳輸方式,數(shù)據(jù)傳輸速率最高只有10Mb/s,無法實(shí)現(xiàn)高速數(shù)據(jù)傳輸,另外ENC28J60的發(fā)熱問題也很難解決,于是采用CS8900A。CS8900A芯片是CirrusLogic公司生產(chǎn)的一種局域網(wǎng)處理芯片,在嵌入式領(lǐng)域中使用非常常見。采用100-pinTQFP封裝,內(nèi)部集成了片上RAM、10BASE-T收發(fā)濾波器,并且提供8位和16位兩種接口,在單片機(jī)中,一般使用CS8900的8位接口模式。串行E2PROM接口能存儲地址和其他配置信息,電源有5V和3.3V兩種,本設(shè)計(jì)中使用3.3V供電。CS8900A芯片有20根地址總線,雖然控制器支持8位和16位數(shù)據(jù),但對8位數(shù)據(jù)有一些限制,當(dāng)配置為8位數(shù)據(jù)時(shí),控制器不支持中斷,CPU必須斷開,以確定接收到的幀何時(shí)有用,何時(shí)完成發(fā)送,或何時(shí)出現(xiàn)錯(cuò)誤,對于8位數(shù)據(jù),該芯片沒有E2PROM接口,不支持DMA,也沒有自動(dòng)增加的PacketPage指針。其特點(diǎn)包括:(1)符合IEEE802.3以太網(wǎng)標(biāo)準(zhǔn),并有ISA接口(2)片內(nèi)4KBRAM(3)適用于I/O操作模式,存儲器操作模式和DMA操作模式(4)支持10BASE2,10BASE5和10BASE-T連接接口(5)最大電流消耗為55mA(5V電源)(6)全雙工操作(7)支持外部E2PROMPROM網(wǎng)絡(luò)模塊的選擇和簡介CS8900A內(nèi)部功能模塊主要是802.3介質(zhì)訪問控制塊(MAC)。802.3介質(zhì)訪問控制塊,支持全雙工操作,完全依照IEEE802.3以太網(wǎng)標(biāo)準(zhǔn)。它負(fù)責(zé)處理有關(guān)以太網(wǎng)數(shù)據(jù)幀的發(fā)送和接收,包括:沖突檢測,幀頭的產(chǎn)生和檢測,CRC校驗(yàn)碼的生成和驗(yàn)證。通過對發(fā)送控制寄存器的初始化配置,MAC自動(dòng)完成幀頭的沖突后重新發(fā)送。如果幀的數(shù)據(jù)部分少于46個(gè)字節(jié),它能生成填充字段使數(shù)據(jù)幀達(dá)到802.3所要求的最短長度。網(wǎng)絡(luò)模塊的選擇和簡介網(wǎng)絡(luò)模塊的選擇和簡介CS8900A在接收到主機(jī)發(fā)來的數(shù)據(jù)包后,將其存到自己的發(fā)送緩存中,偵聽網(wǎng)絡(luò)線路,如果線路空閑,就立即發(fā)送該數(shù)據(jù)幀,否則等待直到線路空閑再發(fā)送。發(fā)送時(shí),首先給主機(jī)發(fā)來的數(shù)據(jù)包加上以太網(wǎng)幀頭,然后生成CRC校驗(yàn)碼,最后將數(shù)據(jù)幀發(fā)送到以太網(wǎng)上。接收時(shí),它將從以太網(wǎng)上接收到的數(shù)據(jù)幀經(jīng)過解碼,剝?nèi)^和幀尾和地址檢驗(yàn)等步驟后,存到自己的接收緩存中。通過CRC校驗(yàn)后,根據(jù)初始化的配置情況,通知主機(jī)已收到了數(shù)據(jù)幀,最后用某種傳輸方式傳到主機(jī)的存儲區(qū)中。網(wǎng)絡(luò)模塊的選擇和簡介CS88900A有100個(gè)引腳,如圖6-9所示。其中與本設(shè)計(jì)相關(guān)的引腳描述如表6-2所示。圖6-9CS8900A引腳圖網(wǎng)絡(luò)模塊的選擇和簡介引腳說明SA[0~19]:系統(tǒng)地址總線(引腳37~48,50~54,58~60)本設(shè)計(jì)中只用到SA0~SA3共四條地址總線,分別與MSP430F169的P3.0~P3.3相連,用來在I/O模式下訪問CS8900A的16個(gè)寄存器里的8個(gè)I/O端口SD[0:15]:系統(tǒng)數(shù)據(jù)總線(引腳65~68,71~74,24~27,18~21)本設(shè)計(jì)中只用到SD0~SD7共8位數(shù)據(jù)總線,分別與MSP430F169的P4.0~P4.7相連,用來在MSP430和CS8900A之間進(jìn)行數(shù)據(jù)傳輸IOR/IOW:讀/寫控制總線(引腳61,62)讀/寫控制總線,分別與MSP430F169的P5.4P5.3相連,用來表示系統(tǒng)中是否有讀寫訪問,均低電平有效。當(dāng)IOR處于低電平或檢測到一個(gè)有效地址時(shí),表明CS8900A正從16位I/O寄存器向系統(tǒng)數(shù)據(jù)總線輸出數(shù)據(jù),若REFRESH引腳處于低電平,IOR失效;當(dāng)IOW處于低電平或檢測到一個(gè)有效地址時(shí),表明CS8900A正從系統(tǒng)數(shù)據(jù)總線向16位I/O寄存器輸入數(shù)據(jù),若REFRESH引腳處于低電平,IOW失效TXD+/TXD-:10BASE-T信號發(fā)送(輸出引腳87,88)向10BASE-T傳輸線發(fā)送10MB/S曼切斯特編碼數(shù)據(jù)RXD+/RXD-:10BASE-T信號接收(輸入引腳87,88)從10BASE-T傳輸線接收10MB/S曼切斯特編碼數(shù)據(jù)XTAL1,XTAL2(引腳97,98)這兩個(gè)引腳之間連接一個(gè)20MHZ晶振LINKLED:網(wǎng)絡(luò)連接LED(引腳99)顯示發(fā)光二極管是否接入網(wǎng)絡(luò),當(dāng)接入網(wǎng)絡(luò)并且檢測到10BASE-T脈沖信號后,二極管發(fā)光LANLED:網(wǎng)絡(luò)活動(dòng)LED(引腳100)當(dāng)有數(shù)據(jù)發(fā)送或接收時(shí),二極管發(fā)光表6-2CS8900A部分引腳說明CS8900A以太網(wǎng)Server的硬件結(jié)構(gòu)系統(tǒng)硬件連接框圖如圖6-10所示,MSP430F169為MCU,CS8900A為以太網(wǎng)控制器,AM2301為溫濕度測量傳感器。其中MSP430F169是該系統(tǒng)的核心,通過相應(yīng)的引腳來控制CS8900A和AM2301,使用8MHZ的高頻晶振,對時(shí)序的把握會更加準(zhǔn)確。CS8900A通過一個(gè)帶扼流圈的隔離變壓器(E2023)將MCU要發(fā)送的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,接收數(shù)據(jù)亦然。E2023的作用是將外部線路與CS8900A隔開,防止干擾和燒壞元器件,實(shí)現(xiàn)帶電插拔功能。RJ45是8針模式化插孔,對應(yīng)于網(wǎng)線的8針?biāo)ь^。AM2301通過單總線與MCU通信,用來測量外部溫濕度;電路上同時(shí)給出三個(gè)指示燈;加電指示燈,網(wǎng)線接入指示燈和數(shù)據(jù)傳輸指示燈,可以方便地看到Server的工作情況。CS8900A以太網(wǎng)Server的硬件結(jié)構(gòu)圖6-10系統(tǒng)硬件連接框圖各硬件電路設(shè)計(jì)電源電路設(shè)計(jì),MSP430F169單片機(jī)最小系統(tǒng)設(shè)計(jì),LCD12864顯示設(shè)計(jì)相關(guān)內(nèi)容可以參考第4章相關(guān)小節(jié)內(nèi)容。本節(jié)介紹CS8900A電路、單片機(jī)與溫濕度傳感器模塊接口電路及串口電路。CS8900A電路原理圖如圖6-11所示,以太網(wǎng)電路的MSP430F169原理圖如圖6-12所示,單片機(jī)與溫濕度傳感器模塊接口電路如圖6-13所示,串口電路如圖6-14所示。各硬件電路設(shè)計(jì)圖6-11以太網(wǎng)電路CS8900A原理圖各硬件電路設(shè)計(jì)
圖6-12以太網(wǎng)電路的MSP430F169原理圖各硬件電路設(shè)計(jì)圖6-13單片機(jī)與溫濕度傳感器模塊接口電路圖各硬件電路設(shè)計(jì)圖6-14串口電路圖6-11、圖6-12中,以太網(wǎng)控制模塊采用8位I/O模式,以太網(wǎng)的SA0~SA3引腳作為地址總線連接到主控芯片,SA4~SA19引腳中除SA8和SA9接3.3V外其余全部接地;SD0~SD7引腳作為數(shù)據(jù)線接到主控模塊,剩下SD8~SD15引腳全部接地;IOW讀信號引腳和IOR寫信號引腳接到主控芯片;AVDD1~AVDD3引腳,DVDD1~DVDD4引腳提供數(shù)字和模擬電壓接3.3V;AVSS0~AVSS3,DVSS1~DVSS4引腳,DVSS1A,DVSS3A引腳提供數(shù)字模擬電壓接地;系統(tǒng)沒有用到DMA所以DMRCK0~DMRCK2引腳接3.3V;REFRESH引腳接3.3V;系統(tǒng)沒有用到外部LA解碼邏輯所以ELCS引腳接地;XTAL1與XTAL2引腳之間接20M晶振;SLEEP引腳連一個(gè)4.7K電阻后接3.3V,正常模式TEST引腳接3.3V,RES引腳經(jīng)4.99K的電阻后接地;為了使用I/O模式AEN引腳必須接地,CHIPSEL引腳接地;系統(tǒng)沒有外部E2PROM,所以EEDIN引腳接地,MEMR,MEMW引腳接3.3V;因?yàn)椴捎昧?位I/O模式?jīng)]有用到SD8~SD15故SBHE引腳接3.3V;LANLED和LINKLED引腳外接一個(gè)LED當(dāng)物理鏈路接通后LANLED燈亮,當(dāng)有數(shù)據(jù)傳輸時(shí)LINKLED燈亮;RXD+、RXD-引腳并接一個(gè)100歐的電阻后分別連接到E2023的1、3引腳,TXD+、TXD-引腳經(jīng)串接電阻并接電容后分別連到E2023的6、7引腳;E2023的2、7、10、15引腳都串接電容到地,E2023的9、11、14、16引腳連接到RJ45端口的YPTX+、TPTX-、TPRX+、TPRX-引腳。各硬件電路設(shè)計(jì)(1)系統(tǒng)程序流程系統(tǒng)軟件運(yùn)行總體設(shè)計(jì)流程如下:上電后系統(tǒng)初始化,顯示開機(jī)畫面,系統(tǒng)每2s進(jìn)一次中斷,在中斷中實(shí)現(xiàn),串行中斷接收溫度傳感器模塊的輸出信息,并將數(shù)據(jù)處理后通過UART0和UART1傳送給計(jì)算機(jī)PC和副控制芯片,副控制芯片再傳給CS8900A以太網(wǎng)芯片發(fā)送方給遠(yuǎn)程主機(jī)。主程序流程圖如圖6-15所示。系統(tǒng)軟件設(shè)計(jì)系統(tǒng)程序流程圖6-15系統(tǒng)主程序設(shè)計(jì)流程圖系統(tǒng)軟件設(shè)計(jì)(2)LCD12864開機(jī)畫面的MATLAB輔助設(shè)計(jì)系統(tǒng)開機(jī)顯示南京航空航天金城學(xué)院校徽,如圖6-16所示。該圖案用MATLAB軟件和Image2Lcd制作。制作流程可以參考第五章LCD12864顯示部分內(nèi)容。圖6-16開機(jī)圖片的制作系統(tǒng)軟件設(shè)計(jì)(3)LCD液晶顯示器程序1.向LCD液晶顯示器發(fā)送,以字節(jié)的數(shù)據(jù)或指令子程序
調(diào)用方式:voidLCD12864WriteDat(bytedat);
函數(shù)說明:發(fā)送指令cmd到LCD。
調(diào)用方式:voidLCD12864WriteDat(bytedat);
函數(shù)說明:發(fā)送指令data到LCD。2.芯片判忙子程序
調(diào)用方式:voidLCD12864CheckBusy(void);
函數(shù)說明:等待LCD內(nèi)部操作完成,判忙。3.LCD液晶屏初始化子程序
調(diào)用方式:voidInitLCD12864(void);
函數(shù)說明:LCD液晶屏初始化,開機(jī)后僅調(diào)用一次。系統(tǒng)軟件設(shè)計(jì)4.清屏子程序
調(diào)用方式:voidLCD12864Clear(void);
函數(shù)說明:清屏5.顯示字符串程序
調(diào)用方式:voidDispString(bytebuff[]);
函數(shù)說明:在顯示屏上輸出buff[]數(shù)組里的字符串。6.顯示單個(gè)字符程序
調(diào)用方式:voidDispChar(bytech);
函數(shù)說明:在顯示屏上輸出一個(gè)字符。7.字符顯示位置子程序
調(diào)用方式:voidLCD12864Pos(bytex,bytey);
函數(shù)說明:在屏幕x行y列顯示。8.畫圖子程序
調(diào)用方式:voidDispBmp(void);
函數(shù)說明:顯示數(shù)組buff[]里面的圖像系統(tǒng)軟件設(shè)計(jì)(4)溫濕度接收子程序溫濕度接收子程序主要用于接收AM2301模塊發(fā)送的串行數(shù)據(jù)。這個(gè)程序在串行中斷里面完成。通信的波特率默認(rèn)為9600,1個(gè)起始位,1個(gè)停止位,無奇偶校驗(yàn)位。由于溫濕度模塊一次性發(fā)送40位數(shù)據(jù),前16位為濕度數(shù)據(jù),17到32位為濕度數(shù)據(jù),后8位為校驗(yàn)數(shù)據(jù)。1.讀取溫濕度子程序
調(diào)用方式:voidreceive(void)
函數(shù)說明:循環(huán)40次,通過串行總線將數(shù)據(jù)每8位存到DHT21_Code[0]~DHT21_Code[4]里面系統(tǒng)軟件設(shè)計(jì)2.校驗(yàn)和處理溫濕度子程序
調(diào)用方式:voidRead(void)
函數(shù)說明:校驗(yàn)DHT21_Code[4]=DHT21_Code[0]+DHT21_Code[1]+DHT21_Code[2]+DHT21_Code[3]若相等,處理溫濕度數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制存放到tab[0]~tab[5]中系統(tǒng)軟件設(shè)計(jì)(5)嵌入式SERVER子程序嵌入式SERVER子程序包括:以太網(wǎng)控制模塊子程序(CS8900.h,CS8900.C);TCP/IP模塊子程序(tcp.h,tcpp.c)(a)以太網(wǎng)控制模塊以太網(wǎng)控制模塊針對MSP430F169對CS8900A的驅(qū)動(dòng)和通信,主要任務(wù)是在CPU與以太網(wǎng)之間傳輸數(shù)據(jù),包括CS8900.H和CS8900.C。其中頭文件CS8900.H主要包含:各種端口的配置,相關(guān)的存儲器及其他地址的宏定義,相關(guān)變量的定義和申明,各函數(shù)的申明,CS8900.C則包含了相關(guān)變量的初始化,定義及各個(gè)函數(shù)的實(shí)現(xiàn)。該部分主要函數(shù)如下:1.初始化網(wǎng)卡芯片
調(diào)用方式:VoidInit8900(void);系統(tǒng)軟件設(shè)計(jì)2.對指定的端口地址寫入一個(gè)整數(shù)(小端方式)
調(diào)用方式:VoidWrite8900(unsignedcharAddress,unsignedintData);3.向發(fā)送數(shù)據(jù)幀端口寫入一個(gè)整數(shù)(小端方式),等同于Write8900(TX_FRAME_PORT,Data)
調(diào)用方式:VoidWriteFrame8900(unsignedintData);4.從指定的端口地址讀取一個(gè)整數(shù)(小端方式)
調(diào)用方式:UnsignedintRead8900(unsignedcharAddress)5.從接收數(shù)據(jù)幀端口讀取一個(gè)整數(shù)(小端方式),等同于Read8900(RX_FRAME_PORT)調(diào)用
調(diào)用方式:UnsignedintReadFrame8900(void);系統(tǒng)軟件設(shè)計(jì)6.從特殊的的端口地址讀取一個(gè)整數(shù)(小端方式),例如RxStatus寄存器注意:其中必須先讀取地址(Address+1)為整數(shù)高8位,再讀取地址(Address)為低8位調(diào)用方式:UnsignedintReadHB1ST8900(unsignedcharAddress);7.從接收數(shù)據(jù)幀端口讀取一個(gè)整數(shù)(大端方式),通常用于讀取TCP/IP數(shù)據(jù)調(diào)用方式:UnsignedintReadFrameBE8900(void);8.復(fù)制一個(gè)指定數(shù)組的數(shù)據(jù)到CS8900的內(nèi)部緩沖區(qū)(對TX_FRAME_PORT端口的連續(xù)寫)調(diào)用方式:VoidCopyToFrame8900(void*Source,unsignedintSize)系統(tǒng)軟件設(shè)計(jì)9.從CS8900的內(nèi)部緩沖區(qū)復(fù)制數(shù)據(jù)到單片機(jī)(對RX_FRAME_PORT端口的連續(xù)讀)調(diào)用方式:VoidCopyFromFrame8900(void*Dest,unsignedintSize);10.對RX_FRAME_PORT端口的連續(xù)讀取指定的次數(shù),但是不返回?cái)?shù)據(jù),空讀調(diào)用方式:VoidDummyReadFrame8900(unsignedintSize);11.請求指定長度的內(nèi)部緩沖區(qū)空間(準(zhǔn)備用來發(fā)送)調(diào)用方式:VoidRequestSend(unsignedintFrameSize);12.檢查CS8900是否準(zhǔn)備好開始發(fā)送數(shù)據(jù)調(diào)用方式:UnsignedintRdy4Tx(void);系統(tǒng)軟件設(shè)計(jì)以太網(wǎng)控制模塊流程圖如圖6-17所示,首先必須要初始化CS8900A(調(diào)用Init8900())。在這部分中,以太網(wǎng)控制器被重置,存儲在constTInitseqInitseq[]的配置序列被發(fā)送,這其中就包括CS8900A上網(wǎng)MAC地址,常數(shù)中的每一個(gè)實(shí)體都包括一個(gè)地址和一個(gè)數(shù)值,初始化結(jié)束后,傳輸數(shù)據(jù)。系統(tǒng)軟件設(shè)計(jì)圖6-17以太網(wǎng)控制模塊流程圖系統(tǒng)軟件設(shè)計(jì)(b)TCP/IP模塊TCP/IP模塊包含tcpip.h和tcpip.c,下面僅對主要變量和函數(shù)做簡介。緩存MSP430F169共設(shè)置了3個(gè)緩存:Tx_Framel1,Tx_Framel2,RxTCPBuffer。緩存大小可以根據(jù)實(shí)際情況進(jìn)行修改,各個(gè)緩存的作用如下:Tx_Framel1:存放所有需要發(fā)送的TCP數(shù)據(jù)幀,包括所有需要的幀頭。Tx_Framel2:只要存放TCP的非數(shù)據(jù)幀,包括所有需要的幀頭和ARP。ICMP協(xié)議的幀。RxTCPBuffer:用來存放接收到的TCP數(shù)據(jù)幀。系統(tǒng)軟件設(shè)計(jì)建立/關(guān)閉連接建立連接:當(dāng)檢測到一個(gè)連接請求時(shí),調(diào)用TCPPassiveOpen()來建立被動(dòng)連接;當(dāng)發(fā)送緩存里有數(shù)據(jù)需要發(fā)送的時(shí)候,調(diào)用TCPActiveopen()來建立主動(dòng)連接。二者不同之處主要是,建立主動(dòng)連接之前首先要設(shè)定遠(yuǎn)程TCP的IP地址,本地端口號,遠(yuǎn)程端口號,之后還要立即發(fā)送一個(gè)ARP的請求獲得目的主機(jī)的MAC地址。關(guān)閉連接:一種情況是本地或者遠(yuǎn)程用戶通過調(diào)用TCPClose()函數(shù)來關(guān)閉連接;一種是重傳計(jì)數(shù)器超出,或者收到一個(gè)帶復(fù)位標(biāo)簽的數(shù)據(jù)段,導(dǎo)致連接斷開。系統(tǒng)軟件設(shè)計(jì)接收幀信號處理對接收幀信號的處理流程如圖6-18所示,首先調(diào)用DONetworkstuff()判斷是否接收到數(shù)據(jù)幀。接收到幀后,用目的地址來識別它是單播包,還是廣播包。若是單播包,執(zhí)行processEthIAFrame():首先檢查是否是ARP請求響應(yīng),如果是,就可以從中提取對方的MAC地址,用于本地通信;如果是IP類型的數(shù)據(jù)幀,且它的目的地址和本地IP匹配,則根據(jù)IP協(xié)議號調(diào)用函數(shù)ProcessICMPFrame()或者ProcessTCP_Frame()。如果是廣播包,且屬于ARP請求,則執(zhí)行ProcessEthBroadcastFrame():檢查是否生成ARP回復(fù)幀,即執(zhí)行PrepareARP_ANSWER()。系統(tǒng)軟件設(shè)計(jì)圖6-18以太網(wǎng)芯片對接收幀信號的處理流程系統(tǒng)軟件設(shè)計(jì)發(fā)送數(shù)據(jù)兩個(gè)站點(diǎn)建立連接后,就可以傳輸數(shù)據(jù)了。只有當(dāng)傳輸緩存里的數(shù)據(jù)被釋放后才能再次傳輸數(shù)據(jù)。要傳輸數(shù)據(jù),首先要把數(shù)據(jù)寫到TxFramel緩存里,可以通過指針變量TCP_TX_BUF來直接訪問TxFramel緩存。TCPTransmitTx_Buffer()為了確保數(shù)據(jù)傳輸?shù)倪M(jìn)行,先要檢查發(fā)送數(shù)據(jù)是否被允許,并設(shè)置標(biāo)簽SEND_FRAMEL1,然后就可以傳輸數(shù)據(jù)了。系統(tǒng)軟件設(shè)計(jì)數(shù)據(jù)重傳傳輸數(shù)據(jù)的丟失可能導(dǎo)致TCP連接中斷。為了避免這種情況,應(yīng)用時(shí)間控制的數(shù)據(jù)重傳機(jī)制,如果數(shù)據(jù)重傳的次數(shù)超過設(shè)定的最大值,關(guān)閉目前的TCP通信,并且報(bào)告錯(cuò)誤。TCP/IP模塊的使用流程在本模塊的眾多應(yīng)用函數(shù)接口中,DoNetworkstuff()是最為重要的一個(gè),因?yàn)樗ㄟ^組織使用模塊中其它函數(shù),實(shí)現(xiàn)對TCP/IP模塊整體的應(yīng)用。DoNetworkstuff()的流程,代表了TCP/IP模塊的使用流程。如圖6-19所示。系統(tǒng)軟件設(shè)計(jì)圖6-20SERVER軟件實(shí)現(xiàn)流程圖系統(tǒng)軟件設(shè)計(jì)SERVER的主要部分由一個(gè)無限循環(huán)來實(shí)現(xiàn),如圖6-20所示。循環(huán)的主體為:首先監(jiān)聽連接是否打開,如果有主機(jī)想訪問該服務(wù)器并且還沒有打開連接,主機(jī)建立被動(dòng)連接,建立連接后就可以傳輸數(shù)據(jù)了,通過函數(shù)DONETworkStuff()實(shí)現(xiàn)對接收幀的接收和處理重傳機(jī)制的啟動(dòng)一級CPU緩存中數(shù)據(jù)的發(fā)送等,最后通過memcpy(TCP_TX_BUF,temper,n)和TCPTransmitTxBuffer()將數(shù)據(jù)發(fā)送給訪問主機(jī)。系統(tǒng)軟件設(shè)計(jì)(6)初始化子程序系統(tǒng)初始化包括系統(tǒng)時(shí)鐘的初始化,端口的初始化,串口中斷初始化,LCD的初始化。這些在main()主函數(shù)開始時(shí)進(jìn)行初始化。1.端口初始化子程序調(diào)用方式:voidInitial_IO(void);函數(shù)說明:設(shè)置P4口為液晶數(shù)據(jù)口,P2.0、P2.1、P2.2為液晶控制口,P3.4、P3.5、P3.6、P3.7為特殊功能。2.系統(tǒng)時(shí)鐘初始化子程序調(diào)用方式:voidInitClock(void);函數(shù)說明:將MCLK、SMCLK選擇XT2CLK1分頻,設(shè)置為8MHZ。系統(tǒng)軟件設(shè)計(jì)3.串口初始化子程序調(diào)用方式:voidinitUART0_9600(void);voidinitUART1_9600(void);函數(shù)說明:初始化主控制芯片串口0和串口1,設(shè)置波特率為9600,N,8,1;副控制芯片波特率為9600,N,8,1,接收中斷。4.LCD初始化子程序調(diào)用方式:voidlcd_init(void);函數(shù)說明:LCD液晶屏初始化,主要負(fù)責(zé)設(shè)置LCD屏的一些狀態(tài),包括芯片復(fù)位,選擇通信方式為并口,關(guān)芯片顯示,設(shè)置8位數(shù)據(jù)且為基本指令集,設(shè)置芯片顯示關(guān),清除顯示,指定在數(shù)據(jù)的讀取與寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位。系統(tǒng)軟件設(shè)計(jì)5.CS8900A初始化子程序調(diào)用方式:VoidInit8900(void);函數(shù)說明:CS8900A的初始化,主要是設(shè)置CS8900A的MAC地址以及設(shè)置接收幀的類型等。上位機(jī)的設(shè)計(jì)(1)串口上位機(jī)的設(shè)計(jì)系統(tǒng)終端串口上位機(jī)由VB語言編寫,用到了MSComm控件。如圖6-21,該串口主機(jī)終端上位機(jī)程序包含溫濕度監(jiān)控單元,溫濕度設(shè)置單元,溫濕度查詢單元。上位機(jī)默認(rèn)設(shè)置為串口1,波特率9600,無校驗(yàn)位,8位數(shù)據(jù)位,1位停止位,報(bào)警溫濕度設(shè)置為70%RH,17℃。系統(tǒng)登錄界面默認(rèn)用戶名和密碼為“admin”,點(diǎn)擊登錄后,軟件進(jìn)入監(jiān)控界面,點(diǎn)擊“打開端口”如果計(jì)算機(jī)沒有連接硬件,軟件會彈窗警告,如果已連接上硬件,點(diǎn)擊打開端口后,登錄狀態(tài)燈會變成綠色,同時(shí)溫濕度的顯示單元會2s更新一次當(dāng)前環(huán)境溫濕度數(shù)據(jù)。如果當(dāng)前溫濕度超過溫濕度設(shè)置單元里面設(shè)定的溫濕度閾值,溫濕度監(jiān)控單元顯示框里面的數(shù)值會變成紅色同時(shí)報(bào)警燈會變成紅色報(bào)警。上位機(jī)的設(shè)計(jì)上位機(jī)軟件能夠?qū)崟r(shí)存儲接收到溫濕度數(shù)據(jù),數(shù)據(jù)存儲到當(dāng)前目錄下DATA.txt文本中。溫濕度查詢單元可以查詢DATA.txt文本中存儲溫濕度數(shù)據(jù),在查詢界面中的時(shí)間框中輸入如“2013/3/1422.40.56”的一個(gè)時(shí)間,點(diǎn)擊“確定”按鈕后,DATA.txt文本中該時(shí)刻的溫濕度數(shù)據(jù)就會顯示在查詢界面的“濕度”和“溫度”后的顯示框中,如圖6-22所示。存儲的DATA.txt數(shù)據(jù)可以導(dǎo)出和備份。下次使用時(shí),可以直接放到軟件當(dāng)前目錄下,軟件可以直接查詢到。上位機(jī)的設(shè)計(jì)(B)
(A)
圖6-21(A)圖為串口上位機(jī)登錄界面,(B)圖為溫濕度閾值設(shè)置界面上位機(jī)的設(shè)計(jì)圖6-22串口上位機(jī)監(jiān)控和查詢界面以及存儲文本上位機(jī)的設(shè)計(jì)(2)以太網(wǎng)的上位機(jī)設(shè)計(jì)系統(tǒng)終端以太網(wǎng)的上位機(jī)由VB語言編寫,用到了Winsock控件。該以太網(wǎng)的上位機(jī)包含端口設(shè)置單元、溫濕度顯示單元、報(bào)警設(shè)置單元。端口設(shè)置單元用于設(shè)置嵌入式服務(wù)器的IP地址,TCP連接的本地端口和目的端口。系統(tǒng)默認(rèn)本地端口4000,目的端口2025,目的IP:192.168.1.190。連接上硬件后,點(diǎn)擊“連接”按鈕,如果本地端口已占用,本地端口自動(dòng)加“1”,如果本地端口沒被占用,連接狀態(tài)燈變成綠色,按鈕狀態(tài)變成“斷開”,同時(shí)“獲取溫濕度”按鈕被激活。點(diǎn)擊“獲取溫濕度”按鈕,軟件上位機(jī)會自動(dòng)連接硬件獲取溫濕度數(shù)據(jù),顯示在圖6-23中。上位機(jī)的設(shè)計(jì)如果當(dāng)前溫濕度超過溫濕度設(shè)置單元里面設(shè)定的溫濕度闕值,溫濕度監(jiān)控單元顯示框里面的數(shù)值會變成紅色同時(shí)報(bào)警燈會變成紅色報(bào)警。報(bào)警設(shè)置單元用于設(shè)置報(bào)警溫濕度闕值,分別在設(shè)置框中填寫完后,點(diǎn)擊“設(shè)置”按鈕,報(bào)警溫濕度就會被設(shè)定成設(shè)定值。軟件上位機(jī)還能自動(dòng)每2s更新一次當(dāng)前溫濕度數(shù)據(jù),只要把“自動(dòng)獲取”前面的框打上勾,上位機(jī)就能自動(dòng)每2s更新一次當(dāng)前溫濕度數(shù)據(jù)。該軟件上位機(jī)還能自動(dòng)存儲溫濕度數(shù)據(jù),數(shù)據(jù)存儲到當(dāng)前目錄下DATA.TXT文本中,可以導(dǎo)出和備份溫濕度數(shù)據(jù)。上位機(jī)的設(shè)計(jì)(A)(B)圖6-23(A)圖為以太網(wǎng)上位機(jī)監(jiān)控界面,(B)圖為溫濕度設(shè)置界面軟硬系統(tǒng)調(diào)試(1)先將元器件準(zhǔn)備好,然后按設(shè)計(jì)的原理圖搭建硬件電路。(2)硬件搭建完成后,先檢查電源是否能正常工作,輸出的電壓是否正常。如果正常,則檢查單片機(jī)、LCD、AM2301、CS8900A的布線是否正確,是否虛焊。如果不正常,則查找可能出現(xiàn)故障的原因,并修改直到硬件電路能正常的工作。(3)根據(jù)設(shè)計(jì)好的流程圖編寫軟件,編寫完成后就進(jìn)行軟件編譯,如果不正確則修改程序直到編譯通過,然后進(jìn)行軟件的調(diào)試。如果不正確則修改程序,直到邏輯上都正確,能按預(yù)定的設(shè)計(jì)正確的顯示。整機(jī)系統(tǒng)測試系統(tǒng)上電后,系統(tǒng)上電指示燈亮,插上串口線和網(wǎng)線把硬件和計(jì)算機(jī)連接起來,串口的指示燈亮,網(wǎng)孔的指示燈亮,用萬用表測量LM1117輸出端電壓為3.3V。然后檢測給單片機(jī)供電的電壓為3.3V,LCD12864供電電壓為5V,AM2301的供電電壓為5V。設(shè)置電腦終端IP為192.168.1.180,子網(wǎng)掩碼255.255.255.0,網(wǎng)關(guān)192.168.1.1。設(shè)置電腦串口為COM1,9600,N,8,1。整機(jī)系統(tǒng)測試測試結(jié)果:系統(tǒng)上電后可以在液晶上看到開機(jī)的畫面(?;眨?,2s后顯示設(shè)計(jì)者、課題、專業(yè)信息,再3s后系統(tǒng)顯示溫濕度信息。同時(shí)向主機(jī)終端發(fā)送溫濕度數(shù)據(jù),串口數(shù)據(jù)發(fā)送指示燈閃爍。打開“串口遠(yuǎn)程溫濕度監(jiān)控.exe”點(diǎn)擊“打開端口”按鈕后,端口連接指示燈亮,可以在界面上看到溫濕度數(shù)據(jù),同時(shí)軟件能夠在當(dāng)前目錄下生成一個(gè)保存數(shù)據(jù)的TXT文本。改變報(bào)警溫濕度數(shù)值,當(dāng)溫濕度超過設(shè)定閾值后會報(bào)警,軟件界面的綠燈會變成紅燈。整機(jī)系統(tǒng)測試嵌入式以太網(wǎng)服務(wù)器連接正常時(shí)可以在電腦上Ping通嵌入式服務(wù)器(嵌入式服務(wù)器默認(rèn)IP為192.168.1.190),有數(shù)據(jù)傳輸時(shí),D2指示燈會閃爍,打開“以太網(wǎng)遠(yuǎn)程溫濕度監(jiān)控.exe”,點(diǎn)擊“連接”按鈕后TCP連接指示燈亮,勾上“自動(dòng)獲取”可以在界面上看到實(shí)時(shí)溫濕度數(shù)據(jù)。同時(shí)軟件能夠在當(dāng)前目錄下生成一個(gè)保存數(shù)據(jù)的TXT文本。改變報(bào)警溫濕度數(shù)值,當(dāng)溫濕度超過設(shè)定值后會報(bào)警,軟件界面的報(bào)警指示燈會變成紅燈。嵌入式服務(wù)器聯(lián)通測試如圖6-24所示,開機(jī)界面如圖6-25所示,溫濕度本地液晶監(jiān)控界面如圖6-26所示,以太網(wǎng)客戶端監(jiān)控界面如圖6-27所示,串口客戶端監(jiān)控界面如圖6-28所示,串口客戶端查詢界面如圖6-29所示,存儲記錄文本如圖6-30所示,3種監(jiān)控方式對照圖如圖6-31所示。整機(jī)系統(tǒng)測試圖6-24嵌入式服務(wù)器聯(lián)通測試圖6-25開機(jī)畫面整機(jī)系統(tǒng)測試圖6-26溫濕度本地液晶監(jiān)控界面
圖6-27以太網(wǎng)客戶端監(jiān)控界面整機(jī)系統(tǒng)測試圖6-28串口客戶端監(jiān)控界面
圖6-29串口客戶端查詢界面整機(jī)系統(tǒng)測試圖6-30存儲記錄文本圖6-313種監(jiān)控方式對照圖小結(jié)本設(shè)計(jì)主要是遠(yuǎn)程溫濕度監(jiān)控,提供多種顯示、監(jiān)控以及報(bào)警方式。完成本設(shè)計(jì)除了按照文中給出的設(shè)計(jì)流程和附錄中的參考程序外,還需要讀者查閱相關(guān)的文獻(xiàn)資料和使用輔助軟件和小工具。這部分的內(nèi)容請參考本書電子資源本設(shè)計(jì)還有許多可以改進(jìn)和擴(kuò)展的地方,比如增加溫濕度傳感器數(shù)量,設(shè)計(jì)成多路溫濕度監(jiān)控,還可以添加溫濕度自動(dòng)調(diào)節(jié)模塊,如增加風(fēng)機(jī)和加熱模塊使監(jiān)控場所的溫濕度保持在設(shè)定范圍內(nèi)等,使本設(shè)計(jì)更有實(shí)際意義。目錄6.3基于MSP430F169的GPS定位器的設(shè)計(jì)(1)GPS定位原理(2)GPS接收模塊主要性能指標(biāo)(3)DP310接口說明(4)輸出數(shù)據(jù)格式(5)控制器的選擇(6)硬件電路的設(shè)計(jì)(7)GPS定位器軟件設(shè)計(jì)(8)GPS定位器軟硬系統(tǒng)調(diào)試步驟基于MSP430F169的GPS定位器的設(shè)計(jì)GPS全球定位系統(tǒng),具有性能好、精度高、應(yīng)用廣的特點(diǎn),是迄今最好的導(dǎo)航定位系統(tǒng)。本設(shè)計(jì)以SiRF-DP310GPS接收模塊為例,討論基于MSP430F169的GPS接收系統(tǒng)設(shè)計(jì),給出對GPS全球定位系統(tǒng)定位信息的接收以及對各定位參數(shù)數(shù)據(jù)的提取方法,通過本設(shè)計(jì)方法,系統(tǒng)由單片機(jī)控制GPS模塊能較為精確地計(jì)算和顯示日期、時(shí)間、經(jīng)度、緯度等衛(wèi)星信息,通過SYN12864K-ZK液晶顯示屏顯示出來。系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)如圖6-32所示。主要是單片機(jī)對衛(wèi)星信號信息數(shù)據(jù)的提取,并進(jìn)行相應(yīng)的處理,并在液晶顯示模塊上正確的顯示相關(guān)信息。系統(tǒng)中信號接收處理模塊,由DP310GPS模塊完成;數(shù)據(jù)提取和處理模塊,由MSP430F169單片機(jī)完成;數(shù)據(jù)顯示模塊,由SYN12864K-ZK點(diǎn)陣式圖形液晶顯示模塊完成?;贛SP430F169的GPS定位器的設(shè)計(jì)圖6-32系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)圖GPS定位原理GPS由空間部分、地面控制部分和用戶接收機(jī)部分組成。其空間部分包含分布在6個(gè)軌道上的24顆衛(wèi)星,軌道的夾角為60度,距地平均高度為20200公里,每12小時(shí)繞地球一周,使得在任意時(shí)刻,在地面上的任意一點(diǎn)都可以同時(shí)觀測到4顆以上的衛(wèi)星。每顆衛(wèi)星向地面發(fā)射經(jīng)調(diào)制的偽隨機(jī)碼測距信號及衛(wèi)星位置信號,通過接收機(jī)對這些信號的接收和解調(diào),可以計(jì)算出與衛(wèi)星間的距離。在GPS觀測中,我們可得到衛(wèi)星到接收機(jī)的距離,利用三維坐標(biāo)中的距離公式,利用3顆衛(wèi)星,就可以組成3個(gè)方程式,解出觀測點(diǎn)的位置(X,Y,Z)。考慮到衛(wèi)星的時(shí)鐘與接收機(jī)時(shí)鐘之間的誤差,實(shí)際上有4個(gè)未知數(shù),X、Y、Z和時(shí)鐘差,因而需要引入第4顆衛(wèi)星,形成4個(gè)方程式進(jìn)行求解,從而得到觀測點(diǎn)的經(jīng)緯度和高程。所以3顆有效衛(wèi)星可以2D定位,4顆有效衛(wèi)星才能3D定位,測出高程。根據(jù)空間距離交會法,測定出至少與4顆衛(wèi)星的距離,即可確定出用戶的地理位置坐標(biāo)。GPS—OEM板是接收機(jī)的核心模塊,它接收天線獲取的衛(wèi)星信號,經(jīng)過變頻、放大、濾波、相關(guān)、混頻等一系列處理,可以實(shí)現(xiàn)對天線視界內(nèi)衛(wèi)星的跟蹤、鎖定和測量。在獲取了衛(wèi)星的位置信息和測算出衛(wèi)星信號傳播時(shí)間之后,即可計(jì)算出天線位置。以SiRF-DP310GPS為例。用戶通過輸入輸出接口,采用異步串行通信方式與GPS—OEM板進(jìn)行信息交換。OEM板輸出語句向用戶設(shè)備提供定位信息,包括緯度、經(jīng)度、速度、時(shí)間等。GPS定位原理
GPS接收模塊主要性能指標(biāo) 尺寸:DP310:25.4x25.4x3mm(LxBxH)
外盒:全屏蔽 閃存:片上4MbitFLASH和1MbitSRAM
工作電壓:3.3VDC±5%
功耗:105mV(連續(xù)模式) 電源管理:自適應(yīng)TricklePowerTMPush-to-Fix(PTF)
高級電源管理(APM) 環(huán)境工作溫度:-40~+85℃
頻率:L1,1575.42MHz C/A碼:1.023MHz芯片速率 并行20通道 最大更新頻率:1Hz 處理器速率:6,12.5,25和49MHz
數(shù)據(jù)總線:16bit
定位:10米CEP無SA SBAS:<5米,速度0.1米/秒,無SA
GPS接收模塊主要性能指標(biāo) 1微妙的GPS同步時(shí)間 差分定位:1到5米 差分定位速度:0.05米/秒 定位時(shí)間:熱啟動(dòng)為15秒冷啟動(dòng)為45秒 靈敏度:跟蹤 13dBHz
熱啟動(dòng)15dBHz
冷啟動(dòng)30dBHz
直流電源:主電源 +3.3VDC±5%
核心電源 +1.5VDC
連續(xù)模式 在3.3VDC時(shí)55mA
備份電池功率 +3VDC±5%
兩個(gè)全雙工串口通行,波特率可由軟件設(shè)置
1pps秒脈沖信號輸出,精度指標(biāo)高達(dá)10-6sDP310接口說明引腳名稱I/O描述電平1VCCI電源電壓3.3VDC±5%2GND
數(shù)字地
3BOOT-SELECTI如果高電平,引導(dǎo)更新模式CMOS4RXD1I串行數(shù)據(jù)輸入1CMOS5TXD1O串行數(shù)據(jù)輸出1CMOS6TXD2O串行數(shù)據(jù)輸出2CMOS7RXD2I串行數(shù)據(jù)輸入2CMOS8SPI_ENI產(chǎn)生控制線測試,如果不用請將它打開
9VCCGSP3O控制輸出給基帶處理器,如果不用請將它打開CMOS10GND
數(shù)字地
11RF_GND
模擬地
12RF_GND
13RF_GND
14RF_GND
15RF_GND
16RF_GND
17RF_INIGPS信號連接天線50ohms@1.575GHz18RF_GNG
模擬地
19V_ANTI電源的有源天線+12VDC20VCCRFO供應(yīng)射頻電壓+2.85VDC/max.25mA21V_BATI給RTC和SRAM供電3.3VDC±5%22RESET_NI如果低電平則復(fù)位CMOS23VCCI電源電壓3.3VDC±5%24SPI_DATAO產(chǎn)生控制線測試,如果不用請將它打開CMOS25NADC_DI26SPI_CLKI27GP100I/O共用輸入/輸出CMOS28OdometerI/O備用功能Odometer接口SiRFDRive(GSW3-version)。內(nèi)部下拉電阻。復(fù)位時(shí)默認(rèn)為輸入。如果不用請將它打開CMOS29T-MARKO每秒一個(gè)脈沖CMOS30GND
數(shù)字地
表6-3DP310的接口引腳說明輸出數(shù)據(jù)格式
DP310的通信波特率默認(rèn)值為9600bps,1個(gè)起始位,1個(gè)停止位,無奇偶校驗(yàn)位。通常使用NMEA-0183格式輸出,數(shù)據(jù)代碼為ASCII碼字符,是美國國家海洋電子協(xié)會制定的一套通訊協(xié)議。數(shù)據(jù)終端設(shè)備需要實(shí)時(shí)從GPS輸出的NMEA-0183數(shù)據(jù)流中得到位置信息、時(shí)間信息等。GPS接收機(jī)提供了多種語句格式,有GPGGA,GPGSA,GPGSV,GPRMC,GPZDA和GPVTG等。用戶可以根據(jù)需要選擇一種或多種語句輸出。本系統(tǒng)選擇接收并解析GPGGA和GPRMC,分別獲取地理位置信息和UTC時(shí)間信息(含日期),UTC時(shí)間通過時(shí)差修正,得到本地時(shí)間信息。如GPGGA語句中傳送的格式為:舉例:$GPGGA,061026,3732.4149,N,11643.5123,E,1,07,1.4,76.2,M,-7.0,M,*65其標(biāo)準(zhǔn)格式為:$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)各部分所對應(yīng)的含義為: 定位UTC時(shí)間:06時(shí)10分26秒; 緯度(格式ddmm.mmmm:即dd度,mm.mmmm分);
N/S(北緯或南緯):北緯37度32.4149分; 經(jīng)度(格式dddmm.mmmm:即ddd度,mm.mmmm分);
E/W(東經(jīng)或西經(jīng)):東經(jīng)116度43.5123分; 質(zhì)量因子(0=沒有定位,1=實(shí)時(shí)GPS,2=差分GPS):1=實(shí)時(shí)GPS; 可使用的衛(wèi)星數(shù)(0~8):可使用的衛(wèi)星數(shù)=07; 水平精度因子(1.0~99.9):水平精度因子=1.4; 天線高程(海平面,-9999.9~99999.9,單位:(m);天線高程=76.2m);輸出數(shù)據(jù)格式 大地橢球面相對海平面的高度(-999.9~9999.9,單位:m):-7.0m;
差分GPS數(shù)據(jù)年齡,實(shí)時(shí)GPS時(shí)無:無;
差分基準(zhǔn)站號(0000~1023),實(shí)時(shí)GPS時(shí)無:無;*總和校驗(yàn)域:hh總和校驗(yàn)數(shù):65
(CR)(LF):回車,換行。輸出數(shù)據(jù)格式控制器的選擇一般GPS導(dǎo)航器都是GPS配合矢量電子地圖進(jìn)行導(dǎo)航和航線記錄。這些設(shè)備CPU的運(yùn)算量和需要存儲的數(shù)據(jù)量都很大,一般使用X86、ARM等32位CPU。考慮本設(shè)計(jì)只需要顯示經(jīng)緯度和時(shí)間等簡單的信息以及低功耗,選擇TI公司的MSP430F169。硬件電路的設(shè)計(jì)本設(shè)計(jì)控制器選擇TI公司的MSP430F169單片機(jī),GPS模塊DP310,顯示部分選用LCD12864。由于MSP430F169單片機(jī)最小系統(tǒng)、LCD12864顯示部分、電源以及鍵盤電路在第4章已經(jīng)詳細(xì)講述,所以本節(jié)只介紹MSP430F169單片機(jī)與GPS模塊的接口電路。本系統(tǒng)將GPS-OEMDP310的串行口1用作輸出信息。由于GPS-OEM板送出的是RS-232電平,單片機(jī)使用的是COMS/TTL電平,因此與單片機(jī)接口必須進(jìn)行RS-232電平和COMS/TTL電平的轉(zhuǎn)換。RS-232是異步串行通信中應(yīng)用最早的,也是最廣泛的標(biāo)準(zhǔn)串口總線之一。其邏輯“0”電平規(guī)定在+3~+25V之間,邏輯“1”電平則在-3~-25V之間,因而需要使用正負(fù)極性的雙電源。在這里選用MAX3232,能在3.3V的COMS/TTL電平與RS-232電平之間轉(zhuǎn)換。GPS-OEM模塊通過天線將信息接收下來,然后傳送給DP310進(jìn)行處理,處理完之后通過串口1輸出。MSP430F169單片機(jī)通過串口1接收來自GPS模塊的信息,處理后將其輸出到LCD12864上顯示。單片機(jī)與GPS模塊接口電路如圖6-33所示。硬件電路的設(shè)計(jì)圖6-33單片機(jī)與GPS模塊接口電路圖GPS定位器軟件設(shè)計(jì)(1)系統(tǒng)程序流程系統(tǒng)軟件總體設(shè)計(jì)流程如下:上電后系統(tǒng)初始化,顯示開機(jī)畫面,串行中斷接收GPS模塊的輸出信息,確定是否跟蹤,如果跟蹤,每當(dāng)正確接收到“$GPGGA”或“$GPRMC”語句一次,就更新一次顯示,鍵盤可以選擇顯示的GPS信息。圖6-34系統(tǒng)主程序設(shè)計(jì)流程圖GPS定位器軟件設(shè)計(jì)(2)LCD液晶顯示器程序
LCD液晶顯示器程序原型:調(diào)用方式:voidsend_cmd(charcmd);函數(shù)說明:發(fā)送指令cmd到LCD。調(diào)用方式:voidsend_data(chardat);函數(shù)說明:發(fā)送指令data到LCD。先判斷芯片是否忙,忙則等待,不忙則可以發(fā)數(shù)據(jù)或指令。流程圖同6.3節(jié)LCD12864顯示部分,如圖6.16所示。GPS定位器軟件設(shè)計(jì) 芯片判忙子程序原型:調(diào)用方式:voidchek_busy(void); LCD液晶屏初始化子程序原型:調(diào)用方式:voidlcd_init(void);函數(shù)說明:LCD液晶屏初始化,開機(jī)后僅調(diào)用一次。LCD初始化完成后就可以顯示各種圖形和字符了,即進(jìn)入正常的工作狀態(tài)。 清屏子程序原型:調(diào)用方式:voidLcmClearBMP(void);
函數(shù)說明:清屏。起始清屏子程序是在整個(gè)畫面上畫一個(gè)空白的圖片。 畫圖子程序原型如下:調(diào)用方式:voidimg_disp(inttab,inta1);
函數(shù)說明:畫一個(gè)圖形在液晶屏上。GPS定位器軟件設(shè)計(jì)(3)GPS接收子程序GPS接受子程序主要用于接受GPS-DP310模塊發(fā)送的串行數(shù)據(jù)。這個(gè)程序在串行中斷里面完成。通信的波特率默認(rèn)為[15]9600,1個(gè)起始位,1個(gè)停止位,無奇偶校驗(yàn)位。由于GPS模塊發(fā)送的不止一條語句,且要完整地接收到這條$GPGGA和$GPRMC語句,這就必須判斷這條語句的頭,也就是“$GPGGA”或者“$GPRMC”,這7個(gè)字符。當(dāng)完整的接收到這7個(gè)字符后,才能保證是所需的數(shù)據(jù)。具體流程圖如圖6-35所示。GPS定位器軟件設(shè)計(jì)圖6-35單片機(jī)串行中斷接收子程序流程圖GPS定位器軟件設(shè)計(jì)(4)鍵盤子程序鍵盤子程序的用途是根據(jù)鍵盤輸入更新顯示的定位信息,可以選擇顯示的信息包括經(jīng)緯度、北京時(shí)間、大地水準(zhǔn)面高度等信息。使用兩個(gè)按鍵:up和down鍵。具體流程如圖6-36所示。圖6-36鍵盤子程序流程圖GPS定位器軟件設(shè)計(jì)(5)初始化子程序系統(tǒng)初始化包括系統(tǒng)時(shí)鐘的初始化,端口的初始化,串口中斷初始化,LCD的初始化。這些在main()主函數(shù)開始處開始初始化。 端口初始化子程序原型:調(diào)用方式:voidport_init(void);函數(shù)說明:將P4,P5設(shè)置為輸出,P11,P12設(shè)置為中斷輸入。 系統(tǒng)時(shí)鐘初始化子程序原型:調(diào)用方式:voidclk_init(void);函數(shù)說明:將MCLK選擇XT2CLK1分頻,設(shè)置8MHZ,SMCLK選擇XT2CLK8分頻,設(shè)置1MHZGPS定位器軟件設(shè)計(jì) 串口中斷初始化子程序原型:調(diào)用方式:voiduart0_init(void);函數(shù)說明:將P36,P37設(shè)置為串口中斷1,并設(shè)置波特率
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 富士康安全培訓(xùn)專員面試課件
- 2026年保險(xiǎn)合同變更
- 2026年云數(shù)據(jù)庫服務(wù)使用合同
- 2026年旅游平臺導(dǎo)游兼職合同協(xié)議
- 2026年鐵路貨運(yùn)代理合同范本標(biāo)準(zhǔn)版
- 2026年企業(yè)所得稅匯算清繳代理合同
- 2026年航空責(zé)任保險(xiǎn)合同
- 個(gè)人之間借款合同協(xié)議2026年定制版
- 2026年婚前投資收益共享合同協(xié)議
- 《信息技術(shù)基礎(chǔ)(上冊)》課件 模塊四課題二
- 全國質(zhì)量獎(jiǎng)現(xiàn)場匯報(bào)材料(生產(chǎn)過程及結(jié)果)
- 香港驗(yàn)血測性別報(bào)告單
- 研學(xué)實(shí)踐承辦機(jī)構(gòu)服務(wù)與管理規(guī)范
- 車間裝置與設(shè)備布置的安全分析
- 個(gè)人借款借條電子版篇
- 情緒的作文400字五篇
- 【藍(lán)光】藍(lán)光電梯的調(diào)試資料
- NY/T 682-2003畜禽場場區(qū)設(shè)計(jì)技術(shù)規(guī)范
- GB/T 33725-2017表殼體及其附件耐磨損、劃傷和沖擊試驗(yàn)
- 空客a320實(shí)踐考試標(biāo)準(zhǔn)
- GB/T 19519-2014架空線路絕緣子標(biāo)稱電壓高于1 000 V交流系統(tǒng)用懸垂和耐張復(fù)合絕緣子定義、試驗(yàn)方法及接收準(zhǔn)則
評論
0/150
提交評論