红外报警系统的c语言程序

红外报警系统的c语言程序,第1张

//获取有几对红外对管被阻碍

char get_hinder_num()

{

    ......

}

//获取倒计时的时间,立即报前扰团警返回0

char get_count_down(char hinder_num)

{

    ......

}

//报警函数

void beep()

{

    ......

}

flag_delay = 1 //等待标志

void main()

{

    char hinder_num = 0

    char count_down = 0

    while(1)

    {

        while(hinder_num == 0){ hinder_num = get_hinder_num()} //发生阻碍跳出

        count_down = get_count_down() //获取倒计时

        if (count_down == 0){beep()} //倒计时为0,立即报警

        else

        {

            flag_delay = 1

            ......//使用定时器开始倒计时,根据count_down确定倒计时间

                  //时间到把flag_delay置为0

            while(flag_delay) //等待

            {

                   if (hinder_num != get_hinder_num()) //如果阻碍数量发生变化,退出等待

   李逗                {

                       ......//关闭定时器

                       break

                   }

 慧橘           }        

        }

     }   

}

void main()

{

unsigned char i=0x0a

P3=0x00

P1=0X00

TMOD=0X01

TH0=0X3C//设哪咐置定时100ms初值

TL0=0XB0

EA =1// ;CPU开中断

ET0 =1 // ;定时器0允许中断

while(1){

if (P3!=0x00){

TR0=1

while(1)

}

}

}

***** interrupt()//定李迟纯时器0中断自己查一下怎旦改么写

{

TH0=0X3C

TL0=0XB0

if(I!=0X00)

{

return

}else

{

i=0X0A

P3.7^=p3.7

}

}

我现场给你编

有点错误你自己调试吧

但是大概思路你可以这样来设计

首先你给那个发射管一个引脚,给接收管一个引脚,再给蜂鸣器一个引脚

你那个发射管独立设计为一个电路

用单片机和接收管来检测是否收到了红外信号

如果受到信号则蜂鸣器鸣叫

#include<reg51.h>

sbit shou=P1.0//定义接收管引脚

sbit fmq=P1.1//定义蜂鸣闭银器引脚

void delay()//延时函数

{

unsigned char j,k

for(j=100j>0j--)

for(k=110k>0k--)

}

main()

{

P1=0X00初始化定义

delay()

if(shou=1)//检测到接收管输入为高电平

{

P1=0X00再次初始化

delay()延时确认

if(shou=1)//如果接收管还是高电平

{

fmq=1//蜂鸣器鸣叫

}

}

}

我的原则是谁给我分,我给谁答案

多少分给多少答案

鄙视那种得到答案不给分的垃圾

哥们,我回答你的问题是因为我刚好今晚上用到红外接收对管做试验

不过一看你是个菜鸟

即使你拿到这程序,你的蜂鸣器也不能响雹袭

o(∩_∩)o...

不轿肆宴过还是鼓励你先把这个试验做下去再说吧

问题总是在实践中发现的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12489328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存