传感器实验报告(第五次)

7.8光照传感器采集实验

一、实验目的

  1. 掌握光照传感器的操作方法;
  2. 掌握光照传感器采集程序的编程方法。

二、实验内容

  1. 在IAR集成开发环境中编写光照传感器采集程序。

三、基础知识

  采用 GL7516 光敏电阻进行光照强度的检测。光敏电阻式一种半导体材料制成的电阻,其电导率随着 光照度的变化而变化。利用这一特性可以制成不同形状和受光面积的光敏电阻。GL7516 就是其中的一种, 光越强阻值越大。光敏电阻广泛应用于玩具、灯具、照相机等行业。

四、实验代码

#include "ioCC2530.h" 
#define uint8 unsigned char 
#define uint16 unsigned int
#define uint32 unsigned long
extern void Sensor_PIN_INT(void);
extern uint16 ReadAdcValue(uint8 ChannelNum,uint8 DecimationRate,uint8 RefVoltage);
char uart_buffer;

void delay(void)
{
    unsigned int i;
    unsigned char j;

    for(i=0;i<1500;i++)
    {
        for(j=0;j<200;j++)
        {
            asm("NOP");
            asm("NOP");
            asm("NOP");
        }
    }
} 

void UartTX_Send_String(unsigned char *Data,int len)   //串口发送函数
{
    int j;
    for(j=0;j<len;j++)
    {
        U0DBUF = *Data++;   
        while(UTX0IF == 0);
        UTX0IF = 0;
    }
}

void UartTX_Send_Data(unsigned char Data,int len)   //串口发送函数
{
    int j;
    for(j=0;j<len;j++)
    {
        U0DBUF = Data;   
        while(UTX0IF == 0);
        UTX0IF = 0;
    }
}

#pragma vector=URX0_VECTOR //uart0中断函数
__interrupt void uart0(void){
    URX0IF = 0; //清中断标志
    P0_0=~P0_0;
    uart_buffer = U0DBUF;
    //UartTX_Send_String("welcome",10);
    UartTX_Send_Data(uart_buffer,1);
}

void main( void )
{
    unsigned char buf[8];
    uint16 temp;
    P0DIR |= 0x01;  //设置P0.0为输出方式;P0.4和P0.5为输入方式
    APCFG = (0x1<<1)|(0x1<<4)|(0x1<<6);//P01,P04,P06为ADC口 

    P2DIR |= 0x01;  //设置P2.0为输出方式
    P0_0 = 1; 
    P2_0 = 1;       //熄灭LED
    CLKCONCMD &= ~0x40;          //选择32M晶振
    while(!(SLEEPSTA & 0x40));   //等待XSOC稳定
    CLKCONCMD = 0xb8;            //TICHSPD 128分频,CLKSPD 不分频
    SLEEPCMD |= 0x04;            //关闭不用的RC 振荡器
    PERCFG = 0x00;               //位置1 P0 口
    P0SEL = 0x3c;                //P0 用作串口
    U0CSR |= 0x80;               //UART 方式
    U0GCR |= 10;                 //baud_e = 10;
    U0BAUD |= 216;               //波特率设为57600
    UTX0IF = 1;
    U0CSR |= 0X40;               //允许接收
    IEN0 |= 0x84;                //开总中断,接收中断 
    Sensor_PIN_INT();

    UartTX_Send_String("Testing...\r\n",12);
    while(1){               
        P2_0=~P2_0;              
        temp = ReadAdcValue(4,3,0x2);//P0.4采集光照度,12bit,AVDD5作为参考
        temp = (temp>>4);   
        buf[0] = (uint8)(temp&0xff);
        buf[1] = (buf[0]>>4)&0xf;
        buf[2] =  buf[0]&0xf;
        if(buf[1] > 0x9)
            buf[1] = buf[1] - 0XA + 'A';
    else
        buf[1] = buf[1] + '0';
        if(buf[2] > 0x9)
            buf[2] = buf[2] - 0XA + 'A';
    else
        buf[2] = buf[2] + '0';
    UartTX_Send_String("LIGHT = ",8);
        UartTX_Send_String(&buf[1],1);
        UartTX_Send_String(&buf[2],1);
    UartTX_Send_String("\r\n",2);   

        delay();
    }
} // end of main()

五、实验现象

烧写程序后,复位。可看到随着光线的变化,从串口精灵可看出数值的改变。

7.9 人体感应传感器采集实验

一、实验目的

  1. 掌握人体感应传感器的操作方法;
  2. 掌握人体感应传感器采集程序的编程方法。

二、实验内容

  1. 在 IAR 集成开发环境中编写人体感应传感器采集程序。

三、基础知识

  1. 人体感应传感器介绍 采用基于人体热释传感原理的人体感应传感器模块。开关信号输出,当有人靠近时,输出高电平,无人靠近时输出低电平。
  2. 接口电路如下:

四、实验代码

#include "ioCC2530.h" 

void delay(void)      //延时时间约10ms
{
  unsigned int i;
  unsigned char j;

  for(i=0;i<1500;i++)
  {
    for(j=0;j<20;j++)
    {
      asm("NOP");
    }
  }
} 

void main( void )
{
  P0DIR |= 0x01;  //设置P0.0为输出方式;P0.4,P0.5为输入方式
  P2DIR |= 0x01;  //设置P2.0为输出方式
  P0_0 = 1; 
  P2_0 = 1;   //熄灭LED
  while(1)
  {
      if(P0_5 == 1){//OUT=1,人体感应LED亮,存在人体感应 
          P0_0 = 0;//底板上的D2 LED灯亮
          P2_0 = 0;//底板上的D3 LED灯亮 
      }
      else{
          P0_0 = 1;//底板上的D2 LED灯灭
          P2_0 = 1;//底板上的D3 LED灯灭 
      }
      delay();
  }
} // end of main()


五、实验现象

烧写程序后,复位。如果人体靠近该传感器,底版上的小灯就会点亮。如果离开,则熄灭。

7.10 震动传感器采集实验

一、实验目的

  1. 掌握震动传感器的操作方法;
  2. 掌握震动传感器采集程序的编程方法。

二、实验内容

  1. 在 IAR 集成开发环境中编写震动传感器采集程序。

三、基础知识

  1. 震动传感器介绍 常用的振动传感器分为以下几个类型:压电/驻极体/电磁型、弹簧型、机械接触型等等。本系统采用CLA-3 全向振动传感器,CLA-3 微型全向振动传感器是一种采用新型高灵敏度传感膜而设计的全向振动传 感器,具有全向检测、灵敏度可调、高抗干扰能力、产品一致性和互换性好、体积小、可靠性高、价格低 等特点。
    接口电路如下:
    传感器实验报告(第五次)_第1张图片

四、实验代码

#include "ioCC2530.h" 

void delay(void)      //延时时间约10ms
{
  unsigned int i;
  unsigned char j;

  for(i=0;i<1500;i++)
  {
    for(j=0;j<20;j++)
    {
      asm("NOP");
    }
  }
} 

void main( void )
{ 
    P0DIR |=0X01; 
    P1DIR |=0X00;
    P2DIR |=0X01;
  while(1)
  {
      if(P1_3 == 1){//振动时灯亮
          P0_0 = 0;//底板上的D2 LED灯亮
          P2_0 = 0;//底板上的D3 LED灯亮 
      }
      else{//无振动时灯灭
          P0_0 = 1;//底板上的D2 LED灯灭
          P2_0 = 1;//底板上的D3 LED灯灭 
      }
      delay();
  }
} // end of main()


五、实验现象

烧写程序后,复位。振动电路板,小灯会亮。若停止振动则熄灭。

你可能感兴趣的:(传感器)