找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1821|回復(fù): 0
收起左側(cè)

單片機(jī)驅(qū)動人體紅外傳感器源碼分析

[復(fù)制鏈接]
ID:835881 發(fā)表于 2022-1-1 21:24 | 顯示全部樓層 |閱讀模式
1. 實(shí)驗?zāi)康?
(1)通過實(shí)驗掌握 CC2530 芯片 GPIO 的配置方法
(2)掌握 HC-SR501 人體感應(yīng)模塊的使用
2. 實(shí)驗設(shè)備
硬件:PC 機(jī)
一臺
EB2530(底板、核心板、仿真器、USB 線)
一套
人體紅外傳感器
一個
有源蜂鳴器
一個
軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開發(fā)環(huán)
4. 傳感器說明
PIR 熱釋電紅外傳感器是一種能檢測人或動物發(fā)射的紅外線而輸出電信號的傳感器。調(diào)試時人體盡量
遠(yuǎn)離感應(yīng)區(qū)域,有時雖然人體不在模塊的正前方,但是人體離模塊太近時模塊也能感應(yīng)到造成一直有輸出,
還有調(diào)試時人體不要觸摸電路部分也會影響模塊工作。人體感應(yīng)模塊只能工作在室內(nèi)并且工作環(huán)境應(yīng)該避
免陽光、強(qiáng)烈燈光直接照射

溫故

1. 實(shí)驗?zāi)康?(1)通過實(shí)驗掌握 CC2530 芯片 GPIO 的配置方法 (2)掌握 HC-SR501 人體感應(yīng)模塊的使用 2. 實(shí)驗設(shè)備 硬件:PC 機(jī) 一臺 EB2530(底板、核心板、仿真器、USB 線) 一套 人體紅外傳感器 一個 有源蜂鳴器 一個 軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開發(fā)環(huán)境 3. 實(shí)驗相關(guān)電路圖

溫故
5. 實(shí)驗相關(guān)寄存器 實(shí)驗中使用 P0_4 作為檢測引腳, 人進(jìn)入其感應(yīng)范圍模塊輸出高電平,點(diǎn)亮 LED1,人離開感應(yīng)范圍 LED1 熄滅,P0.4 口為 HC-SR501 傳感器的輸入端。具體 HC-SR501 人體感應(yīng)模塊 OUT 輸出電平由模塊決 定,不同廠家可能不一樣,不一樣關(guān)系也不大,改動非常的小。
6. 源碼分析
/****************************************************************************
* 文 件 名: main.c
* 描
述: 人進(jìn)入其感應(yīng)范圍模塊輸出高電平,點(diǎn)亮 LED1,人離開感應(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()
* 功
能: 以毫秒為單位延時 16M 時約為 535,系統(tǒng)時鐘不修改默認(rèn)為 16M
* 入口參數(shù): msec 延時參數(shù),值越大,延時越久
* 出口參數(shù): 無
****************************************************************************/
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ù): 無
* 出口參數(shù): 無
****************************************************************************/
void InitLed(void)
{
P1DIR |= 0x01;
//P1.0 定義為輸出口
P0SEL = 0x00;
P0DIR &= ~0x10;
//P0.4 定義為輸入口
P2INP |= 0x20;
P0DIR |= 0x80;
//蜂鳴器引腳
}//檢測人體傳感器是否有人
//人體傳感器接在 P04 上
//一旦檢測到有人,10 次檢測內(nèi)都認(rèn)為有人
//返回 1 表示有人,0 表示無人
uint8 GetPeople()
{
static uint8 peopleSencond=0;
uint8 people=0;
if(DATA_PIN==1)
{
peopleSencond=10;//一旦檢測到有人,10 次檢測內(nèi)都認(rèn)為有人
people=1;//檢測到有人
}
else
{
if(peopleSencond>0)
{
peopleSencond--;
people=1;//倒計時結(jié)束前都認(rèn)為有人
}
else
{
peopleSencond=0;
people=0;//沒有人
}
}
return people;
}
void main(void)
{
InitLed();
//設(shè)置 LED 燈和 P0.4 相應(yīng)的 IO 口
while(1)
//無限循環(huán)
{
if(GetPeople() == 1)
{
LED1 = 0;
//有人時 LED1 亮
P0_7=0; //有人的時候,蜂鳴器報警,方便驗證
}
else
{
LED1=1;
//無人時 LED1 熄滅
P0_7=1;
//無人的時候,蜂鳴器不報警,方便驗
}
DelayMS(500);
}



評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表