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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個(gè)MPU6050單片機(jī)程序如何修改為跌倒報(bào)警?

[復(fù)制鏈接]
ID:774259 發(fā)表于 2020-6-27 15:56 | 顯示全部樓層 |閱讀模式
25黑幣
幫忙把以下程序修改為一個(gè)用52單片機(jī)和MPU6050加蜂鳴器報(bào)警的跌倒報(bào)警裝置


#include <regc.51.h>      
#include <math.h>    //Keil library  
#include <stdio.h>   //Keil library
#include <INTRINS.H>
typedef unsigned char  uchar;
typedef unsigned short ushort;
typedef unsigned int   uint;
sbit SCL=P1^0;  
sbit SDA=P1^1;   
sbit led1=P2^7;
sbit led2=P2^6;
#define SMPLRT_DIV  0x19
#define CONFIG   0x1A
#define GYRO_CONFIG  0x1B
#define ACCEL_CONFIG 0x1C
#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
#define WHO_AM_I  0x75
#define SlaveAddress 0xD0
uchar dis[4];      
int dis_data;     
int Acc_X;     
int Acc_Y;
int Acc_Z;
int Gyr_X;  
int Gyr_Y;
int Gyr_Z;
void  delay(unsigned int k);         
//MPU6050????
void  InitMPU6050();            
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);     
void  Single_WriteI2C(uchar REG_Address,uchar REG_data);
void lcd_printf(uchar *s,int temp_data)
{
if(temp_data<0)
{
  temp_data=-temp_data;
  *s='-';
}
else *s=' ';
*++s =temp_data/100+0x30;
temp_data=temp_data%100;     
*++s =temp_data/10+0x30;
temp_data=temp_data%10;      
*++s =temp_data+0x30;  
}
void delay(unsigned int k)
{      
unsigned int i,j;   
for(i=0;i<k;i++)
{   
  for(j=0;j<121;j++);
}      
}
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_();
}
void I2C_Start()
{
    SDA = 1;                  
    SCL = 1;               
    Delay5us();               
    SDA = 0;   
    Delay5us();                 
    SCL = 0;                  
}
void I2C_Stop()
{
    SDA = 0;                  
    SCL = 1;                  
    Delay5us();                 
    SDA = 1;                  
    Delay5us();               
}
void I2C_SendACK(bit ack)
{
    SDA = ack;                  
    SCL = 1;                  
    Delay5us();               
    SCL = 0;               
    Delay5us();               
}
bit I2C_RecvACK()
{
    SCL = 1;               
    Delay5us();            
    CY = SDA;               
    SCL = 0;            
    Delay5us();            
    return CY;
}
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();
}
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;
}
void Single_WriteI2C(uchar REG_Address,uchar REG_data)
{
    I2C_Start();                 
    I2C_SendByte(SlaveAddress);  
    I2C_SendByte(REG_Address);   
    I2C_SendByte(REG_data);      
    I2C_Stop();                  
}
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;
}
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, 0x01);
}
int GetData(uchar REG_Address)
{
char H,L;
H=Single_ReadI2C(REG_Address);
L=Single_ReadI2C(REG_Address+1);
return (H<<8)+L;  
}
void shuju()
{
Acc_X=GetData(ACCEL_XOUT_H);
Acc_Y=GetData(ACCEL_YOUT_H);
Acc_Z=GetData(ACCEL_ZOUT_H);
Gyr_X=GetData(GYRO_XOUT_H);  
Gyr_Y=GetData(GYRO_YOUT_H);  
Gyr_Z=GetData(GYRO_ZOUT_H);  
}
short ADXL345_Get_Angle(float x , float y , float z , uchar dir)
{
    float temp;
    float res=0;
    switch(dir)
    {
        case 0:
            temp=sqrt((x*x+y*y))/z;
            res=atan(temp);
            break;
        case 1:
            temp=x/sqrt((y*y+z*z));
            res=atan(temp);
            break;
        case 2:
            temp=y/sqrt((x*x+z*z));
            res=atan(temp);
            break;
    }
    return res*180/3.14;
}
void main()
{
delay(500);   
InitMPU6050();
while(1)
{
  shuju();
  if(3>ADXL345_Get_Angle(Acc_X,Acc_Y,Acc_Z,1)>-3)
  {
   led1=0;
   led2=0;
  }
  if(ADXL345_Get_Angle(Acc_X,Acc_Y,Acc_Z,1)<=-3)
  {
   led1=1;
   led2=0;
  }
  if(ADXL345_Get_Angle(Acc_X,Acc_Y,Acc_Z,1)>=3)
  {
   led1=0;
   led2=1;
  }

}
  
}


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本午夜免费福利视频 | 97碰碰碰 | 亚洲精品国产成人 | 国产精品九九九 | 国产精品久久毛片av大全日韩 | 欧美精品在线免费 | 亚洲天堂中文字幕 | 国产精品高潮呻吟久久 | 日韩欧美在线一区 | 久久成人18免费网站 | 国产激情第一页 | 国产精品s色 | 99re在线视频 | 亚洲一区二区三区免费视频 | 欧美猛交 | 综合久久久 | 草久久久 | 久久黄色网| 国产精品久久性 | 欧美一区二区久久 | www久久爱| 久久国内精品 | 6080亚洲精品一区二区 | 国产丝袜一区二区三区免费视频 | 青青草华人在线视频 | 久久99网站 | 99视频免费播放 | 国产视频精品在线 | 久久久青草婷婷精品综合日韩 | 97精品超碰一区二区三区 | 久久狠狠 | 欧美性受xxxx | 一本一道久久a久久精品蜜桃 | 91欧美精品成人综合在线观看 | 中文字幕乱码一区二区三区 | 精品国产一区二区三区免费 | 日韩成人 | 成人av在线大片 | 久久久久一区 | 国产精品久久av | 亚洲狠狠|