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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14937|回復(fù): 24
打印 上一主題 下一主題
收起左側(cè)

MPU6050加速度傳感器顯示(lcd+數(shù)碼管)自己寫的!!

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:162229 發(fā)表于 2017-2-12 21:27 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
廢話不說,先上幾張圖 還有一個小視頻供大家觀賞:http://v.youku.com/v_show/id_XMjUwODY3Mjg5Ng==.html



附件里有MPU6050的中文資料和自己寫的程序,包括在lcd1602顯示和在數(shù)碼管顯示,另外帶有一些其他的一些資料。

數(shù)碼管顯示的程序:
  1. #include <REG52.H>       
  2. #include <math.h>   
  3. #include <stdio.h>  
  4. #include <INTRINS.H>
  5. typedef unsigned char  uchar;
  6. typedef unsigned short ushort;
  7. typedef unsigned int   uint;
  8. //****************************************
  9. // 定義51單片機端口
  10. //****************************************
  11. sbit    SCL=P1^0;                        //IIC時鐘引腳定義
  12. sbit    SDA=P1^1;                        //IIC數(shù)據(jù)引腳定義
  13. //****************************************
  14. //****************************************
  15. sbit LSA=P2^2;
  16. sbit LSB=P2^3;
  17. sbit LSC=P2^4;
  18. uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  19. uchar deal[8];
  20. void delays(uint i)
  21. {
  22.         while(i--);       
  23. }

  24. void DigDisplay()
  25. {
  26.         uchar i;
  27.         for(i=0;i<8;i++)
  28.         {
  29.                 switch(i)         //位選,選擇點亮的數(shù)碼管,
  30.                 {
  31.                         case(0):
  32.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  33.                         case(1):
  34.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  35.                         case(2):
  36.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  37.                         case(3):
  38.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  39.                         case(4):
  40.                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  41.                         case(5):
  42.                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  43.                         case(6):
  44.                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  45.                         case(7):
  46.                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位       
  47.                 }
  48.                 P0=deal[i];//發(fā)送段碼
  49.                 delays(100); //間隔一段時間掃描       
  50.                 P0=0x00;//消隱
  51.         }
  52. }
  53. //****************************************
  54. // 定義MPU6050內(nèi)部地址
  55. //****************************************
  56. #define        SMPLRT_DIV                0x19        //陀螺儀采樣率,典型值:0x07(125Hz)
  57. #define        CONFIG                        0x1A        //低通濾波頻率,典型值:0x06(5Hz)
  58. #define        GYRO_CONFIG                0x1B        //陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)
  59. #define        ACCEL_CONFIG        0x1C        //加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)
  60. #define        ACCEL_XOUT_H        0x3B
  61. #define        ACCEL_XOUT_L        0x3C
  62. #define        ACCEL_YOUT_H        0x3D
  63. #define        ACCEL_YOUT_L        0x3E
  64. #define        ACCEL_ZOUT_H        0x3F
  65. #define        ACCEL_ZOUT_L        0x40
  66. #define        TEMP_OUT_H                0x41
  67. #define        TEMP_OUT_L                0x42
  68. #define        GYRO_XOUT_H                0x43
  69. #define        GYRO_XOUT_L                0x44       
  70. #define        GYRO_YOUT_H                0x45
  71. #define        GYRO_YOUT_L                0x46
  72. #define        GYRO_ZOUT_H                0x47
  73. #define        GYRO_ZOUT_L                0x48
  74. #define        PWR_MGMT_1                0x6B        //電源管理,典型值:0x00(正常啟用)
  75. #define        WHO_AM_I                0x75        //IIC地址寄存器(默認(rèn)數(shù)值0x68,只讀)
  76. #define        SlaveAddress        0xD0        //IIC寫入時的地址字節(jié)數(shù)據(jù),+1為讀取

  77. int        dis_data;                                                //變量

  78. void  delay(unsigned int k);                                                                                //延時
  79. //MPU6050操作函數(shù)
  80. void  InitMPU6050();                                                                                                        //初始化MPU6050
  81. void  Delay5us();
  82. void  I2C_Start();
  83. void  I2C_Stop();
  84. void  I2C_SendACK(bit ack);
  85. bit   I2C_RecvACK();
  86. void  I2C_SendByte(uchar dat);
  87. uchar I2C_RecvByte();
  88. void  I2C_ReadPage();
  89. void  I2C_WritePage();
  90. void  display_ACCEL_x();
  91. void  display_ACCEL_y();
  92. void  display_ACCEL_z();
  93. uchar Single_ReadI2C(uchar REG_Address);                                                //讀取I2C數(shù)據(jù)
  94. void  Single_WriteI2C(uchar REG_Address,uchar REG_data);        //向I2C寫入數(shù)據(jù)
  95. //****************************************
  96. //延時
  97. //****************************************
  98. void delay(unsigned int k)       
  99. {                                               
  100.         unsigned int i,j;                               
  101.         for(i=0;i<k;i++)
  102.         {                       
  103.                 for(j=0;j<121;j++);
  104.         }                                               
  105. }                                                               
  106. //**************************************
  107. //延時5微秒(STC90C52RC@12M)
  108. //**************************************
  109. void Delay5us()
  110. {
  111.         _nop_();_nop_();_nop_();_nop_();
  112.         _nop_();_nop_();_nop_();_nop_();
  113.         _nop_();_nop_();_nop_();_nop_();
  114.         _nop_();_nop_();_nop_();_nop_();
  115.         _nop_();_nop_();_nop_();_nop_();
  116.         _nop_();_nop_();_nop_();_nop_();
  117. }
  118. //**************************************
  119. //I2C起始信號
  120. //**************************************
  121. void I2C_Start()
  122. {
  123.     SDA = 1;                  
  124.     SCL = 1;                 
  125.     Delay5us();               
  126.     SDA = 0;                  
  127.     Delay5us();           
  128.     SCL = 0;                  
  129. }
  130. //**************************************
  131. //I2C停止信號
  132. //**************************************
  133. void I2C_Stop()
  134. {
  135.     SDA = 0;                  
  136.     SCL = 1;                    
  137.     Delay5us();            
  138.     SDA = 1;                  
  139.     Delay5us();              
  140. }
  141. //**************************************
  142. //I2C發(fā)送應(yīng)答信號
  143. //入口參數(shù):ack (0:ACK 1:NAK)
  144. //**************************************
  145. void I2C_SendACK(bit ack)
  146. {
  147.     SDA = ack;               
  148.     SCL = 1;                    
  149.     Delay5us();               
  150.     SCL = 0;                  
  151.     Delay5us();               
  152. }
  153. //**************************************
  154. //I2C接收應(yīng)答信號
  155. //**************************************
  156. bit I2C_RecvACK()
  157. {
  158.     SCL = 1;                  
  159.     Delay5us();              
  160.     CY = SDA;               
  161.     SCL = 0;                  
  162.     Delay5us();               
  163.     return CY;
  164. }
  165. //**************************************
  166. //向I2C總線發(fā)送一個字節(jié)數(shù)據(jù)
  167. //**************************************
  168. void I2C_SendByte(uchar dat)
  169. {
  170.     uchar i;
  171.     for (i=0; i<8; i++)        
  172.     {
  173.         dat <<= 1;            
  174.         SDA = CY;            
  175.         SCL = 1;               
  176.         Delay5us();            
  177.         SCL = 0;              
  178.         Delay5us();            
  179.     }
  180.     I2C_RecvACK();
  181. }
  182. //**************************************
  183. //從I2C總線接收一個字節(jié)數(shù)據(jù)
  184. //**************************************
  185. uchar I2C_RecvByte()
  186. {
  187.     uchar i;
  188.     uchar dat = 0;
  189.     SDA = 1;                  
  190.     for (i=0; i<8; i++)        
  191.     {
  192.         dat <<= 1;
  193.         SCL = 1;               
  194.         Delay5us();            
  195.         dat |= SDA;                     
  196.         SCL = 0;               
  197.         Delay5us();            
  198.     }
  199.     return dat;
  200. }
  201. //**************************************
  202. //向I2C設(shè)備寫入一個字節(jié)數(shù)據(jù)
  203. //**************************************
  204. void Single_WriteI2C(uchar REG_Address,uchar REG_data)
  205. {
  206.     I2C_Start();                  
  207.     I2C_SendByte(SlaveAddress);  
  208.     I2C_SendByte(REG_Address);   
  209.     I2C_SendByte(REG_data);      
  210.     I2C_Stop();                 
  211. }
  212. //**************************************
  213. //從I2C設(shè)備讀取一個字節(jié)數(shù)據(jù)
  214. //**************************************
  215. uchar Single_ReadI2C(uchar REG_Address)
  216. {
  217.         uchar REG_data;
  218.         I2C_Start();                  
  219.         I2C_SendByte(SlaveAddress);   
  220.         I2C_SendByte(REG_Address);     
  221.         I2C_Start();                  
  222.         I2C_SendByte(SlaveAddress+1);  
  223.         REG_data=I2C_RecvByte();      
  224.         I2C_SendACK(1);               
  225.         I2C_Stop();                    
  226.         return REG_data;
  227. }
  228. //**************************************
  229. //初始化MPU6050
  230. //**************************************
  231. void InitMPU6050()
  232. {
  233.         Single_WriteI2C(PWR_MGMT_1, 0x00);
  234.         Single_WriteI2C(SMPLRT_DIV, 0x07);
  235.         Single_WriteI2C(CONFIG, 0x06);
  236.         Single_WriteI2C(GYRO_CONFIG, 0x18);
  237.         Single_WriteI2C(ACCEL_CONFIG, 0x19);
  238. }
  239. //**************************************
  240. //合成數(shù)據(jù)
  241. //**************************************
  242. int GetData(uchar REG_Address)
  243. {
  244.         char H,L;
  245.         H=Single_ReadI2C(REG_Address);
  246.         L=Single_ReadI2C(REG_Address+1);
  247.         return (H<<8)+L;  
  248. }
  249. void dealdate()
  250. {
  251.         int a;
  252.         a=GetData(ACCEL_ZOUT_H);
  253.         a=a/2;
  254.         if(a>=0)
  255.         {

  256.                 deal[7]=0x00;
  257.                 deal[5]=smgduan[a/100000];
  258.                 deal[4]=smgduan[a%100000/10000];
  259.                 deal[3]=smgduan[a%10000/1000];
  260.                 deal[2]=smgduan[a%1000/100]|0x80;
  261.                 deal[1]=smgduan[a%100/10];
  262.                 deal[0]=smgduan[a%10];
  263.         }
  264.         else
  265.         {
  266.                 a=a-1;
  267.                 a=~a;

  268.                 deal[7]=0x40;
  269.                 deal[5]=smgduan[a/100000];
  270.                 deal[4]=smgduan[a%100000/10000];
  271.                 deal[3]=smgduan[a%10000/1000];
  272.                 deal[2]=smgduan[a%1000/100]|0x80;
  273.                 deal[1]=smgduan[a%100/10];
  274.                 deal[0]=smgduan[a%10];
  275.         }
  276. }
  277. void main()
  278. {
  279.         uint k;
  280.         delay(500);                       
  281.         InitMPU6050();        //初始化MPU6050
  282.         delay(150);
  283.         dealdate();
  284.         while(1)
  285.         {
  286.                 k++;
  287.                 if(k>=15)
  288.                 {
  289.                         dealdate();
  290.                         k=0;
  291.                 }
  292.                 DigDisplay();
  293.         }
  294. }
復(fù)制代碼


所有資料下載:
陀螺儀,加速度計.zip (4.82 MB, 下載次數(shù): 297)





評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:158248 發(fā)表于 2017-2-13 09:03 | 只看該作者
不錯不錯,mpu6050資源
回復(fù)

使用道具 舉報

板凳
ID:185718 發(fā)表于 2017-4-4 20:19 | 只看該作者
為什么LCD顯示的的值是01.2g,而且不會變化呢?
回復(fù)

使用道具 舉報

地板
ID:216265 發(fā)表于 2017-7-1 08:55 | 只看該作者
不錯不錯,正好需要
回復(fù)

使用道具 舉報

5#
ID:171544 發(fā)表于 2017-8-3 17:42 | 只看該作者
覺得很好呢,正是我需要的
回復(fù)

使用道具 舉報

6#
ID:110278 發(fā)表于 2017-8-4 13:40 | 只看該作者
學(xué)習(xí)了。
回復(fù)

使用道具 舉報

7#
ID:225554 發(fā)表于 2017-8-7 17:55 | 只看該作者
厲害找了大半天,都快放棄結(jié)果找到這個趕緊試試
回復(fù)

使用道具 舉報

8#
ID:229064 發(fā)表于 2017-8-24 08:29 | 只看該作者
為什么,燒錄完之后,LCD什么都沒顯示?
回復(fù)

使用道具 舉報

9#
ID:189279 發(fā)表于 2017-9-13 09:39 | 只看該作者
我覺得0X1C和0X1A兩個寄存器配置有點不妥,首先0X1A這個寄存器的后三位是配置加速度計和角速度計的低通濾波器的,配成0X06就是帶寬為5HZ的低通濾波器,而0X1C這個濾波器的后三位是配置加速度計的高通濾波器,配成0X19,是帶寬為5HZ的高通濾波器,所以加速度計的數(shù)大部分被濾掉了,自然不會怎么變化
回復(fù)

使用道具 舉報

10#
ID:325745 發(fā)表于 2018-5-15 17:23 | 只看該作者
和單片機的連接圖是什么?
回復(fù)

使用道具 舉報

11#
ID:340209 發(fā)表于 2018-5-28 23:06 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

12#
ID:345795 發(fā)表于 2018-6-5 22:22 | 只看該作者
謝謝,學(xué)習(xí)了
回復(fù)

使用道具 舉報

13#
ID:355312 發(fā)表于 2018-6-20 16:29 | 只看該作者
下載看看不知道能不能用上
回復(fù)

使用道具 舉報

14#
ID:104846 發(fā)表于 2019-2-21 21:51 | 只看該作者
還不錯,為我的設(shè)計提供了一些思路,感謝
回復(fù)

使用道具 舉報

15#
ID:512597 發(fā)表于 2019-4-15 13:24 來自手機 | 只看該作者
siyaqq 發(fā)表于 2019-2-21 21:51
還不錯,為我的設(shè)計提供了一些思路,感謝

你好,你有做出來嗎?能分享一下程序嗎?
回復(fù)

使用道具 舉報

16#
ID:512597 發(fā)表于 2019-4-15 13:26 來自手機 | 只看該作者
siyaqq 發(fā)表于 2019-2-21 21:51
還不錯,為我的設(shè)計提供了一些思路,感謝

你好,請問你也在做這個嗎?有沒有代碼可以分享一下嗎?
回復(fù)

使用道具 舉報

17#
ID:512597 發(fā)表于 2019-4-15 18:07 來自手機 | 只看該作者
各位做出來的能飛享一下代碼嗎?非常感謝!
回復(fù)

使用道具 舉報

18#
ID:501294 發(fā)表于 2019-4-25 13:45 | 只看該作者
18850042681 發(fā)表于 2017-4-4 20:19
為什么LCD顯示的的值是01.2g,而且不會變化呢?

+1為什么數(shù)值不變
回復(fù)

使用道具 舉報

19#
ID:592398 發(fā)表于 2019-7-31 10:11 | 只看該作者
謝謝分享還沒下載
回復(fù)

使用道具 舉報

20#
ID:394154 發(fā)表于 2019-8-1 11:19 | 只看該作者
可以用
回復(fù)

使用道具 舉報

21#
ID:719801 發(fā)表于 2020-4-7 20:54 | 只看該作者
您好,請問這個是顯示的角度 還是加速度?
回復(fù)

使用道具 舉報

22#
ID:709373 發(fā)表于 2020-5-29 21:07 | 只看該作者
木小璃 發(fā)表于 2019-4-25 13:45
+1為什么數(shù)值不變

你好  問題解決了嗎
回復(fù)

使用道具 舉報

23#
ID:579230 發(fā)表于 2020-9-12 00:17 | 只看該作者
18850042681 發(fā)表于 2017-4-4 20:19
為什么LCD顯示的的值是01.2g,而且不會變化呢?

我也是,這咋處理啊
回復(fù)

使用道具 舉報

24#
ID:664698 發(fā)表于 2021-3-30 16:45 | 只看該作者
fangyf 發(fā)表于 2020-9-12 00:17
我也是,這咋處理啊

你好大佬,請問這個問題解決了嗎?是怎么回事呀?
回復(fù)

使用道具 舉報

25#
ID:873664 發(fā)表于 2021-7-4 16:38 | 只看該作者
18850042681 發(fā)表于 2017-4-4 20:19
為什么LCD顯示的的值是01.2g,而且不會變化呢?

您好,請問樓主這個是用什么軟件打開的?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 男人av在线播放 | 国产高潮好爽受不了了夜夜做 | 亚洲最大成人综合 | a免费视频 | 日韩欧美在 | 欧美亚洲综合久久 | 国产黑丝在线 | 综合久久综合久久 | 国产一区二区精华 | 亚洲国产欧美一区 | 一级a性色生活片久久毛片波多野 | 中文一区| 在线免费激情视频 | 精品欧美一区二区三区精品久久 | 一区二区精品 | 在线男人天堂 | 亚洲欧美日韩国产综合 | 国产婷婷色一区二区三区 | 美女久久 | 成在线人视频免费视频 | 一级一片在线观看 | 少妇特黄a一区二区三区88av | 欧美日韩视频网站 | 视频二区 | 91免费电影 | 成人免费看黄 | 日韩三级在线观看 | 国产精品99久久久久久久久 | 亚洲国产欧美一区 | 久久精品亚洲精品国产欧美 | 日本啊v在线 | 国产精品免费视频一区 | 日韩高清一区 | 免费精品久久久久久中文字幕 | 国产精品99久久久久久动医院 | 精品国产一区二区三区成人影院 | 91色站 | 国产精品视屏 | 国产精品一区二区欧美黑人喷潮水 | 国产综合精品一区二区三区 | 午夜天堂精品久久久久 |