全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > LED照明 >

基于51单片机的红外报警器的设计与制作

时间:2023-08-29 15:29

人气:

作者:admin

标签: 单片机  基于  报警  红外   

导读:基于51单片机的红外报警器的设计与制作-当倒计时时,报警器会报警并且led灯会闪烁提示...

功能要求:

1.当检测时,数码管会倒计时60

2.当有人靠近时,会报警

3,当倒计时时,报警器会报警并且led灯会闪烁提示

原理图:

程序运行截图:

部分程序:

#include

#define key1 P37

#define key2 P41

#define key3 P42

#define key4 P43

#define IR P10

#define FMQ P54

#define u8 unsigned char

#define u16 unsigned int

u8 table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//数码管段码

u8 disbuf[]={0,0,0,0};//数码管显示缓冲区

u8 min=0;

void Timer0Init(void) //1毫秒@11.0592MHz

{

AUXR |= 0x80; //定时器时钟1T模式

TMOD &= 0xF0; //设置定时器模式

TL0 = 0xCD; //设置定时初始值

TH0 = 0xD4; //设置定时初始值

TF0 = 0; //清除TF0标志

TR0 = 1; //定时器0开始计时

ET0 = 1; //定时器0打开

EA = 1; //定时器总开关

}

void timer0()interrupt 1

{

static u16 min_count=0,fmq_count=0,led_count=0,ir_flag=0;//静态局部变量 分计数、蜂鸣器间隔响计数、人体红外标志位

if(IR==1)ir_flag=1;//当检测到物体经过 标志位置1

if(ir_flag==1) //当标志位为1 执行以下程序

{

if(++fmq_count==500)//每500毫秒响一次

{

fmq_count=0;

FMQ=!FMQ;

}

/ 流水灯 */

led_count++;

if(led_count==100)P14=!P14;

if(led_count==200)P15=!P15;

if(led_count==300)P16=!P16;

if(led_count==400)P17=!P17;

if(led_count==401)led_count=0;

/*************************/

if(++min_count==100)//时间到结束报警 正常速度为1000 当前为100

{

min_count=0;

if(++min==60)

{

min=0;

ir_flag=0;

}

}

}

disbuf[2]=min/10; //将值传入显示缓冲区

disbuf[3]=min%10;

if(ir_flag==0)

{

P14=1;

P15=1;

P16=1;

P17=1;

}

}

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信