




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
湖南商務職業技術學院畢業設計
目錄
1項目簡介.......................................................................................................................1
2電子指南針導航原理...................................................................................................2
2.1電子指南針原理................................................................................................2
2.2誤差校正方法....................................................................................................2
3電子指南針的結構.......................................................................................................4
3.1傳感器方案選擇................................................................................................4
3.2單片機方案選擇................................................................................................4
3.3總體方案框圖....................................................................................................6
4硬件電路設計...............................................................................................................7
4.1HMC5889l傳感器模塊.....................................................................................7
4.2LCD1602液晶屏模塊.......................................................................................9
5軟件設計.....................................................................................................................13
5.1HMC5883L與單片機通信軟件設計..............................................................13
5.2LCD1602人機界面軟件設計.........................................................................14
5.3系統總軟件設計..............................................................................................14
6系統調試.....................................................................................................................15
7設計小結.....................................................................................................................16
附錄1元件清單............................................................................................................17
附錄2實物圖................................................................................................................17
附錄3原理圖................................................................................................................18
附錄4PCB圖.................................................................................................................19
附錄5程序代碼............................................................................................................20
參考資料.........................................................................................................................30
湖南商務職業技術學院畢業設計
電子指南針的設計與制作
1項目簡介
指南針,古代叫司南,主要組成部分是一根裝在軸上的磁針,磁針在天然
地磁場的作用下可以自由轉動并保持在磁子午線的切線方向上,磁針的北極指
向地理的南極,利用這一性能可以辨別方向。
常用于航海、大地測量、旅行及軍事等方面。物理上指示方向的指南針的
發明有三類部件,分別是司南、羅盤和磁針,均屬于中國的發明。據《古礦錄》
記載最早出現于戰國時期的磁山一帶。
指南針是中國古代勞動人民在長期的實踐中對磁石磁性認識的結果。作為
中國古代四大發明之一,它的發明對人類的科學技術和文明的發展,起了無可
估量的作用。在中國古代,指南針起先應用于祭祀、禮儀、軍事和占卜與看風
水時確定方位。
隨著人們對指南針原理認識的不斷深入,指南針也由先前笨重的“司南”
發展到現在的便攜式的指南針。但其基本構造是沒有改變的,都是屬于機械的
指針式,其指示的機械結構基本上沒有改變,都是利用某種支撐使得磁針能夠
受到地磁場的影響而自由的旋轉。由于機械的先天因素導致了指針式指南針在
便攜性、靈敏度、精度以及使用壽命上都有一定的限制。由于國內外電子技術
的飛速發展,特別是在磁傳感器和專用芯片上的發展使能指南針的基本實現機
理有了質的改變,不再是機械結構而采用了磁場傳感器和專用處理器對磁場進
行測量和處理后指示方向,這就是當前應用較為廣泛的電子式指南針。
電子指南針內部結構固定,沒有移動部分,可以簡單地和其它電子系統接
口,因此可代替舊的磁指南針。并以精度高、穩定性好等特點得到了廣泛運用。
本設計采用各向異性磁阻(AMR)傳感器芯片HMC5883L。霍尼韋爾HMC5883L是一
種表面貼裝的高集成模塊,并帶有數字接口的弱磁傳感器芯片,HMC5883L包括
最先進的高分辨率HMC118X系列磁阻傳感器,并附帶霍尼韋爾專利的集成電路
包括放大器、自動消磁驅動器、偏差校準、能使指南針精度控制在1°~2°的12
位模數轉換器。簡易的I2C系列總線接口。HMC5883L采用霍各向異性磁阻(AMR)
技術,該技術領先于這些各向異性傳感器具有在軸向高靈敏度和線性高精度的
特點。傳感器具有的對正交軸的低靈敏度的固相結構能用于測量地球磁場的方
向和大小,其測量范圍從負8高斯到8高斯(gauss)。
1
湖南商務職業技術學院畢業設計
2電子指南針導航原理
2.1電子指南針原理
下圖是地球某一點的地球磁場向量He的三維圖,其中x軸和y軸與地球表
面平行,x為前進方向,y為水平面上垂直x的方向,He為地磁場強度,Hex、Hey
分別為He在x、y方向的水平分量,α為前進方向與磁場北極的夾角,稱做方
位角;λ為磁偏角,可以通過查表得知。x軸與南極的實際夾角大小為(α+
λ)。從而只要得到方位角α的大小即可得知該水平面方位。由圖可知tanα=He
y/Hex,所以只要求出y、x軸上的磁場強度之比Hey/Hex,即可得到方位角α的
正切值。δ為磁傾角,He與水下面的夾角,可以用來校正水平面。磁場傳感器
可以分別測量Hex、Hey、Hez,并將其大小轉化為相應強弱的電信號。但本系統
并只做了X和Y方向的測量。由于考慮到時間安排有限,Z方向暫時不做,但本
系統設計只要平拿平放并不影響測量結果的準確性。
圖2.1傳感器模塊連線圖
2.2誤差校正方法
如圖2所示,x和y是指南針傳感器的兩個軸,Z軸和指南針傳感軸所確定
的平面相垂直。為了簡化描述,固定指南針的兩個傳感軸所確定的xy平面和
地球的表面相平行。進一步簡化,在沒有傾角r的時候,y軸和南北方向重合
,x軸和東西方向重合。在沒有傾角T的情況下,磁場He的水平平面上
2
湖南商務職業技術學院畢業設計
只有y方向的分量,而且正確地指向北方。沿著南北軸的傾角(如以東西方
向為旋轉軸旋轉時),磁場He的水平平面的分量將隨著磁場改變,但是仍
然指向北方。這時候傾斜誤差就為零。如果傾斜是沿著東西方向(如以南北
方向為旋轉軸旋轉時),He的水平平面的分量會偏轉e角度。至于介于
南北和東西方向的傾角,誤差取決于傾角的東西方向的分量。
圖2.2傾斜誤差產生
其中T是傾角東西方向的分量,占是地球平面的傾角。方程表明地球平
面的傾角和指南針的傾角共同影響著傾斜誤差。當傾角為90度的時候
,傾斜誤差最大。當地球平面的傾角較小的地方,傾斜誤差影響比較小,
可在or度以內。但是在地球平面的傾角較大的地方,隨著指南針傾角角
度的增加,傾斜誤差會變得很大。
3
湖南商務職業技術學院畢業設計
3電子指南針的結構
3.1傳感器方案選擇
HMC1052是一個雙軸線性磁傳感器,和其它HMC10XX系列傳感器一樣,每個
傳感器都有一個由磁阻薄膜合金組成的惠斯通橋。當橋路加上供電電壓,傳感
器將磁場強度轉化為電壓輸出,包括環境磁場和測量磁場。HMC1052包含兩個敏
感元件,它們的敏感軸互相垂直。敏感元件A和B,共存于單硅芯片中,完全正
交,且參數匹配。HMC1052的尺寸小,低工作電壓,而且消除了兩個敏感元件引
起的非正誤差。除了惠斯通電橋,HMC1052有兩個位于芯片上的磁耦合帶,偏置
帶和置位/復位帶。敏感元件A和B,都有這兩個帶。置位/復位帶,用于確保精
度。偏置帶,用于校正傳感器,或偏置任何不想要的磁場。在標準的10針外形
(MSOP)中,兩個敏感元件可以獨立上電,用于減少功耗。然而,卻不能使用偏置
帶。若需要偏置帶,可以用另一種封裝的HMC1052。
圖3.1傳感器模塊連線圖
3.2單片機方案選擇
STC12C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鐘/機器周期(1T)
的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼
容傳統8051,但速度快8-12倍。內部集成MAX810專用復位電路,2路PWM,8路
高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。
1.增強型8051CPU,1T,單時鐘/機器周期,指令代碼完全兼容傳統8051;
2.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機)STC12LE
5A60S2系列工作電壓:3.6V-2.2V(3V單片機);
3.工作頻率范圍:0-35MHz,相當于普通8051的0~420MHz;
4
湖南商務職業技術學院畢業設計
4.用戶應用程序空間8K/16K/20K/32K/40K/48K/52K/60K/62K
字節;
5.片上集成1280字節RAM;
6.通用I/O口(36/40/44個),復位后為:準雙向口/弱上拉(普通8051
傳統I/O口),可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸
入/高阻,開漏,每個I/O口驅動能力均可達到20mA,但整個芯片最大不要超過
55Ma;
7.ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專
用仿真器,可通過串口(P3.0/P3.1)直接下載用戶程序,數秒即可完成一片;
8.有EEPROM功能(STC12C5A62S2/AD/PWM無內部EEPROM);
9.看門狗;
10.內部集成MAX810專用復位電路(外部晶體12M以下時,復位腳可直接1K
電阻到地);
11.外部掉電檢測電路:在P4.6口有一個低壓門檻比較器,5V單片機為1.3
2V,誤差為+/-5%,3.3V單片機為1.30V,誤差為+/-3%;
12.時鐘源:外部高精度晶體/時鐘,內部R/C振蕩器(溫漂為+/-5%到+/-10%
以內)1用戶在下載用戶程序時,可選擇是使用內部R/C振蕩器還是外部晶體/
時鐘,常溫下內部R/C振蕩器頻率為:5.0V單片機為:11MHz~15.5MHz,3.3V
單片機為:8MHz~12MHz,精度要求不高時,可選擇使用內部時鐘,但因為有制
造誤差和溫漂,以實際測試為準;
13.共4個16位定時器兩個與傳統8051兼容的定時器/計數器,16位定
時器T0和T1,沒有定時器2,但有獨立波特率發生器做串行通訊的波特率
發生器再加上2路PCA模塊可再實現2個16位定時器;
14.2個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出
在P3.5/T1輸出時鐘;
15.外部中斷I/O口7路,傳統的下降沿中斷或低電平觸發中斷,并新增支
持上升沿中斷的PCA模塊,PowerDown模式可由外部中斷喚醒,INT0/P3.2,INT
1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通過寄存器設置到P4.2)
,CCP1/P1.4(也可通過寄存器設置到P4.3);
16.PWM(2路)/PCA(可編程計數器陣列,2路):
——也可用來當2路D/A使用
——也可用來再實現2個定時器
——也可用來再實現2個外部中斷(上升沿中斷/下降沿中斷均可分別或同
5
湖南商務職業技術學院畢業設計
時支持);
17.A/D轉換,10位精度ADC,共8路,轉換速度可達250K/S(每秒鐘25萬
次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用
定時器或PCA軟件實現多串口;
19.STC12C5A60S2系列有雙串口,后綴有S2標志的才有雙串口,RxD2/P1.2
(可通過寄存器設置到P4.2),TxD2/P1.3(可通過寄存器設置到P4.3);
20.工作溫度范圍:-40-+85℃(工業級)/0-75℃(商業級)21.封裝:PDIP-
40,LQFP-44,LQFP-48I/O口不夠時,可用2到3根普通I/O口線外接74HC164/
165/595(均可級聯)來擴展I/O口,還可用A/D做按鍵掃描來節省I/O口,或
用雙CPU,三線通信,還多了串口。
3.3總體方案框圖
測量分析思路所得傳感器信號,經過單片機數據預處理和算法補償后在上
傳到LCD1602A液晶屏上顯示。結合以上傳感器方案選擇及設計思路可得出以下
總體方案框圖。
圖3.2傳感器模塊連線圖
6
湖南商務職業技術學院畢業設計
4硬件電路設計
4.1HMC5889l傳感器模塊
4.1.1工作原理
霍尼韋爾HMC5883L磁阻傳感器電路是三軸傳感器并應用特殊輔助電路來
測量磁場。通過施加供電電源,傳感器可以將量測軸方向上的任何入射磁場轉
變成一種差分電壓輸出。磁阻傳感器是由一個鎳鐵(坡莫合金)薄膜放置在硅片
上,并構成一個帶式電阻元件。在磁場存在的情況下,橋式電阻元件的變化將
引起跨電橋輸出電壓的相應變化。這些磁阻元件兩兩對齊,形成一個共同的感
應軸(如引腳圖上的箭頭所示),隨著磁場在感應方向上不斷增強,電壓也會正
向增長。因為輸出只與沿軸方向上的磁阻元件成比例,其他磁阻電橋也放置在
正交方向上,就能精密測量其他方向的磁場強度。
4.1.2電源管理
該器件可有兩種不同的供電模式。第一個是內部運作的VDD供電電源,第
二個是為IO接口供電的VDDIO電源,當然VDDIO的電壓可以與VDD電源相近;
單電源模式,或在VDDIO電壓低于VDD的情況下,HMC5883L都能正常運作并能
與其他裝置兼容。
圖4.1傳感器模塊連線圖
7
湖南商務職業技術學院畢業設計
4.1.3I2C接口
控制該裝置可以通過I2C總線來實現。該裝置將作為從機在一個主機(例如:
處理器)的控制下連接總線。該裝置必須符合I2C-BusSpecification(I2C-總
線技術規格標準),作為一個I2C兼容裝置,該裝置包含一個7-bit串行地址,
并支持I2C協議。這一裝置可以支持標準和快速模式,分別為100kHz和
400kHz,但不支持高速模式(Hs)。還需要外接電阻才能支持這些標準和快速模
式。要求主機的活動(寄存器的讀取和寫入)優先于內部活動,例如:測量。
這一優先次序的安排是為了不讓主機等待,同時I2C總線占用的時間比必需的
時間長。
4.1.4置位/復位帶驅動的H-橋式電路
ASIC包含大型開關FETs,可以傳輸大而短的脈沖到傳感器的置位/復位帶。
這一置位/復位帶在很大程度上是一種電阻性負載。并不需要外部去增加外部置
位/復位回路。每次測量時,ASIC會自動完成置位/復位。首先一次置位脈沖產
生后進行測量,然后,一次復位脈沖產生后進行測量,兩次測量的差值的一半將
會被放置在三軸上每根軸的數據輸出寄存器上。這樣,在所有測量中傳感器的
內部偏差和溫度漂移差值就可以被移除/抵消了。
4.1.5寄存器訪問
下面表格列出了寄存器及其訪問。所有地址為8bits。
表4.1寄存器列表
地址名稱訪問
00配置寄存器A讀/寫
01配置寄存器B讀/寫
02模式寄存器讀/寫
03數據輸出XMSB寄存器讀
04數據輸出XLSB寄存器讀
05數據輸出ZMSB寄存器讀
06數據輸出ZLSB寄存器讀
07數據輸出YMSB寄存器讀
08數據輸出YLSB寄存器讀
09狀態寄存器讀
10識別寄存器A讀
11識別寄存器B讀
12識別寄存器C讀
這里介紹讀取和寫入此裝置的過程。該裝置使用地址指針來顯示該寄存器
8
湖南商務職業技術學院畢業設計
地點是被讀取或寫入。這些指針位置從主機發出到從機并成功獲得的7位地址
加1位讀/寫標識符。為了盡量減少主機和裝置之間的通信,無主機干預下地址
指針自動更新。寄存器指示器被讀取后將自動的在目前被成功讀取的寄存器的
地址上加1。地址指針本身不能通過I2C總線被讀取。任何試圖去讀取不存在的
地址返回為0s,任何去寫不存在的地址或者是未定義的bit寫入定義的地址都
將會被該裝置予以忽略。為將地址指針移到隨機存儲器位置,首先發出一個“寫”
到寄存器地址,在指令后不帶數據位。例如,要讓地址指針指向寄存器10,發
出的指令為0x3C0x0A。其與單片機的連線圖如下圖所示。
圖4.2傳感器模塊連線圖
4.2LCD1602液晶屏模塊
1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數字、符號等
的點陣型液晶模塊它有若干個5×7或者5×11等點陣字符位組成,每個點陣字
符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到
了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。1602LCD是指顯
示的內容為16×2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數
字)。其引腳圖和引腳說明如下:
9
湖南商務職業技術學院畢業設計
圖4.3傳感器模塊連線圖
第1腳:VSS為電源地。
第2腳:VDD接5V電源正極。
第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電
源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的
電位器調整對比度)。
第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇
指令寄存器。
第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫
操作。
第6腳:E(或EN)端為使能(enable)端。
第7~14腳:D0~D7為8位雙向數據端。
第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。
LCD1602內置了DDRAM(顯示數據存儲RAM)、CGROM(字符存儲ROM)和CGR
AM(用戶自定義RAM)。DDRAM就是顯示數據RAM,用來寄存待顯示的字符代碼。
共80個字節,其地址和屏幕的對應關系如下表:
圖4.4傳感器模塊連線圖
1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點
10
湖南商務職業技術學院畢業設計
陣字符圖形,如附錄C所示,這些字符有:阿拉伯數字、英文字母的大小寫、
常用的符號、和日文假名等,每一個字符都有一個固定的代碼,也就是說想要
在LCD1602屏幕的第一行第一列顯示一個“A”字,就要向DDRAM的00H地址寫
入“A”的代碼就行了,比如大寫的英文字母“A”的代碼是01000001B(41H),
顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。
其基本操作時序:
讀狀態輸入:RS=L,RW=H,E=H輸出:DB0~DB7=狀態字
寫指令輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼輸出:無
讀數據輸入:RS=H,RW=H,E=H輸出:DB0~DB7=數據
寫數據輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數據輸出:無
圖4.4讀操作時序
圖4.5
寫操作時序
數據指針設置:
11
湖南商務職業技術學院畢業設計
表4.2數據指針設置表
指令碼功能
80H+地址碼(0-27H,40H-67H)設置數據地址指針
在1602中我們就用前16個就行了,第二行也一樣用前16個地址。我們往D
DRAM里的00H地址處送一個數據,譬如0x31(數字1的代碼)并不能顯示1出來。
這是令初學者很容易出錯的地方,原因就是如果你要想在DDRAM的00H地址處
顯示數據,則必須將00H加上80H,即0x80+0x00,若要在DDRAM的01H處顯示
數據,則必須將01H加上80H即0x80+0x01,依次類推。
在此,LCD1602用法及注意事項就簡單的介紹到這里,1062從CGROM表上
可以看到,表里面實際還有8個字節可用。如果我們要想顯示這8個用戶自定
義的字符,操作方法和顯示CGROM的一樣,先設置DDRAM位置,再向DDRAM寫
入字符碼,顯示是直接取CGRAM的數據。這里沒用用到在此不在贅述起原理方
法。下面是1602與單片機的連線圖。
圖4.6寫操作時序
12
湖南商務職業技術學院畢業設計
5軟件設計
5.1HMC5883L與單片機通信軟件設計
HMC5883L是一款集成IIC總線借口的數字傳感器,而STC12單片機沒有II
C接口,所以采用在單片機上模擬IIC通訊時序與HMC5883L進行通信,而HMC5883
L可以采用單字節讀取和多字節讀取方式,在本設計中采用的是多字節讀取方式,
一次將XYZ的值讀到單片機內,具體通信軟件設計思路如下:
圖5.1傳感器模塊連線圖
13
湖南商務職業技術學院畢業設計
5.2LCD1602人機界面軟件設計
本設計采用LCD1602作為顯示設備,顯示的信息包括當前方位信息與與地
理南極的夾角信息(角度制)。我們從HMC5883L得出地磁方向在X與Y軸上的
磁場強度分量,采用atan2()這個函數得出其與地理北極之間的夾角(弧度),
再通過弧度到角度的轉換,得到角度值,最后加上180°,使其變為與南極之間
的夾角,而且所有值變為正數,方便處理。得到度數后,根據我們預先設定好
的角度范圍,判斷當前所在哪個方位,并在LCD1602上顯示,然后將其乘以10
倍,變為整數,通過轉換,在LCD1602上顯示與南極夾角的值,具體設計思路
如下:
圖5.2傳感器模塊連線圖
5.3系統總軟件設計
本設計的軟件設計總體思路是將HMC5883L得到的信息送至單片機內進行
處理,再轉換為液晶顯示數據在LCD1602上進行顯示,得到當前的方位信息與
14
湖南商務職業技術學院畢業設計
角度信息,由于硬件模塊較少,所以很大部分工作放在了軟件上,STC12單片機
是一款1T單片機,晶振為22.1184MHZ,處理速度較快,在延時上不好把握,用
定時器又太浪費資源,而本設計在一些模塊時序上對延時有一定要求,所以本
設計借用了別人驗證好的一套運用在STC12單片機上的延時函數集,確保系統
的正常運行。思路上采用每讀完一次數據,就立即送至液晶顯示的實時方式。
具體流程圖如下:
圖5.3傳感器模塊連線圖
6系統調試
STC12LE系列低功耗單片機的正常電壓為3.3V,但LCD1602液晶的對比度
15
湖南商務職業技術學院畢業設計
電壓要高于5V才能看出顯示效果,最初采用3.3V供給整個系統的時候,發現
液晶上無顯示,后來將系統電源調至5V,LCD1602就可以正常顯示了,而經測
試,STC12LE單片機是可以在5V條件下進行工作的。在方向的確定上,我們結
合手機上自帶的電子羅盤對設計進行調試,校準HMC5883L模塊的方向,最后用
膠固定到PCB板上。
7設計小結
該電子指南針設計模塊簡單,可集成性好,測量偏差0.1°,可以用于航海、
山地探索的方向判定,而采用低功耗單片機增強了該設備的續航能力。但LCD160
2液晶為單色字符液晶,顯示能力有限,如果采用更高級的嵌入式處理器,擁有
足夠的速度和存儲器,可以采用TFT液晶等較好的顯示設備,將人機界面做得
更加完善。本設計中HMC5883L傳感器只用到了X與Y的值,即只能在系統水被
平放置時才能較為精確地測量,非常不方便,如果能結合加速度傳感器與HMC588
3L中Z軸的值做三維方向的判定,就可以讓系統在任意姿態下判斷當前的位置
信息。
在設計中,模擬IIC通訊是非常重要的軟件設計環節,軟件的優化可以為
通信節省更多的資源和時間,我們采用了51單片機狀態寄存器的CY位作為通
信數據位進行數據交換,免去重新在RAM里定義數據變量,做到了一個資源優
化。在液晶顯示中,上一次顯示的數據如果不能被下次顯示的數據覆蓋掉,就
要及時清除,而如果采用命令清屏,就會使屏幕閃爍很厲害,所以我們才用用
空格字符覆蓋的方式,及時清除上一次顯示的內容,方便下次數據的顯示。在
以后的實踐中,應當注意這些軟件設計上的問題,讓系統運行更加穩定流暢。
16
湖南商務職業技術學院畢業設計
附錄1:元件清單
附錄2:實物圖
17
湖南商務職業技術學院畢業設計
附錄3原理圖
18
湖南商務職業技術學院畢業設計
附錄4PCB圖
19
湖南商務職業技術學院畢業設計
附錄5:程序代碼
#include<reg52.h>//調用單片機頭文件
#defineucharunsignedchar//無符號字符型宏定義變量范圍0~255
#defineuintunsignedint//無符號整型宏定義變量范圍0~65535
#include<math.h>//Keillibrary
#include<stdio.h>//Keillibrary
#include<INTRINS.H>
sbitrs=P1^0;//寄存器選擇信號H:數據寄存器L:指令寄存器
sbitrw=P1^1;//寄存器選擇信號H:數據寄存器L:指令寄存器
sbite=P1^2;//片選信號下降沿觸發
sbitSCL=P2^1;//IIC時鐘引腳定義
sbitSDA=P2^0;//IIC數據引腳定義
#defineSlaveAddress0x3C//定義器件在IIC總線中的從地
址
ucharBUF[8];//接收數據緩存區
ucharge,shi,bai,qian,wan;//顯示變量
intdis_data;//變量
/******************1ms延時函數*******************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
20
湖南商務職業技術學院畢業設計
/***********************延時函數************************/
voiddelay_uint(uintq)
{
while(q--);
}
/**************************************
延時5微秒(STC90C52RC@12M)
不同的工作環境,需要調整此函數,注意時鐘過快時需要修改
當改用1T的MCU時,請調整此延時函數
**************************************/
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寫命令函數************************/
voidwrite_com(ucharcom)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
21
湖南商務職業技術學院畢業設計
delay_uint(25);
e=0;
}
/***********************lcd1602寫數據函數************************/
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上顯示這字符函數*********************
***/
voidwrite_string(ucharhang,ucharadd,uchar*p)
{
if(hang==1)
22
湖南商務職業技術學院畢業設計
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p=='\0')break;
write_data(*p);
p++;
}
}
/***********************lcd1602初始化設置************************/
voidinit_1602()//lcd1602初始化設置
{
write_com(0x38);//
write_com(0x0c);
write_com(0x06);
write_string(1,0,"zhinanzhen");
write_string(2,0,"");
write_zifu(2,11,0xdf);//顯示度
}
/***********************lcd1602上顯示兩位十進制數*******************
*****/
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
湖南商務職業技術學院畢業設計
write_data(0x30+date/10%10);
write_data('.');
write_data(0x30+date%10);
}
/**************************************
起始信號
**************************************/
voidHMC5883_Start()
{
SDA=1;//拉高數據線
Delay5us();//延時
SDA=0;//產生下降沿
Delay5us();//延時
SCL=0;//拉低時鐘線
}
/**************************************
停止信號
**************************************/
voidHMC5883_Stop()
{
SDA=0;//拉低數據線
SCL=1;//拉高時鐘線
Delay5us();//延時
SDA=1;//產生上升沿
Delay5us();//延時
}
/**************************************
發送應答信號
入口參數:ack(0:ACK1:NAK)
**************************************/
24
湖南商務職業技術學院畢業設計
voidHMC5883_SendACK(bitack)
{
SDA=ack;//寫應答信號
SCL=1;//拉高時鐘線
Delay5us();//延時
SCL=0;//拉低時鐘線
Delay5us();//延時
}
/**************************************
接收應答信號
**************************************/
bitHMC5883_RecvACK()
{
SCL=1;//拉高時鐘線
Delay5us();//延時
CY=SDA;//讀應答信號
SCL=0;//拉低時鐘線
Delay5us();//延時
returnCY;
}
/**************************************
向IIC總線發送一個字節數據
**************************************/
voidHMC5883_SendByte(uchardat)
{
uchari;
for(i=0;i<8;i++)//8位計數器
{
dat<<=1;//移出數據的最高位
25
湖南商務職業技術學院畢業設計
CY=SDA;//送數據口
SCL=0;//拉高時鐘線
Delay5us();//延時
SCL=1;//拉低時鐘線
Delay5us();//延時
}
HMC5883_RecvACK();
}
/**************************************
從IIC總線接收一個字節數據
**************************************/
ucharHMC5883_RecvByte()
{
uchari;
uchardat=0;
SDA=1;//使能內部上拉,準備讀取數據,
for(i=0;i<8;i++)//8位計數器
{
dat<<=1;
SCL=1;//拉高時鐘線
Delay5us();//延時
dat|=SDA;//讀數據
SCL=0;//拉低時鐘線
Delay5us();//延時
}
returndat;
}
//***************************************************
voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data)
26
湖南商務職業技術學院畢業設計
{
HMC5883_SendByte(SlaveAddress);//發送設備地址+寫信號
HMC5883_SendByte(REG_Address);//內部寄存器地址
HMC5883_SendByte(REG_data);//內部寄存器數據
}
//******************************************************
//
//連續讀出HMC5883內部角度數據,地址范圍0x3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 難忘的照片中考語文作文
- 紙制品生產質量管理與認證流程考核試卷
- 玻璃制品的環境適應性考核試卷
- 氮肥產業的技術發展趨勢與投資分析考核試卷
- 慶祝中秋節初二語文作文
- 競技自行車租賃服務標準考核試卷
- 廈門市高三第一次語文市質監作文
- 畜牧飼料生產安全風險評估與管理考核試卷
- 股骨頸骨折患者護理 2
- 7-6算法狀態機圖2
- 醫療器械經營范圍經營方式說明
- 可編輯修改中國地圖模板
- 流體力學(劉鶴年) 全集通用課件
- 小學生常規衛生紀律檢查記錄表
- 安全觀摩手冊
- 4.XXX地鐵項目圖紙問題BIM技術應用交底報告 (1)
- 事業單位1993歷次調整工資標準對照表
- 北師大版小學數學三年級下冊第四單元測試卷(共5套)
- 止水螺桿施工方案(共14頁)
- 教師健康問題及預防ppt課件
- 全膝關節翻修術中骨缺損的治療進展
評論
0/150
提交評論