本科畢業(yè)設計報告書--基于單片機的電子指南針設計_第1頁
本科畢業(yè)設計報告書--基于單片機的電子指南針設計_第2頁
本科畢業(yè)設計報告書--基于單片機的電子指南針設計_第3頁
本科畢業(yè)設計報告書--基于單片機的電子指南針設計_第4頁
本科畢業(yè)設計報告書--基于單片機的電子指南針設計_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 學科分類號 0806 本科生畢業(yè)設計報告書題目(中文): 基于單片機的電子指南針設計 (英文): The Design of Electronic Compass Based on MCU 學生姓名: 學號: 系別:物理與信息工程系 專業(yè):通信工程 指導教師: 起止日期:2011年12月2012年5月2012年5月18日懷化學院本科畢業(yè)設計報告書誠信聲明作者鄭重聲明:所呈交的本科畢業(yè)設計,是在指導老師的指導下,獨立進行研究所取得的成果,成果不存在知識產(chǎn)權(quán)爭議。除文中已經(jīng)注明引用的內(nèi)容外,報告書中不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的成果。對畢業(yè)設計做出重要貢獻的個人和集體均已在文中以明確的

2、方式標明。本聲明的法律結(jié)果由作者承擔。本科畢業(yè)設計報告書作者簽名:年 月 日目 錄摘要 關(guān)鍵詞 Abstract Key words1 引言 12 系統(tǒng)總體方案設計 32.1系統(tǒng)總體框圖 32.2 信號采集處理的原理 43 硬件電路設計 73.1 主控電路 73.2 串口通信電路 103.3 指南針模塊和接口電路 113.4 實時時鐘電路 143.5 液晶顯示電路 153.6 按鍵輸入電路 164 軟件設計 174.1 主監(jiān)控程序 174.2 實時時鐘驅(qū)動 184.3 人機界面驅(qū)動 194.3.1 液晶模塊驅(qū)到 194.3.2 鍵盤驅(qū)動 194.4指南針模塊驅(qū)動 195 測試結(jié)果 206 總結(jié)

3、 21參考文獻 22致 謝 23附 錄 24基于單片機的電子指南針設計摘 要指南針是我國的四大發(fā)明之一,早期的指南針采用了磁化指針和方位盤的組合方式,這樣的指南針攜帶起來很不方便,且指示靈敏度上有一定不足,準確性很差。本文通過對電子指南針基本工作原理的研究分析,采用磁阻(GMR)傳感器采集某一方向磁場強度,然后通過MCU控制器對其進行處理并顯示上傳,達到了顯示當前所指方向的目的。實際測試指南針模塊精度達到1°,能夠在LCD上顯示當前方位,并能通過鍵盤控制上傳數(shù)據(jù)到上位機。這樣的指南針精度更高,更智能,在大大提高了精度的同時,也降低了成本和設計難度。關(guān)鍵詞電子指南針;磁阻傳感器;單片機

4、;液晶顯示器The Design of Electronic Compass Based on MCUAbstractOne of the China's four great inventions is a compass, early compass pointer and orientation using magnetic disk combination, it is not convenient to carry such a compass. and instructions to have insufficient sensitivity and accuracy is

5、 poor. This article through to the electronic compass basic on working principle of research and analysis, using magnetic resistance (GMR) sensors to collect a certain direction magnetic field intensity, and then through the MCU controller for the treatment and display the upload to display the curr

6、ent pointed direction of purpose. The actual test compass module, up to 1 ° accuracy, it can be displayed on LCD and the current position, and through the keyboard control upload data to the PC. Such a compass not only higher accuracy, more intelligent, greatly improving the accuracy, but also

7、reduce the cost and difficulty of design.Key wordsElectronic Compass; GMR; MCU; LCD1引言指南針是用以判別方位的一種簡單儀器,又稱指北針。指南針的前身是中國古代四大發(fā)明之一的司南。主要組成部分是一根裝在軸上可以自由轉(zhuǎn)動的磁針。磁針在地磁場作用下能保持在磁子午線的切線方向上。磁針的北極指向地理的北極,利用這一性能可以辨別方向。中國是世界上公認發(fā)明指南針的國家。指南針的發(fā)明是我國漢族勞動人民在長期的實踐中對物體磁性認識的結(jié)果。由于生產(chǎn)勞動,人們接觸了磁鐵礦,開始了對磁性質(zhì)的了解。人們首先發(fā)現(xiàn)了磁石吸引鐵的性質(zhì),后來又

8、發(fā)現(xiàn)了磁石的指向性。經(jīng)過多方面的實驗和研究,終于發(fā)明了實用的指南針。最早的指南針是用天然磁體做成的,據(jù)古書記載,遠在春秋戰(zhàn)國時期,由于正處在奴隸制社會向封建社會過渡的大變革時期,生產(chǎn)力有了很大的發(fā)展,特別是農(nóng)業(yè)生產(chǎn)更是興盛發(fā)達,因而促使了采礦業(yè)、冶煉業(yè)的發(fā)展。在長期的生產(chǎn)實踐中,人們從鐵礦石中認識了磁石。它是用天然磁石制成的。樣子象一把湯勺,圓底,可以放在平滑的“地盤”上并保持平衡,且可以自由旋轉(zhuǎn)。當它靜止的時候,勺柄就會指向南方。古人稱它為“司南”。司南由青銅盤和天然磁體制成的磁勺組成,青銅盤上刻有二十四向,置磁勺于盤中心圓面上,靜止時,勺尾指向為南。但司南也有許多缺陷,天然磁體不易找到,在

9、加工時容易因打擊、受熱而失磁。所以司南的磁性比較弱,而且它與地盤接觸處要非常光滑,否則會因轉(zhuǎn)動摩擦阻力過大,而難于旋轉(zhuǎn),無法達到預期的指南效果。而且司南有一定的體積和重量,攜帶很不方便,使得司南長期未得到廣泛應用。隨著人們對指南針原理認識的不斷深入,指南針也由先前笨重的“司南”發(fā)展到現(xiàn)在的便攜式的指南針。但其基本構(gòu)造是沒有改變的,都是屬于機械的指針式,其指示的機械結(jié)構(gòu)基本上沒有改變,都是利用某種支撐使得磁針能夠受到地磁場的影響而自由的旋轉(zhuǎn)。由于機械的先天因素導致了指針式指南針在便攜性、靈敏度、精度以及使用壽命上都有一定的限制。由于國內(nèi)外電子技術(shù)的飛速發(fā)展,特別是在磁傳感器和專用芯片(ASIC)

10、上的發(fā)展使能指南針的基本實現(xiàn)機理有了質(zhì)的改變,不再是機械結(jié)構(gòu)而采用了磁場傳感器和專用處理器對磁場進行測量和處理后指示方向,這就是當前應用較為廣泛的電子式指南針。電子指南針全部采用固態(tài)元件,可以用簡單的方法與其它電子系統(tǒng)進行連接,完成新產(chǎn)品的開發(fā)。電子指南針具有體積小、精度高、穩(wěn)定性好等特點,因為它的這些優(yōu)異性,在工業(yè)、軍事、生活等領(lǐng)域都有著廣泛的應用,并且它可以替代舊式的針式指南針或羅盤式指南針。本課題針對電子指南針的各個功能部件對電子指南針的關(guān)鍵部分做了詳細的研究。采用單片機做為系統(tǒng)的核心控制芯片,而單片機的接口是數(shù)字信號的,想要它能夠處理地球的磁場狀況,必須要把磁場信號轉(zhuǎn)化成電信號(電壓或

11、電流),然后經(jīng)過模數(shù)轉(zhuǎn)換,把模擬的電信號轉(zhuǎn)化成單片機可以處理的數(shù)字信號。把所得的數(shù)字信息通過主控制器進行處理,然后用人機界面表現(xiàn)出來,供我們來讀取和應用。電子指南針系統(tǒng)是一個典型的單片機系統(tǒng),了解其工作原理及其信號處理流程有利于研究更加復雜的嵌入式系統(tǒng),特別是系統(tǒng)中采用進口的磁傳感器及其相關(guān)信號的采集芯片更是有利于研究磁場傳感器的實現(xiàn)機理,以便將其更加廣泛的應用。2 系統(tǒng)總體方案設計2.1 系統(tǒng)總體框圖本系統(tǒng)采用磁阻(GMR)傳感器采集磁場強度,然后把磁場強度轉(zhuǎn)換成數(shù)字量,單片機再對這些數(shù)字量進行處理,最后將處理得到的結(jié)果進行顯示。電子指南針的系統(tǒng)主要由前端磁阻傳感器、磁場測量專用轉(zhuǎn)換芯片、單

12、片控制器、輔助擴展電路、鍵盤、顯示模塊以及系統(tǒng)電源幾個部分組成1,系統(tǒng)結(jié)構(gòu)如圖2.1所示。整個系統(tǒng)中前端的磁阻傳感器負責測量地磁場的大小并將磁場的變化轉(zhuǎn)化為微弱的電流的變化,專用的磁場測量芯片負責把磁阻傳感器變化的電流(模擬量)轉(zhuǎn)換成微控制器可以識別的數(shù)字量,然后將該數(shù)字信號即采集到的數(shù)據(jù)通過SPI總線上傳給微控制器。微控制器將表征當前磁場大小的數(shù)字量按照方位進行歸一化等處理后通過直觀的LCD進行方位顯示,同時可以通過鍵盤控制微控制器進行相應的操作,如將轉(zhuǎn)換后的數(shù)據(jù)通過串口的形式發(fā)送到上位機。整個系統(tǒng)中還包含了實時時鐘等一些輔助電路,使整個系統(tǒng)功能得到進一步的擴展,這使得電子指南針更具備實用價

13、值。電子指南針包含如下功能: 精確地顯示所指的方向。 可以測量到的方向信息形象地顯示在LCD液晶屏上。 可以通過按鍵對電子指南針進行實際的操作。 可將測量到的方向數(shù)據(jù)上傳到PC上。 可以顯示實時時間,更便于應用。2.2 信號采集處理的原理圖 2.2 前端信號采集該部分主要完成對地磁場的測量、A/D轉(zhuǎn)換以及對數(shù)據(jù)的封包。整個前端的信號處理流程如圖2.2所示。整個磁阻傳感器是系統(tǒng)中最前端的信號測量器件,傳統(tǒng)的磁場測量都是采用了電感線圈的形式,在所設計的系統(tǒng)中,由于需要測量的是非常微弱的地磁場,地球表面赤道上的磁場強度在0.290.40高斯之間,兩極處的強度略大,地磁北極約0.61高斯,南極約0.6

14、8高斯。傳統(tǒng)的普通電感線圈的形式在如此微弱的磁場環(huán)境下感應產(chǎn)生的電流是非常微弱的,不便于A/D采樣,增加了測量的難度?;谄胀姼芯€圈測量的不足,所設計的系統(tǒng)采用了磁阻傳感器來測量地址磁場的強度。磁阻傳感器是根據(jù)電場和磁場的原理,當在鐵磁合金薄帶的長度方向施加一個電流時,如果在垂直于電流的方向再施加磁場,鐵磁性材料中就有磁阻的非均質(zhì)現(xiàn)象出現(xiàn),從而引起合金帶自身的阻值變化。如圖2.3所示。圖 2.3 磁阻傳感器原理及其外形由圖中我們可以看出當磁場變化時鐵磁合金的電阻會跟著變化,如果此時的電流不變,那么鐵磁合金兩端的電壓將發(fā)生變化,這樣使用ADC就可以很方便的測量出當前對應的磁場大小。該傳感器體積

15、非常小,測量精度高,最小分辨率可達0.00015高斯,測量地磁場已經(jīng)足夠。通過磁阻效應可以把磁場的變化轉(zhuǎn)換成對應變化的電流,通過A/D轉(zhuǎn)換就可以得到對應的數(shù)字量。ADC這部分主要有專用的磁場測量芯片來完成。本次設計中使用了著名PNI公司的PNI11096磁場測量ASIC,該芯片能夠同時對3軸磁場強度(既X,Y,Z軸)進行測量。這樣可以使用Z軸來進行傾角校正,提高測量精度。在整個指南針模塊程序的設計過程中最主要的也就是其數(shù)據(jù)的處理,直接關(guān)系到系統(tǒng)的精度。在還沒有處理之前從PNI11096讀取的數(shù)據(jù)真實的反應了水平面內(nèi)地磁場的分布情況,均勻轉(zhuǎn)動指南針模塊得到的地磁場強度分布,在不同的方向上是不同的

16、,經(jīng)過歸一化后,可以很好的將其歸一化為圓,使得在各個方向上的磁場強度均勻,這樣既可以方便進行角度計算又可以提高測量精度。指南針模塊在第一次使用前都必須校正,系統(tǒng)上電時將模塊的ADJUST引腳拉低即可進入校正狀態(tài),將模塊在水平面內(nèi)均勻的轉(zhuǎn)動一周后校正結(jié)束。校正時主要調(diào)整的系數(shù)就是本地的磁偏角。將磁場強度歸一化后,直接對X,Y軸的強度進行計算就可以得到當前方向與正東方向的夾角,如圖2.8所示。從圖5.7中可以看出夾角就是: (2.1) 圖2.8 角度的計算3 硬件電路設計3.1 主控電路本次設計中采用了高速51內(nèi)核MCU,具體型號為DS89C450,高速8051架構(gòu),每個機器周期一個時鐘,最高頻率

17、33MHz,單周期指令30ns,雙數(shù)據(jù)指針,支持四種頁面存儲器訪問模式。片內(nèi)64KB閃存,在應用編程,可通過串口實現(xiàn)在系統(tǒng)編程,MOVX可訪問的1KB SRAM。與8051系列端口兼容,四路雙向,8位I/O端口,三個16位定時器,256字節(jié)暫存RAM。支持電源管理模式,可編程的時鐘分頻器,自動的硬件和軟件退出低功耗。外設特性:兩路全雙工串口、可編程看門狗定時器、13個中斷源、五級中斷優(yōu)先級、電源失效復位、電源失效早期預警中斷和可降低EMI3。與51單片機相比,DS89C450還具有一些增強的功能。 DS89C450的引腳分配如圖3.1所示。例如,DS89C450的P2口的某些位可以配置成特殊功

18、能來使用,像P20,P21,P22可以配置成SPI總線接口。SPI接口可以配置成主模式,配置方法可參照表31。 表31 SPI接口配置端口增強功能SS(從模式選擇輸入)接高電平P20MOSI(主模式數(shù)據(jù)輸出從模式數(shù)據(jù)輸入)P21MISO(主模式數(shù)據(jù)輸入從模式數(shù)據(jù)輸出)P22SCK(主時鐘輸出從時鐘輸入)由表31可知,主/從模式的選取是直接通過接高電平來決定,低電平為從模式,高電平為主模式。在本設計中選擇主模式,P2口的0到2口作為SPI接口使用,與前端的磁場強度采集模塊相連。液晶模塊的接口主要接在P0口各P2口上,P0口用來傳輸數(shù)據(jù)和地址,P2口用來控制液晶模塊的工作情況。按鍵鍵盤和實時時鐘模

19、塊的接口主要接在P1上,實時時鐘模塊采用了IIC總線接口,接到P1口的1和2腳。1腳用來傳輸時鐘信號,2腳用來傳輸數(shù)據(jù)信號。P1口剩下的3到8腳供按鍵鍵盤輸入使用。整個系統(tǒng)的控制部分主要完成對指南針模塊數(shù)據(jù)的讀取和處理并將數(shù)據(jù)的處理結(jié)果通過控制人機界面顯示出來,同時監(jiān)控鍵盤的輸入以便完成系統(tǒng)功能設定等操作。整個系統(tǒng)中各個模塊對微控制器的端口占用比較少,指南針模塊的接口采用了SPI總線的形式。LCD是系統(tǒng)中比較繁忙的器件之一,其接口采用了并口模式可以提高數(shù)據(jù)的傳輸速率,保證了液晶顯示屏的及時刷新。DS89C450微控制器內(nèi)部自帶2個通用串行口直接引出即可用,由于系統(tǒng)需要和上位機(本系統(tǒng)中為PC機

20、)進行數(shù)據(jù)通信,接口電平需要轉(zhuǎn)換使其滿足RS-232標準4??刂撇糠蛛娐啡鐖D 3.1所示,其中包含了微控制器、LCD接口電路、端口上拉電阻、系統(tǒng)時鐘電路和指南針模塊接口電路。 圖3.1 系統(tǒng)控制電路圖 3.2 系統(tǒng)時鐘和復位電路整個微控制系統(tǒng)中采用了無源晶振的形式發(fā)生MCU所需要的時鐘信號。具體電路如圖3.2所示。時鐘電路中的兩個電容用作補償,使得晶振更容易起振,頻率更加穩(wěn)定。系統(tǒng)的復位采用了上電復的形式,上電過程中微控制器復位引腳保證10ms以上的高電平就能可靠的將微控制器復位5。3.2 串口通信電路圖 3.3 串口通信電路在本次設計任務中采用了串口作為系統(tǒng)與外界的通信接口,串口通訊對單片機

21、而言意義重大,不但可以實現(xiàn)將單片機的數(shù)據(jù)傳輸?shù)接嬎銠C端,而且也能實現(xiàn)計算機對單片機的控制。通信部分電路圖3.3所示。由于單片機的TTL電平和RS-232協(xié)議的電平不同,需要MAX232進行電平的轉(zhuǎn)換。在本次設計中還充分利用了串口的DTS信號作為單片機串口編程功能使能信號。整個通過串口DTR引腳控制在系統(tǒng)編程6。電路如圖3.4所示。 由于DS89C450提供在系統(tǒng)編程,可以很方便的通過串口對單片機內(nèi)部的FLASH進行刷新。由于DS89C450進入在系統(tǒng)編程需要幾個條件:1 復位引腳電平為高; EA引腳為低電平;PSEN 引腳為低電平圖3.4 串口邏輯電路3.3 指南針模塊和接口電路本次設計中采用

22、了FAD_DCM_SPI指南針模塊。該模塊采用的正是PNI11096和SEN-R65傳感器組合的設計方案。在整個PNI11096信號處理電路中包含了3個主要的部分:1 前端信號處理:由于地磁場非常的微弱,使用SEN-R65傳感器轉(zhuǎn)換后其信號也是非常的微弱。那么需要在信號采集前端加入信號放大和濾波整形電路2,這樣使得A/D能夠準確測量當前磁場大小,如2.4所示。圖 2.4 磁阻傳感器的驅(qū)動 A/D轉(zhuǎn)換電路:這部分主要完成對SEN-R65磁阻傳感器輸出的模擬信號進行A/D轉(zhuǎn)換。 數(shù)據(jù)接口電路:這部分組要完成對A/D轉(zhuǎn)換后得到的數(shù)據(jù)進行格式封裝,并在上位MCU的控制下進行數(shù)據(jù)傳輸。整個PNI1109

23、6和傳感器的連接電路如圖2.5所示。圖 2.5 PNI11096傳感器原理圖該芯片內(nèi)部集成了3軸傳感器驅(qū)動電路,可以測量X,Y,Z三軸的磁場強度,Z軸的磁場強度可以用來校正水平面,使得X,Y軸的測量更為的精確。為了模塊化,所以該模塊把PNI11096芯片的輸出信號經(jīng)過處理后封裝成特定的數(shù)據(jù)報文格式通過SPI總線形式對外提供。經(jīng)過模塊封裝的數(shù)據(jù)格式如下表。表 32 指南針模塊數(shù)據(jù)包格式bit10bit 3 bit 9bit 2bit 1ACK數(shù)據(jù)ACK地址角度數(shù)據(jù)范圍:十六進制(0x000x167),轉(zhuǎn)換成十進制為(0359)。圖 3.5 SPI總線時序SPI(Serial Peripheral

24、 Interface-串行外設接口)總線系統(tǒng)是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOST和低電平有效的從機選擇線SS(有的SPI接口芯片帶有中斷信號線INT或INT、有的SPI接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線MOSI)。由于SPI系統(tǒng)總線一共只需34位數(shù)據(jù)線和控制即可實現(xiàn)與具有SPI總線接口功能的各種I/O器件進行接口,而擴展并行總線則需要8根數(shù)據(jù)線、816位地址線、23位控制線,因此,采用SPI總線接口可以簡化電路設計,節(jié)省很多常規(guī)電路中的接

25、口器件和I/O口線,提高設計的可靠性。SPI總線的時序如圖3.5所示。3.4 實時時鐘電路系統(tǒng)采用了PCF8583實時時鐘芯片為系統(tǒng)提供實時時鐘。PCF8583是一款基于靜態(tài)CMOS RAM的實時時鐘芯片,該芯片采用了I2C總線接口。圖 3.6 實時時鐘電路整個PCF8583的操作都是基于其內(nèi)建的CMOS RAM,通過對其不同地址的RAM的操作可以實現(xiàn)不同的功能。其內(nèi)部的256字節(jié)的RAM區(qū)域被分為了幾個功能區(qū)以完成不同的操作。由于本次使用的DS89C450內(nèi)部沒有I2C控制器,所以直接使用了芯片的I/O口模擬了I2C時序7。整個時鐘部分電路如圖3.6所示。PCF8583采用了I2C總線的形式

26、與外界傳輸數(shù)據(jù)。I2C(InterIntegrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。其時序結(jié)構(gòu)如圖3.7所示。圖 3.7 I2C總線時序3.5 液晶顯示電路本次設計采用了160×128點陣的單色液晶顯示屏(LCD)作為系統(tǒng)的顯示界面,具體的型號為PG160128,該LCM采用了T6963C控圖3.8 LCD內(nèi)部結(jié)構(gòu)圖制芯片作為顯示控制核心。微控制器只需要對T6963C芯片進行操作便可以完成對LCD屏的相關(guān)操作8,使用非常方便。模塊內(nèi)部原理如圖3.8。整個LCM中T6963C負責對LCD行列驅(qū)動芯片T6A40和T6A

27、39進行控制。微控制器只需要按照T6963給定的指令格式進行相應的操作即可。T6963提供10種控制命令,其數(shù)據(jù)和指令的讀寫時序如圖3.9所示。圖 3.9 T6963讀寫時序3.6 按鍵輸入電路圖 3.10 鍵盤電路系統(tǒng)采用了5鍵輸入以實現(xiàn)系統(tǒng)功能的設定,如系統(tǒng)時間的調(diào)整和菜單的選擇。由于系統(tǒng)中的其他模塊對微控制器的端口占用較少還有很多沒有使用的端口,鍵盤連接上直接采用了每個按鍵占用一個端口的形式,如圖3.10所示,電路的中的幾個電阻屬于上拉電阻,保證在沒有輸入的情況下端口電平穩(wěn)定為高,同時也可以達到省電的目的。鍵盤的讀取采用掃描的形式,當檢測到有按鍵按下時,消抖動后進行鍵值判斷9。以上是系統(tǒng)

28、各個硬件部分的闡述,以下是整個系統(tǒng)的總電路。系統(tǒng)總電路中包含了系統(tǒng)主控制電路、指南針模塊、實時時鐘、通信電路及其邏輯控制電路,擴展接口和相關(guān)輔助電路。在進行系統(tǒng)PCB的器件方位布置和走線時,特別注意了通信電路和信號采集電路的隔離。LCD部的干擾比較大在進行器件放置時,將容易受到干擾的器件排布到其他區(qū)域,并采取一定的隔離措施。4 軟件設計4.1 主監(jiān)控程序整個監(jiān)控系統(tǒng)中各個模塊間存在一定的先后順序且程序模塊數(shù)量較少,為了減少系統(tǒng)的程序量,設計過程中系統(tǒng)的監(jiān)控程序采用了傳統(tǒng)的前后臺方式。整個監(jiān)控程序主要由指南針模塊驅(qū)動、液晶顯示驅(qū)動、實時時鐘驅(qū)動和串口驅(qū)動組成10。整個系統(tǒng)監(jiān)控程序流程如圖4.1

29、系統(tǒng)監(jiān)控程序流程圖5.1所示。當系統(tǒng)上電后,最先執(zhí)行的就是對系統(tǒng)各個部件進行初始化的代碼,其中主要包括對系統(tǒng)內(nèi)部定時器、實時時鐘、LCD驅(qū)動、指南針模塊以及對系統(tǒng)通信串口的初始化。系統(tǒng)初始化完成時對指南針模塊進行讀取,此時指南針模塊將根據(jù)ADJUST端口的電平狀態(tài)判定是否需要校正指南針,其后將得到的數(shù)據(jù)上傳至微控制器,微控制器根據(jù)得到的數(shù)據(jù)驅(qū)動LCD進行相應的顯示,隨后微控制器將對系統(tǒng)鍵盤端口進行掃描,并根據(jù)掃描得到的鍵值進行相應的處理。前后臺式的監(jiān)控系統(tǒng)結(jié)構(gòu)簡單,但是其實時性較差。系統(tǒng)中由于各個程序之間相互關(guān)聯(lián),且對實時性要求不是很高,前后臺能夠滿足其要求。4.2 實時時鐘驅(qū)動實時時鐘為整個

30、系統(tǒng)的運行提供實時數(shù)據(jù)。本次設計采用的圖 4.2 PCF8583驅(qū)動流程PCF8583實時時鐘芯片采用的I2C接口,對它的所有操作直接通過對其內(nèi)部線性的CMOS RAM區(qū)進行操作即可即對PCF8583的操作主要是通過I2 通過I2C總線對其內(nèi)部RAM進行讀寫11。整個驅(qū)動流程如圖4.2所示。4.3 人機界面驅(qū)動4.3.1 液晶模塊驅(qū)動液晶顯示驅(qū)動處于系統(tǒng)的最后端,屬于人機交互界面。直觀的液圖 4.3 LCM驅(qū)動程序架構(gòu)晶顯示能夠使得系統(tǒng)更容易操控。本次設計采用了PG160128 點陣的 LCM模塊。整個LCM驅(qū)動的構(gòu)架圖如4.3所示。采用層次設計的驅(qū)動可以很好的移植到不同的處理器。4.3.2

31、鍵盤驅(qū)動系統(tǒng)中將按鍵電路中按鍵、分別與單片機的P13、P14、P15、P16、P17引腳進行連接,此按鍵是低電平有效,當有鍵按下時,與按鍵相連接的單片機引腳檢測到這個信號,然后進行相應的處理后再輸出12。4.4指南針模塊驅(qū)動 本次設計采用的是FAD_DCMP_SPI指南針模塊。模塊采用SPI接口與MCU進行數(shù)據(jù)交換。整個模塊驅(qū)動包括了讀取PNI11096數(shù)據(jù)、處理數(shù)據(jù)、封裝數(shù)據(jù)和通過SPI時序發(fā)送數(shù)據(jù)幾個部分。程序的流程如圖4.4所示圖4.4 指南針模塊內(nèi)部數(shù)據(jù)處理流程5 測試結(jié)果 在測試過程中,移動指南針模塊到不同的方向都能較為正確的將測量到的方向信息形象地顯示在LCD液晶屏上。由于接入了實

32、時實鐘模塊,在LCD液晶屏上也能正確的顯示當前的日期和時間。同時,通過鍵盤成功的調(diào)節(jié)了日期和時間,也能控制電子指南針進行實際的操作。通過串口也能將測量到的方向數(shù)據(jù)上傳到上位機PC上。但是焊接技術(shù)不是非常的過硬,導致系統(tǒng)的穩(wěn)性和抗干擾能力不是很好,同時實際測量到的方向角度總是有1到2度的誤差。6 總結(jié) 經(jīng)過一個多月的努力,我終于設計出了一個簡易的電子指南針。 所設計的系統(tǒng)中包含了磁場傳感器、微控制器、顯示部件、輸入部件和實時時鐘等部分,微控制器通過對磁場傳感器配套的ASIC進行讀取獲得當前方向地磁場的強度,通過一定的運算后由液晶顯示器顯示出來,并可以通過微控制器的串口和上位機建立連接進行數(shù)據(jù)的傳

33、輸。 在課題的制作過程中,我也遇到了很多問題。在硬件上,有些芯片的性能不是很了解,到網(wǎng)上又找不到相應的芯片資料,只能自己慢慢地摸索。也正是這樣的一個過程,使我對芯片更加地了解,原理更加的明白,進一步的鞏固了我的專業(yè)知識。在軟件方面,最主要的問題就是當前方向與正東方夾角的獲取。經(jīng)過向老師同學的請教,明白了在軟件編程時要非常注重硬件電路。因為軟件是建立在硬件的基礎(chǔ)上的。同時一個正確的軟件程序也能幫助檢測硬件電路是否有問題。在整個研究開發(fā)的過程中,我始終保持著認真,仔細的態(tài)度,不斷提高自己的硬件系統(tǒng)設計各軟件設計的能力,看到自己的勞動有了成果,我感到非常的高興。但因為個人在知識面和能力方面還有限,再

34、加上條件的限制,我所完成的只是整個系統(tǒng)的一部分,電子指南針的采樣精度和抗干擾能力等各項技術(shù)指標的提高、諸多功能的完善還需要進一步的研究和開發(fā),此外在完成基本功能的基礎(chǔ)上,還需要努力提高軟件的效率、硬件系統(tǒng)的穩(wěn)定性、進一步降低系統(tǒng)功耗等。參考文獻1 黃志偉編著. 全國大學生電子設計競賽系統(tǒng)設計M. 北京: 北京航空航天大學出版社, 2006.2 佐藤一朗. 集成運算運算放大器電路設計實用手冊M. 北京: 北京航空航天大學出版社, 1989.高吉祥.3 余錫存,曹國華.單片機原理及接口技術(shù).西安:西安電子科技大學出版社. 2007. 4 高吉祥. 全國大學生電子設計競賽培訓系列教程之基本技能訓練與

35、單元電路設計M. 北京:電子工業(yè)出版社,2007 5 高吉祥. 高頻電子技術(shù)第二版M.北京:電子工業(yè)出版社,2008.6 Bonnie Baker. 嵌入式系統(tǒng)中的模擬設計M, 北京: 北京航空航天大學出版社. 2006.7 王新賢.通用集成電路速查手冊M.濟南:山東科學技術(shù)出版社,2002.8 蔣璇,臧純?nèi)A.數(shù)字系統(tǒng)設計與PLD應用第二版M. 北京:電子工業(yè)出版社,2005.9 模擬電子技術(shù)第二版M.北京:電子工業(yè)出版社,2008. 10 譚浩強. c程序設計(第三版).清華大學出版社. 北京:2009.11 付家才.單片機實驗與實踐M.北京:高等教育出版社,2006.12 郭天祥. 51單

36、片機C語言教程. 北京:電子工業(yè)出版社.2009. 37致 謝在本論文完成之際,我首先要向我的指導老師瞿軍表達我最誠摯的謝意,感謝瞿老師在整個畢業(yè)設計過程中耐心細致的指導! 這次畢業(yè)論文能夠得以順利完成,并非我一人之功勞,是所有指導過我的老師,幫助過我的同學和一直關(guān)心支持著我的家人對我的教誨、幫助和鼓勵的結(jié)果。我要在這里對他們表示深深的謝意!感謝我的父母,他們不僅培養(yǎng)了我對中國傳統(tǒng)文化的濃厚的興趣,讓我在漫長的人生旅途中使心靈有了虔敬的歸依,而且也為我能夠順利的完成畢業(yè)論文提供了巨大的支持與幫助。在未來的日子里,我會更加努力的學習和工作,不辜負父母對我的殷殷期望!我一定會好好孝敬和報答他們!最

37、后,向所有關(guān)心我的親人、師長和朋友們表示深深的謝意。附錄:/*模塊名稱:測試主程序*/#include <reg52.h>#include <stdio.h>#include <math.h> #include "DriverT6963.h" /* T6963驅(qū)動庫 */#include "DataBase.h"#include "PCF8583.h"#include "UART.h"unsigned char GblCnt = 0;unsigned char T0IRQCNT

38、= 0;unsigned char oldtempx, oldtempy;unsigned int Angle;unsigned char keyflag = 0;extern unsigned char COMBUF10; /* 定義接收緩沖區(qū)*/unsigned char COMCNT=0;/*函數(shù)名稱:delay()*函數(shù)功能:軟件延遲*入口參數(shù):延遲時間倍數(shù)*出口參數(shù):無*具體資源:無*調(diào)用程序:無*備 注:延時不精確*/void delay(unsigned int time) unsigned int i,j; for (i=0; i<time; i+) for (j=0;

39、j<1700; j+); /*函數(shù)名稱:DisCurTime()*函數(shù)功能:在指定位置顯示實時芯片內(nèi)的時間*入口參數(shù):顯示位置x, y坐標 *出口參數(shù):無*具體資源:無*調(diào)用程序:ReadPCF8583(), DisStr()*/ void DisCurTime(unsigned char x, unsigned char y) unsigned char time3;unsigned char dispBuff9;ReadPCF8583(0x02, 3, time);dispBuff8 = '0' /* 在數(shù)組最后單元放入標識符以便判斷內(nèi)容結(jié)束 */ dispBuff7

40、 = (time0 & 0x0f) + '0' /* 提取秒個位 */dispBuff6 = (time0 >> 4) + '0' /* 提取秒十位 */dispBuff5 = ':'dispBuff4 = (time1 & 0x0f) + '0' /* 提取分個位 */dispBuff3 = (time1 >> 4) + '0' /* 提取分十位 */dispBuff2 = ':'dispBuff1 = (time2 & 0x0f) + '0

41、' /* 提取時個位 */dispBuff0 = (time2 >> 4) & 0x03) + '0' /* 提取時十位 */DispStr(y*20+x, dispBuff);/*函數(shù)名稱:DisCurDate()*函數(shù)功能:在指定位置顯示實時芯片內(nèi)的日期*入口參數(shù):顯示位置x, y坐標*出口參數(shù):無*具體資源:無*調(diào)用程序:ReadPCF8583(), DisStr()*/void DisCurDate(unsigned char x, unsigned char y) unsigned char Date2;unsigned char DisB

42、uf11;ReadPCF8583(0x05, 2, Date); /* 獲取PCF8583的日期 */ DisBuf4 = (Date0 & 0x0f) + '0' /* 提取日個位 */DisBuf3 = (Date0 >> 4) & 0x03) + '0' /* 提取日十位 */DisBuf2 = '/'DisBuf1 = (Date1 & 0x0f) + '0' /* 提取月個位 */DisBuf0 = (Date1 >> 4) & 0x01) + '0'

43、; /* 提取月十位*/DisBuf5 = '/' DisBuf6 = '2' DisBuf7 = '0' DisBuf8 = '0' DisBuf9 = '8' DisBuf10= '0' /* 在數(shù)組最后單元放入標識符以便判斷內(nèi)容結(jié)束*/ DispStr(y*20+x, DisBuf);/*函數(shù)名稱:DisClock()*函數(shù)功能:繪制鐘面*入口參數(shù):顯示位置 *出口參數(shù):無*具體資源:無*調(diào)用程序:Circle(), Line(), WriteEN(), EasyCH() */void Dra

44、wClock(unsigned char x, unsigned char y, unsigned char r) Circle(x, y, r); Line(x, y-r, x, y-r+5, 0); /* 繪制0點處豎線 */ Line(x, y+r, x, y+r-5, 0); /* 繪制6點處豎線 */ Line(x-r, y, x-r+5, y, 0); /* 繪制9點處豎線 */ Line(x+r, y, x+r-5, y, 0); /* 繪制3點處豎線 */ WriteEN(198,'E'); WriteEN(273,'S'); WriteEN(1

45、89,'W'); WriteEN(93,'N'); EasyCH(3, 1, fang); EasyCH(3, 2, wei);/*函數(shù)名稱:GraphicTest()*函數(shù)功能:顯示子函數(shù)測試程序*入口參數(shù):無*出口參數(shù):無*具體資源:無*調(diào)用程序:顯示子函數(shù)*/void GraphicTest(void) Circle(80, 63, 60);Rectangle(0, 0, 159, 127, 0);Triangle(0, 0, 20, 30, 120, 50);Line(0, 0, 159, 127, 0);Line(0, 127, 159, 0, 1);

46、/*函數(shù)名稱:DisMain() *函數(shù)功能:主顯示界面*入口參數(shù):顯示位置*出口參數(shù):無 *具體資源:無*調(diào)用程序:無*備 注:僅用作測試使用*/void DisMain(void) Rectangle(0, 22, 159, 127, 0); DrawClock(113, 70, 45); Line(0, 115, 159, 115, 0); Line(64, 22, 64, 115, 0);/*函數(shù)名稱:DisCurDirc()*函數(shù)功能:顯示當前方位指針*入口參數(shù):顯示角度*出口參數(shù):無*具體資源:無*調(diào)用程序:WriteEN(), Line()*/void DisCurDirc(un

47、signed int Dir) unsigned char tempx, tempy; unsigned char Dir1, Dir2, Dir3; Dir1 = Dir/100 +'0' /* 提取其各位*/ Dir2 = (Dir%100)/10 + '0' Dir3 = (Dir%100)%10 + '0' WriteEN(122, Dir1); WriteEN(123, Dir2); WriteEN(124, Dir3); Dir = Dir/3; /* 不滿3的倍數(shù)的按3的倍數(shù)算 */ tempx = DirTbl(Dir<<1); tempy = DirTbl(Dir<<1)+1); LineClr(113, 70, oldtempx,

溫馨提示

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

評論

0/150

提交評論