基于單片機(jī)的電子指南針設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的電子指南針設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的電子指南針設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的電子指南針設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的電子指南針設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄目錄目錄TOC\o"1-2"\h\u16860摘要: 圖1.3HMC1501實(shí)物圖特點(diǎn):磁場(chǎng)范圍高至6高斯(地磁場(chǎng)=0.5高斯)。封裝尺寸小。設(shè)計(jì)成單軸和雙軸可組合在一起工作從而提供3軸(xyz)傳感。單軸傳感器封裝在8針SIP或8針SOIC,或陶瓷8針DIP內(nèi)。雙軸傳感器封裝在16針或20針SOIC封裝內(nèi)。這類小型裝置相比于機(jī)械磁通門大大降低了裝配成本并提高了可靠性和耐用性。價(jià)格便宜,這類傳感器經(jīng)專門設(shè)計(jì)對(duì)于大批量的OEM應(yīng)用價(jià)格合適,市場(chǎng)價(jià)格100-500元。考慮到所選擇的單片機(jī)為51系列,課程設(shè)計(jì)所要求的精度及成本問(wèn)題,所以選擇了Honeywell公司的HMC5883L磁阻傳感器來(lái)做課程設(shè)計(jì)。2主要元器件介紹2.1主控制器STC89C52介紹STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),高性能8位單片機(jī)AT89C52是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含8kBytes的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,,做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個(gè)16位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。2.2磁阻傳感器HMC5883L介紹霍尼韋爾HMC5883L是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤和磁場(chǎng)檢測(cè)領(lǐng)域。HMC5883L包括最先進(jìn)的高分辨率HMC118X系列磁阻傳感器,并附帶霍尼韋爾專利的集成電路包括放大器、自動(dòng)消磁驅(qū)動(dòng)器、偏差校準(zhǔn)、能使羅盤精度控制在1°~2°的12位模數(shù)轉(zhuǎn)換器.簡(jiǎn)易的I2C系列總線接口。HMC5883L是采用無(wú)鉛表面封裝技術(shù),帶有16引腳,尺寸為3.0*3.0*0.9mm。HMC5883L的所應(yīng)用領(lǐng)域有手機(jī)、筆記本電腦、消費(fèi)類電子、汽車導(dǎo)航系統(tǒng)和個(gè)人導(dǎo)航系統(tǒng)?;裟犴f爾HMC5883L磁阻傳感器電路是三軸傳感器并應(yīng)用特殊輔助電路來(lái)測(cè)量磁場(chǎng)。通過(guò)施加供電電源,傳感器可以將量測(cè)軸方向上的任何入射磁場(chǎng)轉(zhuǎn)變成一種差分電壓輸出。磁阻傳感器是由一個(gè)鎳鐵(坡莫合金)薄膜放置在硅片上,并構(gòu)成一個(gè)帶式電阻元件。在磁場(chǎng)存在的情況下,橋式電阻元件的變化將引起跨電橋輸出電壓的相應(yīng)變化。這些磁阻元件兩兩對(duì)齊,形成一個(gè)共同的感應(yīng)軸(如圖2.1所示),隨著磁場(chǎng)在感應(yīng)方向上不斷增強(qiáng),電壓也會(huì)正向增長(zhǎng)。因?yàn)檩敵鲋慌c沿軸方向上的磁阻元件成比例,其他磁阻電橋也放置在正交方向0上,就能精密測(cè)量其他方向的磁場(chǎng)強(qiáng)度。箭頭標(biāo)明磁場(chǎng)方向,該磁場(chǎng)在正常測(cè)量模式下產(chǎn)生正向輸出可讀。2.2.1I2C通信HMC5883LL通過(guò)兩線I2C總線系統(tǒng)作為一個(gè)從機(jī)裝置進(jìn)行通信。HMC5883LL使用是一個(gè)I2C協(xié)議所定義的簡(jiǎn)化后的通信接口協(xié)議,通過(guò)這一文件,。數(shù)據(jù)傳輸速率是標(biāo)準(zhǔn)模式100kbps或400kbps速率,如I2C總線規(guī)格中所規(guī)定??偩€位格式是一個(gè)8位數(shù)據(jù)/地址傳送和1位應(yīng)答位。格式的數(shù)據(jù)字節(jié)(有效載荷)應(yīng)區(qū)分HMC5883L從機(jī)上的大小寫(xiě)的ASCII字符或二進(jìn)制數(shù)據(jù),以及返回的二進(jìn)制數(shù)據(jù)。負(fù)二進(jìn)制值將是以二進(jìn)制的補(bǔ)碼形式。默認(rèn)(出廠)HMC5883LL7位從機(jī)地址為0x3C的寫(xiě)入操作,或0x3D的讀出操作。圖2.1HMC5883L-頂視圖HMC5883L引腳配置表,如表1所示。表1HMC5883L引腳配置表引腳名稱描述1SCL串行時(shí)鐘-I2C主從時(shí)鐘2VDD供電端2.16V-3.6V3NC空引腳4S1與電源供電引腳相連5NC空引腳6NC空引腳7NC空引腳8SETP與S/R電容器C2相連,連驅(qū)動(dòng)端9GND接地10C1與儲(chǔ)能電容器C1相連11GND接地12SETC與S/R電容器C2相連-驅(qū)動(dòng)端13VDDIOI/O口供電14NC空引腳15DRDY數(shù)據(jù)準(zhǔn)備,中斷引腳。內(nèi)部拉高??蛇x的連接。保持250μ秒時(shí),數(shù)據(jù)被放置在數(shù)據(jù)輸出寄存器。16SDA串行數(shù)據(jù)–I2C主從數(shù)據(jù)圖2.2HMC5883L外圍電路圖2.3實(shí)際尺寸的由HMC5883L構(gòu)成的傳感器模塊HMC5883LL串行時(shí)鐘(SCL)和串行數(shù)據(jù)(SDA)線需要主機(jī)(通常是主機(jī)微處理器)和HMC588LL之間裝有上拉電阻(Rp)。在標(biāo)稱VDDIO電壓下建議負(fù)載電阻值約為10千歐姆。其他電阻值也可以由I2C總線規(guī)格定義后連接到VDDIO上??偩€規(guī)格的SCL和SDA線可以連接到多個(gè)裝置上??偩€可以是一個(gè)單一主機(jī)到多個(gè)從機(jī),也可以是一個(gè)多個(gè)主機(jī)配置。所有數(shù)據(jù)傳輸均由產(chǎn)生時(shí)鐘信號(hào)的主機(jī)發(fā)起,數(shù)據(jù)傳輸是8位進(jìn)行。所有裝置都由I2C唯一的7位地址標(biāo)注。在每8位傳輸之后,主機(jī)裝置產(chǎn)生一個(gè)第9個(gè)時(shí)鐘脈沖,并釋放SDA的線。接收裝置(指向的從機(jī))將SDA線拉至低位確認(rèn)(ACK)傳輸成功或使SDA線處于高位表示否定確認(rèn)(NACK)。按I2C規(guī)格,所有SDA線中的傳輸必須發(fā)生在SCL低時(shí)。但當(dāng)SCL處于高位時(shí),在總線上與SDA傳送時(shí)這一要求會(huì)導(dǎo)致兩種特別的情況。主機(jī)將拉SDA拉低,而SCL線是高,表明開(kāi)始(S)的條件;當(dāng)SDA的線被拉高而SCL處于高位,這是停止(P)的情況。I2C總線協(xié)議還允許重新啟動(dòng)的條件,這時(shí)主機(jī)發(fā)出第二次啟動(dòng)條件還沒(méi)有叫停。所有總線傳送從主機(jī)發(fā)出啟動(dòng)序列開(kāi)始,然后發(fā)出從機(jī)地址字節(jié)。地址字節(jié)包含從機(jī)地址;先7位和最低有效位。如果指定的運(yùn)作是一個(gè)讀出或?qū)懭?,地址的LSb字節(jié)會(huì)標(biāo)志出來(lái)。在第9個(gè)時(shí)鐘脈沖,接收的從機(jī)裝置會(huì)發(fā)出ACK。這些總線事件以后,主機(jī)將發(fā)送數(shù)據(jù)字節(jié)以便寫(xiě)入操作,或從機(jī)在讀出操作時(shí)進(jìn)行時(shí)鐘輸出。所有總線的傳送在主機(jī)發(fā)出停止序列時(shí)終止。2.2.2連續(xù)測(cè)量模式連續(xù)測(cè)量模式,在客戶所選擇的速率下進(jìn)行連續(xù)的測(cè)量,并所測(cè)量的更新數(shù)據(jù)輸出寄存器。如果有必要,數(shù)據(jù)可以從數(shù)據(jù)輸出寄存器重新讀取,但是,如果主機(jī)并不能確保在下次測(cè)量完成之前可以訪問(wèn)數(shù)據(jù)寄存器,數(shù)據(jù)寄存器上的舊的數(shù)據(jù)會(huì)被新的測(cè)量數(shù)據(jù)取代。為了保存測(cè)量之間的電流,該裝置被放置在一個(gè)類似閑置模式的狀態(tài),但模式寄存器沒(méi)有改變成空閑模式。即MD[n]位不變。配置寄存器A的設(shè)置在連續(xù)測(cè)量模式時(shí)會(huì)影響數(shù)據(jù)輸出速率(比特DO[n]),測(cè)量配置(bitsMS[n]),和增益(bitsGN[n])。所有寄存器在連續(xù)測(cè)量模式中保留數(shù)值。在連續(xù)測(cè)量模式下I2C總線可被網(wǎng)絡(luò)內(nèi)的其他裝置啟用[5]。2.2.3數(shù)據(jù)處理HMC5883L能測(cè)量X,Y,Z三個(gè)方向的數(shù)據(jù),這三個(gè)方向是正交的,對(duì)這三個(gè)方向的數(shù)據(jù)進(jìn)行處理可以得到磁場(chǎng)的角度,每個(gè)方向擁有兩個(gè)八位的數(shù)據(jù)寄存器A和B,寄存器A中儲(chǔ)存一個(gè)測(cè)量結(jié)果中的高位數(shù)據(jù),寄存器B中儲(chǔ)存一個(gè)自測(cè)量結(jié)果的低位數(shù)據(jù),這兩個(gè)寄存器中的值是以二進(jìn)制補(bǔ)碼形式存在的十六位,其范圍是0XF800到0X07FF。因?yàn)閆軸垂直于磁場(chǎng),所里理論上等于零,只需要X,Y的值就可以算出角度來(lái),公式為angle=arctan(X/Y)[6]。2.31602LCD液晶顯示器1602LCD工業(yè)字符型液晶,能夠顯示16*2即32個(gè)字符。即16列兩行。是一種專門用來(lái)顯示字母,數(shù)字,符號(hào)等的點(diǎn)陣型液晶。由若干個(gè)5*7或者5*11等點(diǎn)陣字符位組成,每個(gè)字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)陣的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。圖2.41602LCD實(shí)物圖1602LCD主要技術(shù)參數(shù):顯示容量:16×2個(gè)字符芯片工作電壓:4.5—5.5V

工作電流:2.0mA(5.0V)

模塊最佳工作電壓:5.0V

字符尺寸:2.95×4.35(W×H)mm引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的16腳(帶背光)接口,各引腳接口說(shuō)明如表2所示。表21602LCD引腳功能編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極3程序流程圖程序流程圖如圖3.1所示初始化系統(tǒng)初始化系統(tǒng)開(kāi)始讀完?IC寫(xiě)信號(hào)發(fā)設(shè)備地址IC停止連續(xù)讀取磁場(chǎng)數(shù)據(jù)IC讀信號(hào)發(fā)讀取單元地址是否顯示數(shù)據(jù)圖3.1程序流程圖4設(shè)計(jì)思路角度算法:angle1=arctan(2y/x)*(180/∏)+180指南針的角度指向正南方時(shí)為0度,指針的角度隨x軸順時(shí)針?lè)较蜻M(jìn)行遞增,角度從0度到359度[7,8]。如圖4.1所示正南0度正東270度正西90度正北180度圖4.1指南針?biāo)姆轿徽?內(nèi)部主要程序//*********************************************************//主程序********//*********************************************************voidmain(){unsignedinti,j;intx,y,z;doubleangle;InitLcd();Init_HMC5883();while(1){Multiple_Read_HMC5883();//連續(xù)讀出數(shù)據(jù),存儲(chǔ)在BUF中x=BUF[0]<<8|BUF[1];//CombineMSBandLSBofXDataoutputregisterz=BUF[2]<<8|BUF[3];//CombineMSBandLSBofZDataoutputregistery=BUF[4]<<8|BUF[5];//CombineMSBandLSBofYDataoutputregisterangle=atan2((double)y,(double)x)*(180/3.14159265)+180;//angleindegrees//顯示方位 if((angle<22.5)||(angle>337.5)) //South { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); Clear_char(); }if((angle>22.5)&&(angle<67.5)) //South-west { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'W'); DisplayOneChar(9,0,'e'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>67.5)&&(angle<112.5)) //West { DisplayOneChar(2,0,'W'); DisplayOneChar(3,0,'e'); DisplayOneChar(4,0,'s'); DisplayOneChar(5,0,'t'); Clear_char(); }if((angle>112.5)&&(angle<157.5)) //North-West { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'W'); DisplayOneChar(9,0,'e'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>157.5)&&(angle<202.5)) //North { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); Clear_char(); }if((angle>202.5)&&(angle<247.5)) //North-East { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'E'); DisplayOneChar(9,0,'a'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>247.5)&&(angle<292.5)) //East { DisplayOneChar(2,0,'E'); DisplayOneChar(3,0,'a'); DisplayOneChar(4,0,'s'); DisplayOneChar(5,0,'t'); Clear_char(); }if((angle>292.5)&&(angle<337.5)) //South-East { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'E'); DisplayOneChar(9,0,'a'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); } angle*=10;//計(jì)算數(shù)據(jù)和顯示 conversion(angle); DisplayOneChar(2,1,'A'); DisplayOneChar(3,1,'n'); DisplayOneChar(4,1,'g'); DisplayOneChar(5,1,'l'); DisplayOneChar(6,1,'e');DisplayOneChar(7,1,':');DisplayOneChar(8,1,qian);DisplayOneChar(9,1,bai);DisplayOneChar(10,1,shi);DisplayOneChar(11,1,'.'); DisplayOneChar(12,1,ge);//延時(shí)for(i=0;i<50000;i++) for(j=0;j<10;j++);}}6實(shí)物演示圖6.1實(shí)物顯示度數(shù)56°指南針以正北方向?yàn)闇?zhǔn),當(dāng)顯示為0°時(shí)即為正北方。如圖6.1所示顯示為56°,東北方向。即是北偏東56°。圖6.2實(shí)物顯示度數(shù)3°如圖6.2所示顯示為3°北方。即是正北方向。但實(shí)際方向是北偏東3°,在實(shí)際使用中3°的偏差不會(huì)影響的使用。圖6.3實(shí)物顯示度數(shù)210°如圖6

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論