《ZigBee开发笔记》第五部分 外设篇 - 基础实验 第4章 CC2530热释电红外传感器

2019-04-13 15:03发布

1理论分析

HC-SR501人体红外感应模块 是基于红外线技术的自动控制产品。灵敏度高、可靠性强、超低功耗,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

2实验详解

2.1实验目的

1)、通过实验掌握CC2530 芯片GPIO 的配置方法
2)、掌握红外传感器的使用

2.2实验设备

硬件:PC 机一台 ;ZB2530(底板、核心板、仿真器、USB 线) 一套 ;红外传感器一个
软件:win7 系统,IAR 8.20 集成开发环境

2.3实验相关电路图

这里写图片描述
图1
接线方式:
接线方式(实验是接到J10 上):
1)、VCC:接电源正极(5V)
2)、OUT:检测引脚
3)、GND:接电源负极

2.4实验相关寄存器

实验中使用P0_6 做为检测引脚,当浓度高于设定值时,P0_6 为低电平,平时正常状态时 为高电平。DO 输出电平和厂家有关,请参考具体模块的参数。相关寄存器如下:
表1 端口0的功能选择
这里写图片描述
表2 端口0的方向
这里写图片描述 配置P0_6 的方法:
P0DIR &= ~0x40; //配置与MQ-2 连接的P0.6 为输入口
#define DATA_PIN P0_6 //定义P0.6 口为传感器的输入端

2.5参考代码

/**Includes*********************************************************************/ #include /**宏定义***********************************************************************/ //定义数据类型 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。

本章参考代码

点击进入