久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 20805|回復(fù): 10
收起左側(cè)

HMC5883L電子指南針羅盤模塊 GY-271三軸磁場(chǎng)傳感器 的相關(guān)教程 帶Arduino 51源代碼

  [復(fù)制鏈接]
ID:173909 發(fā)表于 2017-4-8 19:08 | 顯示全部樓層 |閱讀模式
GY-271模塊教程分享,這是HMC5883L電子指南針羅盤模塊 三軸磁場(chǎng)傳感器 的相關(guān)教程,帶stc單片機(jī)。avr單片機(jī)和Arduino平臺(tái)的源碼。有需要的同學(xué)可以看看

GY-271 HMC5883L模塊外觀圖:
0.png

GY-271 HMC5883L模塊原理圖:
0.png

GY-271 HMC5883L模塊尺寸圖:
0.png

HMC5883L中文規(guī)格書:
0.png 0.png 0.png

與單片機(jī)的通訊接口程序:
  1. //***************************************
  2. // HMC5883 51串口測(cè)試程序
  3. // 使用單片機(jī)STC89C51
  4. // 晶振:11.0592M
  5. // 顯示:PC串口
  6. // 編譯環(huán)境 Keil uVision2
  7. // 參考宏晶網(wǎng)站24c04通信程序
  8. // 時(shí)間:2011年3月1日
  9. //****************************************
  10. #include  <REG51.H>       
  11. #include  <math.h>    //Keil library  
  12. #include  <stdio.h>   //Keil library       
  13. #include  <INTRINS.H>
  14. #define   uchar unsigned char
  15. #define   uint  unsigned int       
  16. //使用的端口,請(qǐng)按照以下接線
  17. #define DataPort P0        //LCD1602數(shù)據(jù)端口
  18. sbit        SCL=P1^0;      //IIC時(shí)鐘引腳定義
  19. sbit        SDA=P1^1;      //IIC數(shù)據(jù)引腳定義


  20. #define        SlaveAddress   0x3C          //定義器件5883在IIC總線中的從地址
  21. typedef unsigned char BYTE;
  22. typedef unsigned short WORD;

  23. BYTE BUF[8];                         //接收數(shù)據(jù)緩存區(qū)             
  24. uchar ge,shi,bai,qian,wan;           //顯示變量
  25. int  dis_data;                       //變量
  26. //************

  27. //************
  28. void delay(unsigned int k);
  29. void Init_HMC5883(void);            //初始化5883
  30. void conversion(uint temp_data);

  31. void  Single_Write_HMC5883(uchar REG_Address,uchar REG_data);   //單個(gè)寫入數(shù)據(jù)
  32. //uchar Single_Read_HMC5883(uchar REG_Address);                   //單個(gè)讀取內(nèi)部寄存器數(shù)據(jù)
  33. void  Multiple_Read_HMC5883();                                  //連續(xù)的讀取內(nèi)部寄存器數(shù)據(jù)
  34. //以下是模擬iic使用函數(shù)-------------
  35. void Delay5us();
  36. void Delay5ms();
  37. void HMC5883_Start();
  38. void HMC5883_Stop();
  39. void HMC5883_SendACK(bit ack);
  40. bit  HMC5883_RecvACK();
  41. void HMC5883_SendByte(BYTE dat);
  42. BYTE HMC5883_RecvByte();
  43. void HMC5883_ReadPage();
  44. void HMC5883_WritePage();
  45. //-----------------------------------

  46. //*********************************************
  47. //串口初始化
  48. //9600 bps @ 11.059 MHz
  49. void init_uart()
  50. {
  51.         TMOD=0x21;                               
  52.         TH1=0xfd;                               
  53.         TL1=0xfd;                               
  54.         SCON=0x50;
  55.         PS=1;      //串口中斷設(shè)為高優(yōu)先級(jí)別
  56.         TR0=1;           //啟動(dòng)定時(shí)器                       
  57.         TR1=1;
  58.         ET0=1;     //打開定時(shí)器0中斷                       
  59.         ES=1;       
  60. }

  61. //*********串口數(shù)據(jù)發(fā)送******************
  62. void  SeriPushSend(uchar send_data)
  63. {
  64.     SBUF=send_data;  
  65.         while(!TI);TI=0;          
  66. }
  67. //*********************************************************
  68. void conversion(uint temp_data)  
  69. {  
  70.     wan=temp_data/10000+0x30 ;
  71.     temp_data=temp_data%10000;   //取余運(yùn)算
  72.         qian=temp_data/1000+0x30 ;
  73.     temp_data=temp_data%1000;    //取余運(yùn)算
  74.     bai=temp_data/100+0x30   ;
  75.     temp_data=temp_data%100;     //取余運(yùn)算
  76.     shi=temp_data/10+0x30    ;
  77.     temp_data=temp_data%10;      //取余運(yùn)算
  78.     ge=temp_data+0x30;        
  79. }

  80. /*******************************/
  81. void delay(unsigned int k)       
  82. {                                               
  83. unsigned int i,j;                               
  84. for(i=0;i<k;i++)
  85. {                       
  86. for(j=0;j<121;j++)                       
  87. {;}}                                               
  88. }
  89.        

  90. /**************************************
  91. 延時(shí)5微秒(STC90C52RC@12M)
  92. 不同的工作環(huán)境,需要調(diào)整此函數(shù),注意時(shí)鐘過快時(shí)需要修改
  93. 當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)
  94. **************************************/
  95. void Delay5us()
  96. {
  97.     _nop_();_nop_();_nop_();_nop_();
  98.     _nop_();_nop_();_nop_();_nop_();
  99.         _nop_();_nop_();_nop_();_nop_();
  100.         _nop_();_nop_();_nop_();_nop_();
  101.     _nop_();_nop_();_nop_();_nop_();
  102. }

  103. /**************************************
  104. 延時(shí)5毫秒(STC90C52RC@12M)
  105. 不同的工作環(huán)境,需要調(diào)整此函數(shù)
  106. 當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)
  107. **************************************/
  108. void Delay5ms()
  109. {
  110.     WORD n = 560;

  111.     while (n--);
  112. }

  113. /**************************************
  114. 起始信號(hào)
  115. **************************************/
  116. void HMC5883_Start()
  117. {
  118.     SDA = 1;                    //拉高數(shù)據(jù)線
  119.     SCL = 1;                    //拉高時(shí)鐘線
  120.     Delay5us();                 //延時(shí)
  121.     SDA = 0;                    //產(chǎn)生下降沿
  122.     Delay5us();                 //延時(shí)
  123.     SCL = 0;                    //拉低時(shí)鐘線
  124. }

  125. /**************************************
  126. 停止信號(hào)
  127. **************************************/
  128. void HMC5883_Stop()
  129. {
  130.     SDA = 0;                    //拉低數(shù)據(jù)線
  131.     SCL = 1;                    //拉高時(shí)鐘線
  132.     Delay5us();                 //延時(shí)
  133.     SDA = 1;                    //產(chǎn)生上升沿
  134.     Delay5us();                 //延時(shí)
  135. }

  136. /**************************************
  137. 發(fā)送應(yīng)答信號(hào)
  138. 入口參數(shù):ack (0:ACK 1:NAK)
  139. **************************************/
  140. void HMC5883_SendACK(bit ack)
  141. {
  142.     SDA = ack;                  //寫應(yīng)答信號(hào)
  143.     SCL = 1;                    //拉高時(shí)鐘線
  144.     Delay5us();                 //延時(shí)
  145.     SCL = 0;                    //拉低時(shí)鐘線
  146.     Delay5us();                 //延時(shí)
  147. }

  148. /**************************************
  149. 接收應(yīng)答信號(hào)
  150. **************************************/
  151. bit HMC5883_RecvACK()
  152. {
  153.     SCL = 1;                    //拉高時(shí)鐘線
  154.     Delay5us();                 //延時(shí)
  155.     CY = SDA;                   //讀應(yīng)答信號(hào)
  156.     SCL = 0;                    //拉低時(shí)鐘線
  157.     Delay5us();                 //延時(shí)

  158.     return CY;
  159. }

  160. /**************************************
  161. 向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)
  162. **************************************/
  163. void HMC5883_SendByte(BYTE dat)
  164. {
  165.     BYTE i;

  166.     for (i=0; i<8; i++)         //8位計(jì)數(shù)器
  167.     {
  168.         dat <<= 1;              //移出數(shù)據(jù)的最高位
  169.         SDA = CY;               //送數(shù)據(jù)口
  170.         SCL = 1;                //拉高時(shí)鐘線
  171.         Delay5us();             //延時(shí)
  172.         SCL = 0;                //拉低時(shí)鐘線
  173.         Delay5us();             //延時(shí)
  174.     }
  175.     HMC5883_RecvACK();
  176. }

  177. /**************************************
  178. 從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)
  179. **************************************/
  180. BYTE HMC5883_RecvByte()
  181. {
  182.     BYTE i;
  183.     BYTE dat = 0;

  184.     SDA = 1;                    //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
  185.     for (i=0; i<8; i++)         //8位計(jì)數(shù)器
  186.     {
  187.         dat <<= 1;
  188.         SCL = 1;                //拉高時(shí)鐘線
  189.         Delay5us();             //延時(shí)
  190.         dat |= SDA;             //讀數(shù)據(jù)               
  191.         SCL = 0;                //拉低時(shí)鐘線
  192.         Delay5us();             //延時(shí)
  193.     }
  194.     return dat;
  195. }

  196. //***************************************************

  197. void Single_Write_HMC5883(uchar REG_Address,uchar REG_data)
  198. {


  199. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

0.png 0.png
下載:
GY-271三軸電子指南針加速度資料.rar (1.72 MB, 下載次數(shù): 221)

評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
Jiangwei + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-5-5 03:01 | 顯示全部樓層
好資料,51黑有你更精彩.
回復(fù)

使用道具 舉報(bào)

ID:204010 發(fā)表于 2017-5-23 19:24 | 顯示全部樓層
好資料
回復(fù)

使用道具 舉報(bào)

ID:191024 發(fā)表于 2017-5-23 21:21 | 顯示全部樓層
資料很齊全,不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

ID:139302 發(fā)表于 2017-10-25 16:06 | 顯示全部樓層
不能用呢,而且這資料明顯是從別的地方拷貝的。樓主親自試用過嗎?
回復(fù)

使用道具 舉報(bào)

ID:271398 發(fā)表于 2018-1-4 14:57 | 顯示全部樓層
先試試
回復(fù)

使用道具 舉報(bào)

ID:304089 發(fā)表于 2018-4-22 14:24 | 顯示全部樓層
haixiang9999 發(fā)表于 2017-10-25 16:06
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

這程序能不能用的?
回復(fù)

使用道具 舉報(bào)

ID:163069 發(fā)表于 2018-5-15 18:43 | 顯示全部樓層
感謝分享,下來看看
回復(fù)

使用道具 舉報(bào)

ID:29032 發(fā)表于 2019-4-3 15:19 | 顯示全部樓層
謝謝分享!!
回復(fù)

使用道具 舉報(bào)

ID:587615 發(fā)表于 2019-7-23 20:51 | 顯示全部樓層
不錯(cuò),正在找這個(gè)用
回復(fù)

使用道具 舉報(bào)

ID:700387 發(fā)表于 2020-2-29 22:17 | 顯示全部樓層
下來看看,謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色黄网站| 精品久久一区 | 日本精品一区二区三区在线观看视频 | 麻豆国产一区二区三区四区 | 久久国产精品一区二区三区 | 国产高清精品一区二区三区 | 亚洲精品久久久一区二区三区 | 日本一区二区不卡 | www.47久久青青 | 亚洲一区二区免费看 | 欧美精品一区在线 | 久久精品天堂 | 一片毛片| 欧美精品片 | 四虎最新 | 欧美性吧 | 一区二区三区网站 | 精品久久中文字幕 | 在线91 | 欧美日韩在线一区二区 | 精品视频免费 | av黄色片在线观看 | av网站观看 | 亚洲成人av在线 | 亚洲 中文 欧美 | 久草网站 | 中文字字幕在线中文乱码范文 | 亚洲一区视频在线 | 成人久久18免费网站 | 毛片一区二区三区 | 国产福利视频在线观看 | 欧美成人h版在线观看 | 亚洲综合区 | 久久国产精品久久久久久 | 97伦理电影网 | 东京av男人的天堂 | 成人性生交大片 | 日韩欧美在线视频观看 | 日韩三区在线 | 日本黄色免费视频 | 欧美日韩亚洲一区 |