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...
不轿肆宴过还是鼓励你先把这个试验做下去再说吧
问题总是在实践中发现的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)