電子指南針的設(shè)計(jì)與制作_第1頁(yè)
電子指南針的設(shè)計(jì)與制作_第2頁(yè)
電子指南針的設(shè)計(jì)與制作_第3頁(yè)
電子指南針的設(shè)計(jì)與制作_第4頁(yè)
電子指南針的設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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)介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1項(xiàng)目簡(jiǎn)介.......................................................................................................................1

2電子指南針導(dǎo)航原理...................................................................................................2

2.1電子指南針原理................................................................................................2

2.2誤差校正方法....................................................................................................2

3電子指南針的結(jié)構(gòu).......................................................................................................4

3.1傳感器方案選擇................................................................................................4

3.2單片機(jī)方案選擇................................................................................................4

3.3總體方案框圖....................................................................................................6

4硬件電路設(shè)計(jì)...............................................................................................................7

4.1HMC5889l傳感器模塊.....................................................................................7

4.2LCD1602液晶屏模塊.......................................................................................9

5軟件設(shè)計(jì).....................................................................................................................13

5.1HMC5883L與單片機(jī)通信軟件設(shè)計(jì)..............................................................13

5.2LCD1602人機(jī)界面軟件設(shè)計(jì).........................................................................14

5.3系統(tǒng)總軟件設(shè)計(jì)..............................................................................................14

6系統(tǒng)調(diào)試.....................................................................................................................15

7設(shè)計(jì)小結(jié).....................................................................................................................16

附錄1元件清單............................................................................................................17

附錄2實(shí)物圖................................................................................................................17

附錄3原理圖................................................................................................................18

附錄4PCB圖.................................................................................................................19

附錄5程序代碼............................................................................................................20

參考資料.........................................................................................................................30

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

電子指南針的設(shè)計(jì)與制作

1項(xiàng)目簡(jiǎn)介

指南針,古代叫司南,主要組成部分是一根裝在軸上的磁針,磁針在天然

地磁場(chǎng)的作用下可以自由轉(zhuǎn)動(dòng)并保持在磁子午線的切線方向上,磁針的北極指

向地理的南極,利用這一性能可以辨別方向。

常用于航海、大地測(cè)量、旅行及軍事等方面。物理上指示方向的指南針的

發(fā)明有三類部件,分別是司南、羅盤(pán)和磁針,均屬于中國(guó)的發(fā)明。據(jù)《古礦錄》

記載最早出現(xiàn)于戰(zhàn)國(guó)時(shí)期的磁山一帶。

指南針是中國(guó)古代勞動(dòng)人民在長(zhǎng)期的實(shí)踐中對(duì)磁石磁性認(rèn)識(shí)的結(jié)果。作為

中國(guó)古代四大發(fā)明之一,它的發(fā)明對(duì)人類的科學(xué)技術(shù)和文明的發(fā)展,起了無(wú)可

估量的作用。在中國(guó)古代,指南針起先應(yīng)用于祭祀、禮儀、軍事和占卜與看風(fēng)

水時(shí)確定方位。

隨著人們對(duì)指南針原理認(rèn)識(shí)的不斷深入,指南針也由先前笨重的“司南”

發(fā)展到現(xiàn)在的便攜式的指南針。但其基本構(gòu)造是沒(méi)有改變的,都是屬于機(jī)械的

指針式,其指示的機(jī)械結(jié)構(gòu)基本上沒(méi)有改變,都是利用某種支撐使得磁針能夠

受到地磁場(chǎng)的影響而自由的旋轉(zhuǎn)。由于機(jī)械的先天因素導(dǎo)致了指針式指南針在

便攜性、靈敏度、精度以及使用壽命上都有一定的限制。由于國(guó)內(nèi)外電子技術(shù)

的飛速發(fā)展,特別是在磁傳感器和專用芯片上的發(fā)展使能指南針的基本實(shí)現(xiàn)機(jī)

理有了質(zhì)的改變,不再是機(jī)械結(jié)構(gòu)而采用了磁場(chǎng)傳感器和專用處理器對(duì)磁場(chǎng)進(jìn)

行測(cè)量和處理后指示方向,這就是當(dāng)前應(yīng)用較為廣泛的電子式指南針。

電子指南針內(nèi)部結(jié)構(gòu)固定,沒(méi)有移動(dòng)部分,可以簡(jiǎn)單地和其它電子系統(tǒng)接

口,因此可代替舊的磁指南針。并以精度高、穩(wěn)定性好等特點(diǎn)得到了廣泛運(yùn)用。

本設(shè)計(jì)采用各向異性磁阻(AMR)傳感器芯片HMC5883L?;裟犴f爾HMC5883L是一

種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,HMC5883L包括

最先進(jìn)的高分辨率HMC118X系列磁阻傳感器,并附帶霍尼韋爾專利的集成電路

包括放大器、自動(dòng)消磁驅(qū)動(dòng)器、偏差校準(zhǔn)、能使指南針精度控制在1°~2°的12

位模數(shù)轉(zhuǎn)換器。簡(jiǎn)易的I2C系列總線接口。HMC5883L采用霍各向異性磁阻(AMR)

技術(shù),該技術(shù)領(lǐng)先于這些各向異性傳感器具有在軸向高靈敏度和線性高精度的

特點(diǎn)。傳感器具有的對(duì)正交軸的低靈敏度的固相結(jié)構(gòu)能用于測(cè)量地球磁場(chǎng)的方

向和大小,其測(cè)量范圍從負(fù)8高斯到8高斯(gauss)。

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

2電子指南針導(dǎo)航原理

2.1電子指南針原理

下圖是地球某一點(diǎn)的地球磁場(chǎng)向量He的三維圖,其中x軸和y軸與地球表

面平行,x為前進(jìn)方向,y為水平面上垂直x的方向,He為地磁場(chǎng)強(qiáng)度,Hex、Hey

分別為He在x、y方向的水平分量,α為前進(jìn)方向與磁場(chǎng)北極的夾角,稱做方

位角;λ為磁偏角,可以通過(guò)查表得知。x軸與南極的實(shí)際夾角大小為(α+

λ)。從而只要得到方位角α的大小即可得知該水平面方位。由圖可知tanα=He

y/Hex,所以只要求出y、x軸上的磁場(chǎng)強(qiáng)度之比Hey/Hex,即可得到方位角α的

正切值。δ為磁傾角,He與水下面的夾角,可以用來(lái)校正水平面。磁場(chǎng)傳感器

可以分別測(cè)量Hex、Hey、Hez,并將其大小轉(zhuǎn)化為相應(yīng)強(qiáng)弱的電信號(hào)。但本系統(tǒng)

并只做了X和Y方向的測(cè)量。由于考慮到時(shí)間安排有限,Z方向暫時(shí)不做,但本

系統(tǒng)設(shè)計(jì)只要平拿平放并不影響測(cè)量結(jié)果的準(zhǔn)確性。

圖2.1傳感器模塊連線圖

2.2誤差校正方法

如圖2所示,x和y是指南針傳感器的兩個(gè)軸,Z軸和指南針傳感軸所確定

的平面相垂直。為了簡(jiǎn)化描述,固定指南針的兩個(gè)傳感軸所確定的xy平面和

地球的表面相平行。進(jìn)一步簡(jiǎn)化,在沒(méi)有傾角r的時(shí)候,y軸和南北方向重合

,x軸和東西方向重合。在沒(méi)有傾角T的情況下,磁場(chǎng)He的水平平面上

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

只有y方向的分量,而且正確地指向北方。沿著南北軸的傾角(如以東西方

向?yàn)樾D(zhuǎn)軸旋轉(zhuǎn)時(shí)),磁場(chǎng)He的水平平面的分量將隨著磁場(chǎng)改變,但是仍

然指向北方。這時(shí)候傾斜誤差就為零。如果傾斜是沿著東西方向(如以南北

方向?yàn)樾D(zhuǎn)軸旋轉(zhuǎn)時(shí)),He的水平平面的分量會(huì)偏轉(zhuǎn)e角度。至于介于

南北和東西方向的傾角,誤差取決于傾角的東西方向的分量。

圖2.2傾斜誤差產(chǎn)生

其中T是傾角東西方向的分量,占是地球平面的傾角。方程表明地球平

面的傾角和指南針的傾角共同影響著傾斜誤差。當(dāng)傾角為90度的時(shí)候

,傾斜誤差最大。當(dāng)?shù)厍蚱矫娴膬A角較小的地方,傾斜誤差影響比較小,

可在or度以內(nèi)。但是在地球平面的傾角較大的地方,隨著指南針傾角角

度的增加,傾斜誤差會(huì)變得很大。

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3電子指南針的結(jié)構(gòu)

3.1傳感器方案選擇

HMC1052是一個(gè)雙軸線性磁傳感器,和其它HMC10XX系列傳感器一樣,每個(gè)

傳感器都有一個(gè)由磁阻薄膜合金組成的惠斯通橋。當(dāng)橋路加上供電電壓,傳感

器將磁場(chǎng)強(qiáng)度轉(zhuǎn)化為電壓輸出,包括環(huán)境磁場(chǎng)和測(cè)量磁場(chǎng)。HMC1052包含兩個(gè)敏

感元件,它們的敏感軸互相垂直。敏感元件A和B,共存于單硅芯片中,完全正

交,且參數(shù)匹配。HMC1052的尺寸小,低工作電壓,而且消除了兩個(gè)敏感元件引

起的非正誤差。除了惠斯通電橋,HMC1052有兩個(gè)位于芯片上的磁耦合帶,偏置

帶和置位/復(fù)位帶。敏感元件A和B,都有這兩個(gè)帶。置位/復(fù)位帶,用于確保精

度。偏置帶,用于校正傳感器,或偏置任何不想要的磁場(chǎng)。在標(biāo)準(zhǔn)的10針外形

(MSOP)中,兩個(gè)敏感元件可以獨(dú)立上電,用于減少功耗。然而,卻不能使用偏置

帶。若需要偏置帶,可以用另一種封裝的HMC1052。

圖3.1傳感器模塊連線圖

3.2單片機(jī)方案選擇

STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)

的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼

容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路

高速10位A/D轉(zhuǎn)換(250K/S),針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合。

1.增強(qiáng)型8051CPU,1T,單時(shí)鐘/機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051;

2.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機(jī))STC12LE

5A60S2系列工作電壓:3.6V-2.2V(3V單片機(jī));

3.工作頻率范圍:0-35MHz,相當(dāng)于普通8051的0~420MHz;

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.用戶應(yīng)用程序空間8K/16K/20K/32K/40K/48K/52K/60K/62K

字節(jié);

5.片上集成1280字節(jié)RAM;

6.通用I/O口(36/40/44個(gè)),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051

傳統(tǒng)I/O口),可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,僅為輸

入/高阻,開(kāi)漏,每個(gè)I/O口驅(qū)動(dòng)能力均可達(dá)到20mA,但整個(gè)芯片最大不要超過(guò)

55Ma;

7.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無(wú)需專用編程器,無(wú)需專

用仿真器,可通過(guò)串口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片;

8.有EEPROM功能(STC12C5A62S2/AD/PWM無(wú)內(nèi)部EEPROM);

9.看門(mén)狗;

10.內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時(shí),復(fù)位腳可直接1K

電阻到地);

11.外部掉電檢測(cè)電路:在P4.6口有一個(gè)低壓門(mén)檻比較器,5V單片機(jī)為1.3

2V,誤差為+/-5%,3.3V單片機(jī)為1.30V,誤差為+/-3%;

12.時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%

以內(nèi))1用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/

時(shí)鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz~15.5MHz,3.3V

單片機(jī)為:8MHz~12MHz,精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄?/p>

造誤差和溫漂,以實(shí)際測(cè)試為準(zhǔn);

13.共4個(gè)16位定時(shí)器兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定

時(shí)器T0和T1,沒(méi)有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率

發(fā)生器再加上2路PCA模塊可再實(shí)現(xiàn)2個(gè)16位定時(shí)器;

14.2個(gè)時(shí)鐘輸出口,可由T0的溢出在P3.4/T0輸出時(shí)鐘,可由T1的溢出

在P3.5/T1輸出時(shí)鐘;

15.外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支

持上升沿中斷的PCA模塊,PowerDown模式可由外部中斷喚醒,INT0/P3.2,INT

1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通過(guò)寄存器設(shè)置到P4.2)

,CCP1/P1.4(也可通過(guò)寄存器設(shè)置到P4.3);

16.PWM(2路)/PCA(可編程計(jì)數(shù)器陣列,2路):

——也可用來(lái)當(dāng)2路D/A使用

——也可用來(lái)再實(shí)現(xiàn)2個(gè)定時(shí)器

——也可用來(lái)再實(shí)現(xiàn)2個(gè)外部中斷(上升沿中斷/下降沿中斷均可分別或同

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

時(shí)支持);

17.A/D轉(zhuǎn)換,10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘25萬(wàn)

次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用

定時(shí)器或PCA軟件實(shí)現(xiàn)多串口;

19.STC12C5A60S2系列有雙串口,后綴有S2標(biāo)志的才有雙串口,RxD2/P1.2

(可通過(guò)寄存器設(shè)置到P4.2),TxD2/P1.3(可通過(guò)寄存器設(shè)置到P4.3);

20.工作溫度范圍:-40-+85℃(工業(yè)級(jí))/0-75℃(商業(yè)級(jí))21.封裝:PDIP-

40,LQFP-44,LQFP-48I/O口不夠時(shí),可用2到3根普通I/O口線外接74HC164/

165/595(均可級(jí)聯(lián))來(lái)擴(kuò)展I/O口,還可用A/D做按鍵掃描來(lái)節(jié)省I/O口,或

用雙CPU,三線通信,還多了串口。

3.3總體方案框圖

測(cè)量分析思路所得傳感器信號(hào),經(jīng)過(guò)單片機(jī)數(shù)據(jù)預(yù)處理和算法補(bǔ)償后在上

傳到LCD1602A液晶屏上顯示。結(jié)合以上傳感器方案選擇及設(shè)計(jì)思路可得出以下

總體方案框圖。

圖3.2傳感器模塊連線圖

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4硬件電路設(shè)計(jì)

4.1HMC5889l傳感器模塊

4.1.1工作原理

霍尼韋爾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)軸(如引腳圖上的箭頭所示),隨著磁場(chǎng)在感應(yīng)方向上不斷增強(qiáng),電壓也會(huì)正

向增長(zhǎng)。因?yàn)檩敵鲋慌c沿軸方向上的磁阻元件成比例,其他磁阻電橋也放置在

正交方向上,就能精密測(cè)量其他方向的磁場(chǎng)強(qiáng)度。

4.1.2電源管理

該器件可有兩種不同的供電模式。第一個(gè)是內(nèi)部運(yùn)作的VDD供電電源,第

二個(gè)是為IO接口供電的VDDIO電源,當(dāng)然VDDIO的電壓可以與VDD電源相近;

單電源模式,或在VDDIO電壓低于VDD的情況下,HMC5883L都能正常運(yùn)作并能

與其他裝置兼容。

圖4.1傳感器模塊連線圖

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.1.3I2C接口

控制該裝置可以通過(guò)I2C總線來(lái)實(shí)現(xiàn)。該裝置將作為從機(jī)在一個(gè)主機(jī)(例如:

處理器)的控制下連接總線。該裝置必須符合I2C-BusSpecification(I2C-總

線技術(shù)規(guī)格標(biāo)準(zhǔn)),作為一個(gè)I2C兼容裝置,該裝置包含一個(gè)7-bit串行地址,

并支持I2C協(xié)議。這一裝置可以支持標(biāo)準(zhǔn)和快速模式,分別為100kHz和

400kHz,但不支持高速模式(Hs)。還需要外接電阻才能支持這些標(biāo)準(zhǔn)和快速模

式。要求主機(jī)的活動(dòng)(寄存器的讀取和寫(xiě)入)優(yōu)先于內(nèi)部活動(dòng),例如:測(cè)量。

這一優(yōu)先次序的安排是為了不讓主機(jī)等待,同時(shí)I2C總線占用的時(shí)間比必需的

時(shí)間長(zhǎng)。

4.1.4置位/復(fù)位帶驅(qū)動(dòng)的H-橋式電路

ASIC包含大型開(kāi)關(guān)FETs,可以傳輸大而短的脈沖到傳感器的置位/復(fù)位帶。

這一置位/復(fù)位帶在很大程度上是一種電阻性負(fù)載。并不需要外部去增加外部置

位/復(fù)位回路。每次測(cè)量時(shí),ASIC會(huì)自動(dòng)完成置位/復(fù)位。首先一次置位脈沖產(chǎn)

生后進(jìn)行測(cè)量,然后,一次復(fù)位脈沖產(chǎn)生后進(jìn)行測(cè)量,兩次測(cè)量的差值的一半將

會(huì)被放置在三軸上每根軸的數(shù)據(jù)輸出寄存器上。這樣,在所有測(cè)量中傳感器的

內(nèi)部偏差和溫度漂移差值就可以被移除/抵消了。

4.1.5寄存器訪問(wèn)

下面表格列出了寄存器及其訪問(wèn)。所有地址為8bits。

表4.1寄存器列表

地址名稱訪問(wèn)

00配置寄存器A讀/寫(xiě)

01配置寄存器B讀/寫(xiě)

02模式寄存器讀/寫(xiě)

03數(shù)據(jù)輸出XMSB寄存器讀

04數(shù)據(jù)輸出XLSB寄存器讀

05數(shù)據(jù)輸出ZMSB寄存器讀

06數(shù)據(jù)輸出ZLSB寄存器讀

07數(shù)據(jù)輸出YMSB寄存器讀

08數(shù)據(jù)輸出YLSB寄存器讀

09狀態(tài)寄存器讀

10識(shí)別寄存器A讀

11識(shí)別寄存器B讀

12識(shí)別寄存器C讀

這里介紹讀取和寫(xiě)入此裝置的過(guò)程。該裝置使用地址指針來(lái)顯示該寄存器

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

地點(diǎn)是被讀取或?qū)懭?。這些指針位置從主機(jī)發(fā)出到從機(jī)并成功獲得的7位地址

加1位讀/寫(xiě)標(biāo)識(shí)符。為了盡量減少主機(jī)和裝置之間的通信,無(wú)主機(jī)干預(yù)下地址

指針自動(dòng)更新。寄存器指示器被讀取后將自動(dòng)的在目前被成功讀取的寄存器的

地址上加1。地址指針本身不能通過(guò)I2C總線被讀取。任何試圖去讀取不存在的

地址返回為0s,任何去寫(xiě)不存在的地址或者是未定義的bit寫(xiě)入定義的地址都

將會(huì)被該裝置予以忽略。為將地址指針移到隨機(jī)存儲(chǔ)器位置,首先發(fā)出一個(gè)“寫(xiě)”

到寄存器地址,在指令后不帶數(shù)據(jù)位。例如,要讓地址指針指向寄存器10,發(fā)

出的指令為0x3C0x0A。其與單片機(jī)的連線圖如下圖所示。

圖4.2傳感器模塊連線圖

4.2LCD1602液晶屏模塊

1602液晶也叫1602字符型液晶它是一種專門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等

的點(diǎn)陣型液晶模塊它有若干個(gè)5×7或者5×11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字

符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔每行之間也有間隔起到

了字符間距和行間距的作用,正因?yàn)槿绱怂运荒茱@示圖形。1602LCD是指顯

示的內(nèi)容為16×2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)

字)。其引腳圖和引腳說(shuō)明如下:

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖4.3傳感器模塊連線圖

第1腳:VSS為電源地。

第2腳:VDD接5V電源正極。

第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電

源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的

電位器調(diào)整對(duì)比度)。

第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇

指令寄存器。

第5腳:RW為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)

操作。

第6腳:E(或EN)端為使能(enable)端。

第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。

第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。

LCD1602內(nèi)置了DDRAM(顯示數(shù)據(jù)存儲(chǔ)RAM)、CGROM(字符存儲(chǔ)ROM)和CGR

AM(用戶自定義RAM)。DDRAM就是顯示數(shù)據(jù)RAM,用來(lái)寄存待顯示的字符代碼。

共80個(gè)字節(jié),其地址和屏幕的對(duì)應(yīng)關(guān)系如下表:

圖4.4傳感器模塊連線圖

1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

陣字符圖形,如附錄C所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、

常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,也就是說(shuō)想要

在LCD1602屏幕的第一行第一列顯示一個(gè)“A”字,就要向DDRAM的00H地址寫(xiě)

入“A”的代碼就行了,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),

顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。

其基本操作時(shí)序:

讀狀態(tài)輸入:RS=L,RW=H,E=H輸出:DB0~DB7=狀態(tài)字

寫(xiě)指令輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼輸出:無(wú)

讀數(shù)據(jù)輸入:RS=H,RW=H,E=H輸出:DB0~DB7=數(shù)據(jù)

寫(xiě)數(shù)據(jù)輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)輸出:無(wú)

圖4.4讀操作時(shí)序

圖4.5

寫(xiě)操作時(shí)序

數(shù)據(jù)指針設(shè)置:

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

表4.2數(shù)據(jù)指針設(shè)置表

指令碼功能

80H+地址碼(0-27H,40H-67H)設(shè)置數(shù)據(jù)地址指針

在1602中我們就用前16個(gè)就行了,第二行也一樣用前16個(gè)地址。我們往D

DRAM里的00H地址處送一個(gè)數(shù)據(jù),譬如0x31(數(shù)字1的代碼)并不能顯示1出來(lái)。

這是令初學(xué)者很容易出錯(cuò)的地方,原因就是如果你要想在DDRAM的00H地址處

顯示數(shù)據(jù),則必須將00H加上80H,即0x80+0x00,若要在DDRAM的01H處顯示

數(shù)據(jù),則必須將01H加上80H即0x80+0x01,依次類推。

在此,LCD1602用法及注意事項(xiàng)就簡(jiǎn)單的介紹到這里,1062從CGROM表上

可以看到,表里面實(shí)際還有8個(gè)字節(jié)可用。如果我們要想顯示這8個(gè)用戶自定

義的字符,操作方法和顯示CGROM的一樣,先設(shè)置DDRAM位置,再向DDRAM寫(xiě)

入字符碼,顯示是直接取CGRAM的數(shù)據(jù)。這里沒(méi)用用到在此不在贅述起原理方

法。下面是1602與單片機(jī)的連線圖。

圖4.6寫(xiě)操作時(shí)序

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

5軟件設(shè)計(jì)

5.1HMC5883L與單片機(jī)通信軟件設(shè)計(jì)

HMC5883L是一款集成IIC總線借口的數(shù)字傳感器,而STC12單片機(jī)沒(méi)有II

C接口,所以采用在單片機(jī)上模擬IIC通訊時(shí)序與HMC5883L進(jìn)行通信,而HMC5883

L可以采用單字節(jié)讀取和多字節(jié)讀取方式,在本設(shè)計(jì)中采用的是多字節(jié)讀取方式,

一次將XYZ的值讀到單片機(jī)內(nèi),具體通信軟件設(shè)計(jì)思路如下:

圖5.1傳感器模塊連線圖

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

5.2LCD1602人機(jī)界面軟件設(shè)計(jì)

本設(shè)計(jì)采用LCD1602作為顯示設(shè)備,顯示的信息包括當(dāng)前方位信息與與地

理南極的夾角信息(角度制)。我們從HMC5883L得出地磁方向在X與Y軸上的

磁場(chǎng)強(qiáng)度分量,采用atan2()這個(gè)函數(shù)得出其與地理北極之間的夾角(弧度),

再通過(guò)弧度到角度的轉(zhuǎn)換,得到角度值,最后加上180°,使其變?yōu)榕c南極之間

的夾角,而且所有值變?yōu)檎龜?shù),方便處理。得到度數(shù)后,根據(jù)我們預(yù)先設(shè)定好

的角度范圍,判斷當(dāng)前所在哪個(gè)方位,并在LCD1602上顯示,然后將其乘以10

倍,變?yōu)檎麛?shù),通過(guò)轉(zhuǎn)換,在LCD1602上顯示與南極夾角的值,具體設(shè)計(jì)思路

如下:

圖5.2傳感器模塊連線圖

5.3系統(tǒng)總軟件設(shè)計(jì)

本設(shè)計(jì)的軟件設(shè)計(jì)總體思路是將HMC5883L得到的信息送至單片機(jī)內(nèi)進(jìn)行

處理,再轉(zhuǎn)換為液晶顯示數(shù)據(jù)在LCD1602上進(jìn)行顯示,得到當(dāng)前的方位信息與

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

角度信息,由于硬件模塊較少,所以很大部分工作放在了軟件上,STC12單片機(jī)

是一款1T單片機(jī),晶振為22.1184MHZ,處理速度較快,在延時(shí)上不好把握,用

定時(shí)器又太浪費(fèi)資源,而本設(shè)計(jì)在一些模塊時(shí)序上對(duì)延時(shí)有一定要求,所以本

設(shè)計(jì)借用了別人驗(yàn)證好的一套運(yùn)用在STC12單片機(jī)上的延時(shí)函數(shù)集,確保系統(tǒng)

的正常運(yùn)行。思路上采用每讀完一次數(shù)據(jù),就立即送至液晶顯示的實(shí)時(shí)方式。

具體流程圖如下:

圖5.3傳感器模塊連線圖

6系統(tǒng)調(diào)試

STC12LE系列低功耗單片機(jī)的正常電壓為3.3V,但LCD1602液晶的對(duì)比度

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

電壓要高于5V才能看出顯示效果,最初采用3.3V供給整個(gè)系統(tǒng)的時(shí)候,發(fā)現(xiàn)

液晶上無(wú)顯示,后來(lái)將系統(tǒng)電源調(diào)至5V,LCD1602就可以正常顯示了,而經(jīng)測(cè)

試,STC12LE單片機(jī)是可以在5V條件下進(jìn)行工作的。在方向的確定上,我們結(jié)

合手機(jī)上自帶的電子羅盤(pán)對(duì)設(shè)計(jì)進(jìn)行調(diào)試,校準(zhǔn)HMC5883L模塊的方向,最后用

膠固定到PCB板上。

7設(shè)計(jì)小結(jié)

該電子指南針設(shè)計(jì)模塊簡(jiǎn)單,可集成性好,測(cè)量偏差0.1°,可以用于航海、

山地探索的方向判定,而采用低功耗單片機(jī)增強(qiáng)了該設(shè)備的續(xù)航能力。但LCD160

2液晶為單色字符液晶,顯示能力有限,如果采用更高級(jí)的嵌入式處理器,擁有

足夠的速度和存儲(chǔ)器,可以采用TFT液晶等較好的顯示設(shè)備,將人機(jī)界面做得

更加完善。本設(shè)計(jì)中HMC5883L傳感器只用到了X與Y的值,即只能在系統(tǒng)水被

平放置時(shí)才能較為精確地測(cè)量,非常不方便,如果能結(jié)合加速度傳感器與HMC588

3L中Z軸的值做三維方向的判定,就可以讓系統(tǒng)在任意姿態(tài)下判斷當(dāng)前的位置

信息。

在設(shè)計(jì)中,模擬IIC通訊是非常重要的軟件設(shè)計(jì)環(huán)節(jié),軟件的優(yōu)化可以為

通信節(jié)省更多的資源和時(shí)間,我們采用了51單片機(jī)狀態(tài)寄存器的CY位作為通

信數(shù)據(jù)位進(jìn)行數(shù)據(jù)交換,免去重新在RAM里定義數(shù)據(jù)變量,做到了一個(gè)資源優(yōu)

化。在液晶顯示中,上一次顯示的數(shù)據(jù)如果不能被下次顯示的數(shù)據(jù)覆蓋掉,就

要及時(shí)清除,而如果采用命令清屏,就會(huì)使屏幕閃爍很厲害,所以我們才用用

空格字符覆蓋的方式,及時(shí)清除上一次顯示的內(nèi)容,方便下次數(shù)據(jù)的顯示。在

以后的實(shí)踐中,應(yīng)當(dāng)注意這些軟件設(shè)計(jì)上的問(wèn)題,讓系統(tǒng)運(yùn)行更加穩(wěn)定流暢。

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄1:元件清單

附錄2:實(shí)物圖

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄3原理圖

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄4PCB圖

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

附錄5:程序代碼

#include<reg52.h>//調(diào)用單片機(jī)頭文件

#defineucharunsignedchar//無(wú)符號(hào)字符型宏定義變量范圍0~255

#defineuintunsignedint//無(wú)符號(hào)整型宏定義變量范圍0~65535

#include<math.h>//Keillibrary

#include<stdio.h>//Keillibrary

#include<INTRINS.H>

sbitrs=P1^0;//寄存器選擇信號(hào)H:數(shù)據(jù)寄存器L:指令寄存器

sbitrw=P1^1;//寄存器選擇信號(hào)H:數(shù)據(jù)寄存器L:指令寄存器

sbite=P1^2;//片選信號(hào)下降沿觸發(fā)

sbitSCL=P2^1;//IIC時(shí)鐘引腳定義

sbitSDA=P2^0;//IIC數(shù)據(jù)引腳定義

#defineSlaveAddress0x3C//定義器件在IIC總線中的從地

ucharBUF[8];//接收數(shù)據(jù)緩存區(qū)

ucharge,shi,bai,qian,wan;//顯示變量

intdis_data;//變量

/******************1ms延時(shí)函數(shù)*******************/

voiddelay_1ms(uintq)

{

uinti,j;

for(i=0;i<q;i++)

for(j=0;j<120;j++);

}

20

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

/***********************延時(shí)函數(shù)************************/

voiddelay_uint(uintq)

{

while(q--);

}

/**************************************

延時(shí)5微秒(STC90C52RC@12M)

不同的工作環(huán)境,需要調(diào)整此函數(shù),注意時(shí)鐘過(guò)快時(shí)需要修改

當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)

**************************************/

voidDelay5us()

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

}

/***********************lcd1602寫(xiě)命令函數(shù)************************/

voidwrite_com(ucharcom)

{

e=0;

rs=0;

rw=0;

P0=com;

delay_uint(3);

e=1;

21

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

delay_uint(25);

e=0;

}

/***********************lcd1602寫(xiě)數(shù)據(jù)函數(shù)************************/

voidwrite_data(uchardat)

{

e=0;

rs=1;

rw=0;

P0=dat;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

/***********************lcd1602上顯示特定的字符*********************

***/

voidwrite_zifu(ucharhang,ucharadd,uchardate)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(date);

}

/***********************lcd1602上顯示這字符函數(shù)*********************

***/

voidwrite_string(ucharhang,ucharadd,uchar*p)

{

if(hang==1)

22

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

while(1)

{

if(*p=='\0')break;

write_data(*p);

p++;

}

}

/***********************lcd1602初始化設(shè)置************************/

voidinit_1602()//lcd1602初始化設(shè)置

{

write_com(0x38);//

write_com(0x0c);

write_com(0x06);

write_string(1,0,"zhinanzhen");

write_string(2,0,"");

write_zifu(2,11,0xdf);//顯示度

}

/***********************lcd1602上顯示兩位十進(jìn)制數(shù)*******************

*****/

voidwrite_jiaodu(ucharhang,ucharadd,uintdate)

{

if(hang==1)

write_com(0x80+add);

else

write_com(0x80+0x40+add);

write_data(0x30+date/1000%10);

write_data(0x30+date/100%10);

23

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

write_data(0x30+date/10%10);

write_data('.');

write_data(0x30+date%10);

}

/**************************************

起始信號(hào)

**************************************/

voidHMC5883_Start()

{

SDA=1;//拉高數(shù)據(jù)線

Delay5us();//延時(shí)

SDA=0;//產(chǎn)生下降沿

Delay5us();//延時(shí)

SCL=0;//拉低時(shí)鐘線

}

/**************************************

停止信號(hào)

**************************************/

voidHMC5883_Stop()

{

SDA=0;//拉低數(shù)據(jù)線

SCL=1;//拉高時(shí)鐘線

Delay5us();//延時(shí)

SDA=1;//產(chǎn)生上升沿

Delay5us();//延時(shí)

}

/**************************************

發(fā)送應(yīng)答信號(hào)

入口參數(shù):ack(0:ACK1:NAK)

**************************************/

24

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

voidHMC5883_SendACK(bitack)

{

SDA=ack;//寫(xiě)應(yīng)答信號(hào)

SCL=1;//拉高時(shí)鐘線

Delay5us();//延時(shí)

SCL=0;//拉低時(shí)鐘線

Delay5us();//延時(shí)

}

/**************************************

接收應(yīng)答信號(hào)

**************************************/

bitHMC5883_RecvACK()

{

SCL=1;//拉高時(shí)鐘線

Delay5us();//延時(shí)

CY=SDA;//讀應(yīng)答信號(hào)

SCL=0;//拉低時(shí)鐘線

Delay5us();//延時(shí)

returnCY;

}

/**************************************

向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)

**************************************/

voidHMC5883_SendByte(uchardat)

{

uchari;

for(i=0;i<8;i++)//8位計(jì)數(shù)器

{

dat<<=1;//移出數(shù)據(jù)的最高位

25

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

CY=SDA;//送數(shù)據(jù)口

SCL=0;//拉高時(shí)鐘線

Delay5us();//延時(shí)

SCL=1;//拉低時(shí)鐘線

Delay5us();//延時(shí)

}

HMC5883_RecvACK();

}

/**************************************

從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)

**************************************/

ucharHMC5883_RecvByte()

{

uchari;

uchardat=0;

SDA=1;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),

for(i=0;i<8;i++)//8位計(jì)數(shù)器

{

dat<<=1;

SCL=1;//拉高時(shí)鐘線

Delay5us();//延時(shí)

dat|=SDA;//讀數(shù)據(jù)

SCL=0;//拉低時(shí)鐘線

Delay5us();//延時(shí)

}

returndat;

}

//***************************************************

voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data)

26

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

{

HMC5883_SendByte(SlaveAddress);//發(fā)送設(shè)備地址+寫(xiě)信號(hào)

HMC5883_SendByte(REG_Address);//內(nèi)部寄存器地址

HMC5883_SendByte(REG_data);//內(nèi)部寄存器數(shù)據(jù)

}

//******************************************************

//

//連續(xù)讀出HMC5883內(nèi)部角度數(shù)據(jù),地址范圍0x3

溫馨提示

  • 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)論