完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
3个回答
|
|
我把程序再放到这里
#include #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 // 红外热释电传感器 平时为0 有输出为1 ***it beep = P2^3; //蜂鸣器定义 ***it red = P1^0; //红色发光二极管定义 ***it green = P1^1; //绿色发光二极管定义 ***it yellow = P1^2; //黄色发光二极管定义 ***it hw = P2^0; //红外热释传感器定义 bit flag_300ms = 0; uchar flag_alarm ; //报警标志位 uchar flag_bufang ; //布防标志位 uchar flag_bufang_en ; //布防标志位使能 uchar temp; uint flag_value; //用做定时器的变量 /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i for(j=0;j<120;j++); } /********************独立按键程序*****************/ uchar key_can; //按键值 void key() //独立按键程序 { static uchar key_new; key_can = 20; //按键值还原 P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay_1ms(1); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xde:key_can==1; break; case 0xbe:key_can==2; break; case 0x7e:key_can==3; break; } } } } /******************对应不同按键处理**********************/ void key_with() { if(key_can == 1) //按键紧急报警 { flag_alarm = 1; //报警标志位 ; } if(key_can == 2) //布防按键 { flag_bufang_en = 1; } if(key_can == 3) //取消报警 把变量清零 { flag_alarm = 0; flag_bufang = 0; flag_bufang_en = 0; flag_value = 0; beep = 1; red = 1; //关闭红灯 green = 1; //关闭绿灯 yellow = 1; //关闭黄灯 } } /*************定时器0初始化程序***************/ void time_init() { EA = 1; //开总中断 TMOD = 0X01; //定时器0工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 } /******************红外报警处理**********************/ void hongwai_dis() { if(flag_bufang_en == 1) //准备开始布防 { green = ~green; //绿灯闪 } if(flag_bufang == 1) //确认布防 { green = 0; //如果延时布防成功 绿灯长亮 if(hw == 1) //红外有输出 { flag_alarm = 1; } } if(flag_alarm == 1) //报警 { red = ~red; //红灯报警 beep = ~beep; //蜂鸣器报警 } } /******************主程序**********************/ void main() { time_init(); //定时器初始化程序 beep = 0; //开机叫一声 delay_1ms(200); P0 = P1 = P2 = P3 = 0xff; //初始化单片机IO口为高电平 while(1) { key(); yellow = ~hw; //红外热释电指示灯 有输出就亮黄灯 if(key_can < 10) { key_with(); //按键设置函数 } if(flag_300ms == 1) { flag_300ms = 0; hongwai_dis(); //红外报警函数 } } } /*************定时器0中断服务程序***************/ void time0_int() interrupt 1 { static uint value; TH0 = 0x3c; TL0 = 0xb0; // 50ms value ++; if(value % 6 == 0) { flag_300ms = 1; } if(flag_bufang_en == 1) { flag_value ++; // 400 * 50ms = 20000ms = 20秒 if(flag_value >= 400) //20秒 { flag_bufang = 1; flag_bufang_en = 0; flag_value = 0; } } } |
|
|
|
你用几个按键啊?
|
|
|
|
可以发一下原理图吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
54 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
395 浏览 0 评论
439 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1265 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
529 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11744 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 17:40 , Processed in 0.571061 second(s), Total 76, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号