色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

聚豐項目 > 室內氣體綜合檢測系統

室內氣體綜合檢測系統

近年來,新房裝修是每個家庭的大事,新房裝修后許多氣體如甲烷等依然存在,威脅著人們的安全。我們實驗室擬用氣體傳感器套件來完成室內氣體檢測,以測試新房是否達到入住標準。

cooooooooo2 cooooooooo2

分享
0 喜歡這個項目
團隊介紹

cooooooooo2 cooooooooo2

團隊成員

梁宇 隊長

分享
項目簡介
近年來,新房裝修是每個家庭的大事,新房裝修后許多氣體如甲烷等依然存在,威脅著人們的安全。我們實驗室擬用氣體傳感器套件來完成室內氣體檢測,以測試新房是否達到入住標準。
硬件說明

CC2530+ IDT 氣體傳感器+SIM800C上傳中國移動ONENET平臺

軟件說明

/**************************************/

/*                        */

/*           Zigbee                   */

/*例程名稱:                          */

/*建立時間:2018/5/18                 */

/*描述:   驅動函數

**************************************/

#include

#include "type.h"

#include"GAS.h"

int accX,accY,accZ,graX,graY,graZ;

static void mma_Delay5us(void);

static void GAS_Start(void);

static void GAS_Stop(void);

static void GAS_SendACK(char ack);

static char GAS_RecvACK(void);

static void GAS_SendByte(unsigned char dat);

static unsigned char GAS_RecvByte(void);

static void Single_Write_GAS(unsigned char REG_Address,unsigned char REG_data);

unsigned char Single_Read_GAS(unsigned char REG_Address);



/**************************************

延時5微秒

**************************************/

static void mma_Delay5us(void)//uint16 microSecs)

{

  uint8 microSecs = 5;

  while(microSecs--)            

  {

    /* 32 NOPs == 1 usecs */

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");

    asm("nop"); asm("nop");

  

  }

}


/**************************************

起始信號

**************************************/

static void GAS_Start()

{

  SDA = 1;                    //拉高數據線

  SCL = 1;                    //拉高時鐘線

  mma_Delay5us();                 

  SDA = 0;                    //產生下降沿

  mma_Delay5us();             //延時

  SCL = 0;                    //拉低時鐘線

  mma_Delay5us();         

}


/**************************************

停止信號

**************************************/

static void GAS_Stop()

{

  SDA = 0;                    //拉低數據線

  SCL = 1;                    //拉高時鐘線

  mma_Delay5us();                 //延時

  SDA = 1;                    //產生上升沿

  mma_Delay5us();                 //延時

}


/**************************************

發送應答信號

入口參數:ack (0:ACK 1:NAK)

**************************************/

static void GAS_SendACK(char ack)

{

  SDA = ack;                  //寫應答信號

  SCL = 1;                    //拉高時鐘線

  mma_Delay5us();                 //延時

  SCL = 0;                    //拉低時鐘線

  mma_Delay5us();                 //延時

}


/**************************************

接收應答信號

**************************************/

static char GAS_RecvACK()

{

  SCL = 1;                    //拉高時鐘線

  mma_Delay5us();            

  SDA_IN();

  CY = SDA;                   //讀應答信號

  SDA_OUT();

  SCL = 0;                    //拉低時鐘線

  mma_Delay5us();                 //延時


  return CY;

}


/**************************************

向IIC總線發送一個字節數據

**************************************/

static void GAS_SendByte(unsigned char dat)

{

  unsigned char i;

  

  for (i=0; i<8; i++)         //8位計數器

  {

    dat <<= 1;              //移出數據的最高位

    SDA = CY;               //送數據口

    SCL = 1;                //拉高時鐘線

    mma_Delay5us();             //延時

    SCL = 0;                //拉低時鐘線

    mma_Delay5us();             //延時

  }

  GAS_RecvACK();

}


/**************************************

從IIC總線接收一個字節數據

**************************************/

static unsigned char GAS_RecvByte()

{

  unsigned char i;

  unsigned char dat = 0;

  

  SDA = 1;                    //使能內部上拉,準備讀取數據,

  for (i=0; i<8; i++)         //8位計數器

  {

    dat <<= 1;

    SCL = 1;                //拉高時鐘線

    mma_Delay5us();             //延時

    SDA_IN();

    dat |= SDA;             //讀數據  

    SDA_OUT();

    SCL = 0;                //拉低時鐘線

    mma_Delay5us();             //延時

  }

  return dat;

}


//******單字節寫入*******************************************

static void Single_Write_GAS(unsigned char REG_Address,unsigned char REG_data)

{

  GAS_Start();                  //起始信號

  GAS_SendByte(SlaveAddress);   //發送設備地址+寫信號

  GAS_SendByte(REG_Address);    //內部寄存器地址

  GAS_SendByte(REG_data);       //內部寄存器數據

  GAS_Stop();                   //發送停止信號

}


//********單字節讀取*****************************************


unsigned char Single_Read_GAS(unsigned char REG_Address)

{  

  unsigned char REG_data;

  GAS_Start();                          //起始信號

  GAS_SendByte(SlaveAddress);           //發送設備地址+寫信號

  GAS_SendByte(REG_Address);            //發送存儲單元地址,從0開始

  GAS_Start();                          //起始信號

  GAS_SendByte(SlaveAddress+1);         //發送設備地址+讀信號

  REG_data=GAS_RecvByte();              //讀出寄存器數據

  GAS_SendACK(1);   

  GAS_Stop();                           //停止信號

  return REG_data; 

}



//*****************************************************************

//                        初始化GAS

//*****************************************************************

void Init_GAS(void)

{

  P1SEL &= ~0xc0; //作為普通 IO 口

  SDA_OUT();

  SCL_OUT(); 

  Single_Write_GAS(PWR_MGMT_1, 0x00);//電源管理,典型值:0x00(正常啟用)

  Single_Write_GAS(SMPLRT_DIV, 0x07);

  Single_Write_GAS(CONFIG, 0x06);

  Single_Write_GAS(GYRO_CONFIG, 0x18);

  Single_Write_GAS(ACCEL_CONFIG, 0x01); 

}

//*********************************************************

//

//連續讀出GAS內部數據

//

//*********************************************************

void Multiple_read_GAS(void)

{   

  char BUF[12]; //接收數據緩存區  

  BUF[0]=Single_Read_GAS(ACCEL_XOUT_H);

  BUF[1]=Single_Read_GAS(ACCEL_XOUT_L);

  BUF[2]=Single_Read_GAS(ACCEL_YOUT_H);

  BUF[3]=Single_Read_GAS(ACCEL_YOUT_L);

  BUF[4]=Single_Read_GAS(ACCEL_ZOUT_H);

  BUF[5]=Single_Read_GAS(ACCEL_ZOUT_L);

  

  BUF[6]=Single_Read_GAS(GYRO_XOUT_H);

  BUF[7]=Single_Read_GAS(GYRO_XOUT_L);

  BUF[8]=Single_Read_GAS(GYRO_YOUT_H);

  BUF[9]=Single_Read_GAS(GYRO_YOUT_L);

  BUF[10]=Single_Read_GAS(GYRO_ZOUT_H);

  BUF[11]=Single_Read_GAS(GYRO_ZOUT_L);

  

  accX=(BUF[0]<<8)|BUF[1]; 

  accY=(BUF[2]<<8)|BUF[3]; 

  accZ=(BUF[4]<<8)|BUF[5]; 

  graX=(BUF[6]<<8)|BUF[7];

  graY=(BUF[8]<<8)|BUF[9];

  graZ=(BUF[10]<<8)|BUF[11];

}


演示效果

沒有錄制視頻(由于驅動調試沒有完成,只完成了組網部分,模擬IIC還是沒有搞清楚問題出在了哪里,又趕上期末考試投入精力又不夠,所以沒有全部完成。)

評論區(0 )
主站蜘蛛池模板: 动漫成年美女黄漫网站 | 无码人妻丰满熟妇区五十路久久 | 菠萝菠萝蜜在线观看视频 | 人妻超级精品碰碰在线97视频 | xxx日本黄色 | AV97最新无码喷水叫床 | 夜夜澡人人爽人人喊_欧美 夜夜骑夜夜欢 | 久久婷五月综合色啪网 | 亚洲国产AV精品卡一卡二 | 国产精品69人妻无码久久 | 经典三级四虎在线观看 | 第一次处破女完整版电影 | 国产免费不卡 | 男人插曲女人下生免费大全 | 成人免费一区二区无码视频 | 亚洲高清国产拍精品动图 | 国产亚洲999精品AA片在线爽 | 四虎影院2022 | 成人在线视频免费观看 | 欧美日韩一区不卡在线观看 | 久久久96人妻无码精品蜜桃 | 亚洲成人综合在线 | 亚洲 综合 欧美在线视频 | 我在厨房摸岳的乳HD在线观看 | 国产在线播放91 | 中文中幕无码亚洲视频 | 国产成人免费手机在线观看视频 | 中文在线观看免费网站 | 亚洲AV久久无码精品九号 | 果冻传媒在线观看进入窗口 | 捆绑调教网站 | 色爱区综合激情五月综合激情 | 亚洲高清在线天堂精品 | 边摸边吃奶边做激情叫床视 | 国产日韩久久久精品影院首页 | 亚洲中文字幕永久在线全国 | 野花视频在线观看免费最新动漫 | 97人摸人人澡人人人超一碰 | 99影视久久电影网久久看影院 | 欧美日韩中文字幕综合图区 | 高h乱np甄宓 |