1理论分析
HC-SR501人体红外感应模块 是基于红外线技术的自动控制产品。灵敏度高、可靠性强、超低功耗,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
2实验详解
2.1实验目的
1)、通过实验掌握CC2530 芯片GPIO 的配置方法
2)、掌握红外传感器的使用
2.2实验设备
硬件:PC 机一台 ;ZB2530(底板、核心板、仿真器、USB 线) 一套 ;红外传感器一个
软件:win7 系统,IAR 8.20 集成开发环境
2.3实验相关电路图
接线方式:
接线方式(实验是接到J10 上):
1)、VCC:接电源正极(5V)
2)、OUT:检测引脚
3)、GND:接电源负极
2.4实验相关寄存器
实验中使用P0_6 做为检测引脚,当浓度高于设定值时,P0_6 为低电平,平时正常状态时 为高电平。DO 输出电平和厂家有关,请参考具体模块的参数。相关寄存器如下:
配置P0_6 的方法:
P0DIR &= ~0x40; //配置与MQ-2 连接的P0.6 为输入口
#define DATA_PIN P0_6 //定义P0.6 口为传感器的输入端
2.5参考代码
/**Includes*********************************************************************/
#include <ioCC2530.h>
/**宏定义***********************************************************************/
//定义数据类型
typedef unsigned char uchar;
typedef unsigned int uint;
//定义端口
#define LED1 P1_0 //定义P1.0口为LED1控制端
#define DATA_PIN P0_6 //定义P0.6口为传感器的输入端
/**函数声明*********************************************************************/
void DelayMS(uint msec);
void InitLed(void);
/**
* @brief 主函数
* @param None
* @retval None
*/
void main(void)
{
InitLed(); //设置LED灯和P0.6相应的IO口
while(1) //无限循环
{
if(DATA_PIN == 1)
{
DelayMS(10);
if(DATA_PIN == 1)
{
LED1 = 0; //有人时LED1亮
}
}
else
LED1=1; //无人时LED1熄灭
}
}
/**
* @brief 以毫秒为单位延时 16M时约为535,系统时钟不修改默认为16M
* @param msec 延时参数,值越大,延时越久
* @retval None
*/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
/**
* @brief 设置LED灯和P0.4相应的IO口
* @param None
* @retval None
*/
void InitLed(void)
{
P1DIR |= 0x01; //P1.0定义为输出口
P0SEL = 0x00;
P0DIR &= ~0x40; //P0.6定义为输入口
P2INP |= 0x20;
}
2.6实验现象
人进入其感应范围模块输出高电平,点亮 LED1,人离开感应范围 LED1。