0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将PIR与PIC16F877A连接起来的教程

科技观察员 来源:circuitdigest 作者:潘卡伊·卡特里 2022-11-16 16:12 次阅读

PIR(被动红外)或运动传感器用于检测移动人体或物体的运动。每当有人进入 PIR 传感器的范围内时,它的输出引脚都会发出高电平。

今天,我们将简单地将PIR与PIC微控制器PIC16F877A连接。在此电路中,如果一些移动物体进入 PIR 传感器的范围内,蜂鸣器将开始发出蜂鸣声。

所需材料

图片套件 3

红外传感器。

PIC16F877A 集成电路

40 - 引脚 IC 支架

性能板

20 MHz 晶体 OSC

内螺纹和外螺纹伯格斯图销

33pf 电容器 - 2 个电容、100uf 和 10uf 电容。

680 欧姆、10K 和 560 欧姆电阻器

任何颜色的发光二极管

1 焊接套件

集成电路 7805

12V 适配器

蜂鸣器

连接线

面包板

红外传感器:

PIR 传感器价格低廉、功耗低且易于使用的运动检测 Sesnor。PIR 传感器只接收红外线,不发射,这就是为什么它被称为被动。PIR 感应热量的任何变化,如果有变化,它会在输出时给出高电平。PIR 传感器也称为热释电或红外运动传感器。

pYYBAGN0m2eAcwaxAACs0MLxWBM736.jpg

每个物体在加热时都会发出一定量的红外线,类似于人体因体温而发出红外线。由于空气和物体之间的摩擦,每个物体产生的红外线。PIR传感器的主要部件是热释电传感器。除此之外,BISS0001(“微功率PIR运动检测器IC”),一些电阻器,电容器和其他用于构建PIR传感器的组件。BISS0001 IC从传感器获取输入并进行处理,使输出引脚相应地高或低。

您还可以调整距离灵敏度和持续时间,一旦检测到运动,输出引脚将处于高电平。它有两个电位计旋钮来调整这两个参数

电路图

poYBAGN0mrqAKEobAAGwkWVVRi4243.png

PIC微控制器:

为了对PIC微控制器进行编程以连接PIR,我们将需要一个IDE(集成开发环境),用于进行编程。一个编译器,我们的程序被转换为MCU可读形式,称为HEX文件。一个IPE(集成编程环境),用于将我们的十六进制文件转储到我们的PIC MCU中。

Microchip免费提供了这三个软件。可以直接从其官方页面下载。为了您的方便,我还提供了链接。下载后,将它们安装在您的计算机上。如果您在这样做时遇到任何问题,可以查看最后给出的视频

要将我们的代码转储或上传到 PIC,我们需要PICkit 3。PICkit 3编程器/调试器是一种简单、低成本的在线调试器,由在 Windows 平台上运行 MPLAB IDE(v8.20 或更高版本)软件的 PC 控制。PICkit 3编程器/调试器是开发工程师工具套件不可或缺的一部分。除此之外,我们还需要其他硬件,如 Perf 板、焊台、PIC IC、晶体振荡器、电容器等。但是,随着教程的进行,我们会将它们添加到我们的列表中。

我们将使用MCU中提供的ICSP选项对PIC16F877A进行编程。

要刻录代码,请执行以下步骤:

启动 MPLAB IPE。

将 PicKit 3 的一端连接到 PC,另一端连接到性能板上的 ICSP 引脚。

通过单击连接按钮连接到您的 PIC 设备。

浏览闪烁十六进制文件,然后单击程序。

代码和说明
首先,我们需要在 pic 微控制器中设置配置位,然后从 void main 函数开始。

在下面的代码中,“XC.h”是包含引脚和外设的所有友好名称的头文件。此外,我们还在下面的代码中定义了晶体振荡器频率、PIR 和蜂鸣器引脚连接。

#include
#define _XTAL_FREQ 20000000 //Specify the XTAL crystall FREQ
#define PIR RC0
#define Buzzer RB2
在空主()中,“TRISB=0X00”用于指示MCU将PORTB引脚用作输出,“TRISC=0Xff”用于指示MCU将PORTB引脚用作输入。“PORTB=0X00”用于指示MCU使RB3的所有输出为低电平。

TRISB=0X00;
TRISC=0Xff;
PORTB=0X00; //Make all output of RB3 LOW
根据下面的代码,每当 PIR 变高时,蜂鸣器就会变高,否则它就会保持关闭状态。

while(1) //Get into the Infinie While loop
{
if(PIR ==1){
Buzzer=1;
__delay_ms(1000); //Wait
}
else{
Buzzer=0;
}
}
}

带PIC微控制器的PIR传感器的工作:

该项目没有任何复杂的硬件设置,我们再次使用我们在LED闪烁教程中创建的相同PIC微控制器板(如下所示)。只需根据连接图将 PIR 传感器模块与PIC 微控制器板连接即可。完成连接后,只需按照上一教程中的说明使用 PicKit 3 编程器转储代码即可享受输出。

pYYBAGN0m2mAYiFwAACibBrl5VM342.jpg

上传程序后,PIR 传感器已准备好提供输出。每当发射 IR 的人或物体进入 PIR 范围内时,它都会给输出提供高电平。而且,基于该输出,蜂鸣器将运行。如果 PIR 输出为高蜂鸣器输入,则输出为高电平,反之亦然。

poYBAGN0m2uAUeMJAACzo4AYGz4419.jpg

您可以使用固定在 PIR 模块上的两个电位计来控制感应距离和时间延迟。

// 'C' source line config statements


// CONFIG

#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)

#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)


// #pragma config statements should precede project file includes.

// Use project enums instead of #define for ON and OFF.


#include


#define _XTAL_FREQ 20000000 //Specify the XTAL crystall FREQ

#define PIR RC0

#define Buzzer RB2


void main() //The main function

{

TRISB=0X00; //Instruct the MCU that the PORTB pins are used as Output.

TRISC=0Xff; //Instruct the MCU that the PORTB pins are used as Input.

PORTB=0X00; //Make all output of RB3 LOW


while(1) //Get into the Infinie While loop

{

if(PIR ==1){

Buzzer=1;

__delay_ms(1000); //Wait

}

else{

Buzzer=0;

}

}


}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6734

    浏览量

    147371
  • PIC16F877A
    +关注

    关注

    2

    文章

    43

    浏览量

    21678
  • PIR
    PIR
    +关注

    关注

    0

    文章

    70

    浏览量

    17780
收藏 人收藏

    评论

    相关推荐

    谁有pic16f877a中文资料?

    谁有pic16f877a中文资料? 
    发表于 07-15 13:22

    PIC16F877A

    菜鸟想问下各位,我想用PIC16F877A做个流水灯,所有端口输出高电平1S,然后输出低电平1s 。 单片机放在学习板上测试的时候是正常的,用prpteus仿真也正常,可是放到电路板上就不正常了,低电平时间很短,Led只是闪了一下。  哪位高手指点一下是什么原因,还是要怎样测试找出问题?
    发表于 07-28 14:32

    PIC16F877A在proteus中读写AT24C512

    此时把I2C DEBUGGER的SCL线连接PIC16F877A和AT24C512的SCL线上,这样PIC16F877A可以正常的写AT24C512。当PIC16F877A发送启动信
    发表于 12-30 16:09

    PIC16F877A使用宏定义读写FlashROM

    MPLAB IDE v8.80PICC9.83读写PIC16F877A内部的EEPROM时可以使用头文件中的两个宏定义EEPROM_READ(unsigned char addr
    发表于 12-31 14:01

    如何数据库的资料与报表连接起来

    如何数据库的资料与报表连接起来
    发表于 08-07 16:04

    PIC16F877A的中断优先级问题

    现在我需要通过串口来接收指令控制PIC16F877A的捕获脉冲行为,可以做到的是:接收到开捕获指令后,能正常开始捕获脉冲,但是再发送关闭指令却不能让它停下来,通过KIT3发现,在捕获的时候,串口不能
    发表于 06-06 21:18

    请问Alitum不同的地要单点连接起来吗?

    不同的地要这么单点连接起来吗还是可以直接铺铜,可是铺铜要选择哪个地网络呢,我有功率地,数字地,大地
    发表于 09-24 05:36

    PIC16F877A复位问题

    嗨,我还是新手,但是我有一个使用PIC16F877a的倒计时计划,而不是运行一个4位数的7段显示,并有5个按钮来选择倒计时的时间。在倒计时结束时,它发出3次哔哔声。它运行得很完美,但是会产生随机
    发表于 04-01 09:39

    如何蓝牙与STM32连接起来

    蓝牙模块有何功能?如何蓝牙与STM32连接起来呢?
    发表于 11-18 07:02

    PIC16F877A单片机相关资料下载

    PIC16F877A单片机(配置字)1 MPLAB X V5.0,编译器为XC8(V2.0)2MPLAB V5.0,编译器为PICC1 MPLAB X V5.0,编译器为XC8(V2.0)单击
    发表于 11-24 08:22

    PIC16F877A看门狗定时器实验的相关资料推荐

    //*******************PIC16F877A 看门狗定时器实验*******************// //PORTA,PORTB,PORTC,PORTD,PORTE复位时为输入
    发表于 11-25 07:52

    PIC16F877A和TB6612FNG电机驱动的微型电路

    描述格柏OK用PIC16F877A和TB6612FNG电机驱动的微型电路
    发表于 09-05 06:12

    pic16f877a中文资料pdf

    pic16f877a中文资料
    发表于 07-15 13:20 4540次下载
    <b class='flag-5'>pic16f877a</b>中文资料pdf

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图,有需要的可以瞧一瞧!
    发表于 08-22 15:16 86次下载

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图免费下载。
    发表于 03-21 15:47 8次下载