|
1. 實(shí)驗(yàn)?zāi)康?
(1)通過(guò)實(shí)驗(yàn)掌握 CC2530 芯片 GPIO 的配置方法
(2)掌握 HC-SR501 人體感應(yīng)模塊的使用
2. 實(shí)驗(yàn)設(shè)備
硬件:PC 機(jī)
一臺(tái)
EB2530(底板、核心板、仿真器、USB 線)
一套
人體紅外傳感器
一個(gè)
有源蜂鳴器
一個(gè)
軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開(kāi)發(fā)環(huán)
4. 傳感器說(shuō)明
PIR 熱釋電紅外傳感器是一種能檢測(cè)人或動(dòng)物發(fā)射的紅外線而輸出電信號(hào)的傳感器。調(diào)試時(shí)人體盡量
遠(yuǎn)離感應(yīng)區(qū)域,有時(shí)雖然人體不在模塊的正前方,但是人體離模塊太近時(shí)模塊也能感應(yīng)到造成一直有輸出,
還有調(diào)試時(shí)人體不要觸摸電路部分也會(huì)影響模塊工作。人體感應(yīng)模塊只能工作在室內(nèi)并且工作環(huán)境應(yīng)該避
免陽(yáng)光、強(qiáng)烈燈光直接照射
溫故
1. 實(shí)驗(yàn)?zāi)康?(1)通過(guò)實(shí)驗(yàn)掌握 CC2530 芯片 GPIO 的配置方法 (2)掌握 HC-SR501 人體感應(yīng)模塊的使用 2. 實(shí)驗(yàn)設(shè)備 硬件:PC 機(jī) 一臺(tái) EB2530(底板、核心板、仿真器、USB 線) 一套 人體紅外傳感器 一個(gè) 有源蜂鳴器 一個(gè) 軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開(kāi)發(fā)環(huán)境 3. 實(shí)驗(yàn)相關(guān)電路圖
溫故
5. 實(shí)驗(yàn)相關(guān)寄存器 實(shí)驗(yàn)中使用 P0_4 作為檢測(cè)引腳, 人進(jìn)入其感應(yīng)范圍模塊輸出高電平,點(diǎn)亮 LED1,人離開(kāi)感應(yīng)范圍 LED1 熄滅,P0.4 口為 HC-SR501 傳感器的輸入端。具體 HC-SR501 人體感應(yīng)模塊 OUT 輸出電平由模塊決 定,不同廠家可能不一樣,不一樣關(guān)系也不大,改動(dòng)非常的小。
6. 源碼分析
/****************************************************************************
* 文 件 名: main.c
* 描
述: 人進(jìn)入其感應(yīng)范圍模塊輸出高電平,點(diǎn)亮 LED1,人離開(kāi)感應(yīng)范圍 LED1 熄滅,
*
P0.4 口為 HC-SR501 傳感器的輸入端
****************************************************************************/
#include <ioCC2530.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1
P1_0
//定義 P1.0 口為 LED1 控制端
#define DATA_PIN P0_4
//定義 P0.4 口為傳感器的輸入端
#define uint8 unsigned char
/****************************************************************************
* 名
稱: DelayMS()
* 功
能: 以毫秒為單位延時(shí) 16M 時(shí)約為 535,系統(tǒng)時(shí)鐘不修改默認(rèn)為 16M
* 入口參數(shù): msec 延時(shí)參數(shù),值越大,延時(shí)越久
* 出口參數(shù): 無(wú)
****************************************************************************/
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
/****************************************************************************
* 名
稱: InitGpio()
* 功
能: 設(shè)置 LED 燈和 P0.4 相應(yīng)的 IO 口
* 入口參數(shù): 無(wú)
* 出口參數(shù): 無(wú)
****************************************************************************/
void InitLed(void)
{
P1DIR |= 0x01;
//P1.0 定義為輸出口
P0SEL = 0x00;
P0DIR &= ~0x10;
//P0.4 定義為輸入口
P2INP |= 0x20;
P0DIR |= 0x80;
//蜂鳴器引腳
}//檢測(cè)人體傳感器是否有人
//人體傳感器接在 P04 上
//一旦檢測(cè)到有人,10 次檢測(cè)內(nèi)都認(rèn)為有人
//返回 1 表示有人,0 表示無(wú)人
uint8 GetPeople()
{
static uint8 peopleSencond=0;
uint8 people=0;
if(DATA_PIN==1)
{
peopleSencond=10;//一旦檢測(cè)到有人,10 次檢測(cè)內(nèi)都認(rèn)為有人
people=1;//檢測(cè)到有人
}
else
{
if(peopleSencond>0)
{
peopleSencond--;
people=1;//倒計(jì)時(shí)結(jié)束前都認(rèn)為有人
}
else
{
peopleSencond=0;
people=0;//沒(méi)有人
}
}
return people;
}
void main(void)
{
InitLed();
//設(shè)置 LED 燈和 P0.4 相應(yīng)的 IO 口
while(1)
//無(wú)限循環(huán)
{
if(GetPeople() == 1)
{
LED1 = 0;
//有人時(shí) LED1 亮
P0_7=0; //有人的時(shí)候,蜂鳴器報(bào)警,方便驗(yàn)證
}
else
{
LED1=1;
//無(wú)人時(shí) LED1 熄滅
P0_7=1;
//無(wú)人的時(shí)候,蜂鳴器不報(bào)警,方便驗(yàn)
}
DelayMS(500);
}
|
評(píng)分
-
查看全部評(píng)分
|