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

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

QQ登錄

只需一步,快速開(kāi)始

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

陀螺儀

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:239625 發(fā)表于 2017-11-22 18:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  • #include <REG52.H>
  • #include <math.h>
  • #include <stdio.h>
  • #include <INTRINS.H>
  • typedef unsigned char  uchar;
  • typedef unsigned short ushort;
  • typedef unsigned int   uint;
  • //****************************************
  • // 定義51單片機(jī)端口
  • //****************************************
  • sbit    SCL=P1^0;                        //IIC時(shí)鐘引腳定義
  • sbit    SDA=P1^1;                        //IIC數(shù)據(jù)引腳定義
  • //****************************************
  • //****************************************
  • sbit LSA=P2^2;
  • sbit LSB=P2^3;
  • sbit LSC=P2^4;
  • uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  • uchar deal[8];
  • void delays(uint i)
  • {
  •         while(i--);
  • }
  • void DigDisplay()
  • {
  •         uchar i;
  •         for(i=0;i<8;i++)
  •         {
  •                 switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
  •                 {
  •                         case(0):
  •                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  •                         case(1):
  •                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  •                         case(2):
  •                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  •                         case(3):
  •                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位
  •                         case(4):
  •                                 LSA=0;LSB=0;LSC=1; break;//顯示第4位
  •                         case(5):
  •                                 LSA=1;LSB=0;LSC=1; break;//顯示第5位
  •                         case(6):
  •                                 LSA=0;LSB=1;LSC=1; break;//顯示第6位
  •                         case(7):
  •                                 LSA=1;LSB=1;LSC=1; break;//顯示第7位
  •                 }
  •                 P0=deal;//發(fā)送段碼
  •                 delays(100); //間隔一段時(shí)間掃描
  •                 P0=0x00;//消隱
  •         }
  • }
  • //****************************************
  • // 定義MPU6050內(nèi)部地址
  • //****************************************
  • #define        SMPLRT_DIV                0x19        //陀螺儀采樣率,典型值:0x07(125Hz)
  • #define        CONFIG                        0x1A        //低通濾波頻率,典型值:0x06(5Hz)
  • #define        GYRO_CONFIG                0x1B        //陀螺儀自檢及測(cè)量范圍,典型值:0x18(不自檢,2000deg/s)
  • #define        ACCEL_CONFIG        0x1C        //加速計(jì)自檢、測(cè)量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)
  • #define        ACCEL_XOUT_H        0x3B
  • #define        ACCEL_XOUT_L        0x3C
  • #define        ACCEL_YOUT_H        0x3D
  • #define        ACCEL_YOUT_L        0x3E
  • #define        ACCEL_ZOUT_H        0x3F
  • #define        ACCEL_ZOUT_L        0x40
  • #define        TEMP_OUT_H                0x41
  • #define        TEMP_OUT_L                0x42
  • #define        GYRO_XOUT_H                0x43
  • #define        GYRO_XOUT_L                0x44
  • #define        GYRO_YOUT_H                0x45
  • #define        GYRO_YOUT_L                0x46
  • #define        GYRO_ZOUT_H                0x47
  • #define        GYRO_ZOUT_L                0x48
  • #define        PWR_MGMT_1                0x6B        //電源管理,典型值:0x00(正常啟用)
  • #define        WHO_AM_I                0x75        //IIC地址寄存器(默認(rèn)數(shù)值0x68,只讀)
  • #define        SlaveAddress        0xD0        //IIC寫(xiě)入時(shí)的地址字節(jié)數(shù)據(jù),+1為讀取
  • int        dis_data;                                                //變量
  • void  delay(unsigned int k);                                                                                //延時(shí)
  • //MPU6050操作函數(shù)
  • void  InitMPU6050();                                                                                                        //初始化MPU6050
  • void  Delay5us();
  • void  I2C_Start();
  • void  I2C_Stop();
  • void  I2C_SendACK(bit ack);
  • bit   I2C_RecvACK();
  • void  I2C_SendByte(uchar dat);
  • uchar I2C_RecvByte();
  • void  I2C_ReadPage();
  • void  I2C_WritePage();
  • void  display_ACCEL_x();
  • void  display_ACCEL_y();
  • void  display_ACCEL_z();
  • uchar Single_ReadI2C(uchar REG_Address);                                                //讀取I2C數(shù)據(jù)
  • void  Single_WriteI2C(uchar REG_Address,uchar REG_data);        //向I2C寫(xiě)入數(shù)據(jù)
  • //****************************************
  • //延時(shí)
  • //****************************************
  • void delay(unsigned int k)
  • {
  •         unsigned int i,j;
  •         for(i=0;i<k;i++)
  •         {
  •                 for(j=0;j<121;j++);
  •         }
  • }
  • //**************************************
  • //延時(shí)5微秒(STC90C52RC@12M)
  • //**************************************
  • void Delay5us()
  • {
  •         _nop_();_nop_();_nop_();_nop_();
  •         _nop_();_nop_();_nop_();_nop_();
  •         _nop_();_nop_();_nop_();_nop_();
  •         _nop_();_nop_();_nop_();_nop_();
  •         _nop_();_nop_();_nop_();_nop_();
  •         _nop_();_nop_();_nop_();_nop_();
  • }
  • //**************************************
  • //I2C起始信號(hào)
  • //**************************************
  • void I2C_Start()
  • {
  •     SDA = 1;
  •     SCL = 1;
  •     Delay5us();
  •     SDA = 0;
  •     Delay5us();
  •     SCL = 0;
  • }
  • //**************************************
  • //I2C停止信號(hào)
  • //**************************************
  • void I2C_Stop()
  • {
  •     SDA = 0;
  •     SCL = 1;
  •     Delay5us();
  •     SDA = 1;
  •     Delay5us();
  • }
  • //**************************************
  • //I2C發(fā)送應(yīng)答信號(hào)
  • //入口參數(shù):ack (0:ACK 1:NAK)
  • //**************************************
  • void I2C_SendACK(bit ack)
  • {
  •     SDA = ack;
  •     SCL = 1;
  •     Delay5us();
  •     SCL = 0;
  •     Delay5us();
  • }
  • //**************************************
  • //I2C接收應(yīng)答信號(hào)
  • //**************************************
  • bit I2C_RecvACK()
  • {
  •     SCL = 1;
  •     Delay5us();
  •     CY = SDA;
  •     SCL = 0;
  •     Delay5us();
  •     return CY;
  • }
  • //**************************************
  • //向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)
  • //**************************************
  • void I2C_SendByte(uchar dat)
  • {
  •     uchar i;
  •     for (i=0; i<8; i++)
  •     {
  •         dat <<= 1;
  •         SDA = CY;
  •         SCL = 1;
  •         Delay5us();
  •         SCL = 0;
  •         Delay5us();
  •     }
  •     I2C_RecvACK();
  • }
  • //**************************************
  • //從I2C總線接收一個(gè)字節(jié)數(shù)據(jù)
  • //**************************************
  • uchar I2C_RecvByte()
  • {
  •     uchar i;
  •     uchar dat = 0;
  •     SDA = 1;
  •     for (i=0; i<8; i++)
  •     {
  •         dat <<= 1;
  •         SCL = 1;
  •         Delay5us();
  •         dat |= SDA;
  •         SCL = 0;
  •         Delay5us();
  •     }
  •     return dat;
  • }
  • //**************************************
  • //向I2C設(shè)備寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)
  • //**************************************
  • void Single_WriteI2C(uchar REG_Address,uchar REG_data)
  • {
  •     I2C_Start();
  •     I2C_SendByte(SlaveAddress);
  •     I2C_SendByte(REG_Address);
  •     I2C_SendByte(REG_data);
  •     I2C_Stop();
  • }
  • //**************************************
  • //從I2C設(shè)備讀取一個(gè)字節(jié)數(shù)據(jù)
  • //**************************************
  • uchar Single_ReadI2C(uchar REG_Address)
  • {
  •         uchar REG_data;
  •         I2C_Start();
  •         I2C_SendByte(SlaveAddress);
  •         I2C_SendByte(REG_Address);
  •         I2C_Start();
  •         I2C_SendByte(SlaveAddress+1);
  •         REG_data=I2C_RecvByte();
  •         I2C_SendACK(1);
  •         I2C_Stop();
  •         return REG_data;
  • }
  • //**************************************
  • //初始化MPU6050
  • //**************************************
  • void InitMPU6050()
  • {
  •         Single_WriteI2C(PWR_MGMT_1, 0x00);
  •         Single_WriteI2C(SMPLRT_DIV, 0x07);
  •         Single_WriteI2C(CONFIG, 0x06);
  •         Single_WriteI2C(GYRO_CONFIG, 0x18);
  •         Single_WriteI2C(ACCEL_CONFIG, 0x19);
  • }
  • //**************************************
  • //合成數(shù)據(jù)
  • //**************************************
  • int GetData(uchar REG_Address)
  • {
  •         char H,L;
  •         H=Single_ReadI2C(REG_Address);
  •         L=Single_ReadI2C(REG_Address+1);
  •         return (H<<8)+L;
  • }
  • void dealdate()
  • {
  •         int a;
  •         a=GetData(ACCEL_ZOUT_H);
  •         a=a/2;
  •         if(a>=0)
  •         {
  •                 deal[7]=0x00;
  •                 deal[5]=smgduan[a/100000];
  •                 deal[4]=smgduan[a%100000/10000];
  •                 deal[3]=smgduan[a%10000/1000];
  •                 deal[2]=smgduan[a%1000/100]|0x80;
  •                 deal[1]=smgduan[a%100/10];
  •                 deal[0]=smgduan[a%10];
  •         }
  •         else
  •         {
  •                 a=a-1;
  •                 a=~a;
  •                 deal[7]=0x40;
  •                 deal[5]=smgduan[a/100000];
  •                 deal[4]=smgduan[a%100000/10000];
  •                 deal[3]=smgduan[a%10000/1000];
  •                 deal[2]=smgduan[a%1000/100]|0x80;
  •                 deal[1]=smgduan[a%100/10];
  •                 deal[0]=smgduan[a%10];
  •         }
  • }
  • void main()
  • {
  •         uint k;
  •         delay(500);
  •         InitMPU6050();        //初始化MPU6050
  •         delay(150);
  •         dealdate();
  •         while(1)
  •         {
  •                 k++;
  •                 if(k>=15)
  •                 {
  •                         dealdate();
  •                         k=0;
  •                 }
  •                 DigDisplay();
  •         }
  • }

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产综合久久福利软件 | 久久久久久国产精品免费免费 | 天天操网 | 国产精品久久国产愉拍 | 精品久久网 | 久久久性色精品国产免费观看 | 99精品免费久久久久久久久日本 | 综合久久99 | 亚洲精品久久久久久一区二区 | 一级黄色毛片免费 | 亚洲欧美日韩在线不卡 | 最新中文字幕在线 | 欧美性久久 | 国产精品黄色 | 亚洲久久一区 | 精品国产女人 | 久久综合伊人 | 色综合久| 成人九色 | 成人精品网 | 国产精品免费在线 | 欧美毛片免费观看 | 国产高清在线精品 | 亚洲视频在线播放 | 超碰在线免费av | 亚洲高清av| 黄色网页在线观看 | 国产99视频精品免视看9 | 成人免费一区二区三区牛牛 | 精品亚洲一区二区 | 国产激情一区二区三区 | 国产精品亚洲一区二区三区在线观看 | 国产欧美在线视频 | 精品国产91| 亚洲精品一区在线观看 | 久久九九免费 | 在线看一区二区 | 亚洲不卡在线观看 | 日本一区二区三区四区 | 久久精品国产一区老色匹 | 久久精品91久久久久久再现 |