智能过道照明系统主要功能
⑴系统设有2个按键功能按键(模式切换键和开关键),和一个单片机复位按键;
⑵系统设有1个电源指示灯和5个状态指示灯,分别为:光照检测信号指示灯(光线暗时指示灯亮),红外热释电传感器信号指示灯(检测到人体信号指示灯亮),自动模式继电器工作状态指示灯(自动模式下,继电器接通,指示灯亮),模式指示灯(手动模式时指示灯亮),手动模式继电器工作状态指示灯(手动模式下,继电器接通,指示灯亮);
⑶系统设置了两种工作模式:自动工作模式和手动工作模式,开机默认为自动模式,可通过“模式切换键”来实现模式切换;
⑷在自动模式下,继电器接通时间是延迟变量来控制的,延迟变量>0,继电器接通,延迟变量=0,继电器断开。延迟变量由检测到的信号控制,在检测到光线暗时,并且检测到有人时,延迟变量就等于设置的延迟时间,从而实现在人走后一段时间,灯泡自动熄灭,节能的目的;
⑸设置的延迟时间可以修改的,在自动模式下,长按“开关键”,每5秒钟,延迟时间加10秒,并且5个状态指示灯会显示出来,每5秒钟从左到右亮一个指示灯,延迟时间最大为50秒。
⑹在手动模式下时,可通过“开关键”控制继电器开关;
单片机源程序如下:
#include #include #define uchar unsigned char #define uint unsigned int sbit renti=P2^1; //定义人感 sbit guangming=P2^0; //定义光照检测脚 sbit jdq=P2^7; //继电器 sbit L1=P2^6; //定义指示灯 sbit L2=P2^5; sbit L3=P2^4; sbit L4=P2^3; sbit L5=P2^2; sbit K1=P1^0; //定义开关 sbit K2=P1^1; int count;rt,gm,qd,shijian,sj=10,moshi=1,shijian1,count1,shezhi=0; //变量 void qudou(void) //去抖延迟 { int i; for(i=0;i<2400;i++); } void key() //按键扫描 {if(K1==0) //去抖 { qudou(); if(K1==0) //模式按键按下 {moshi++; //moshi=1是自动,=0是手动 if(moshi>=2) moshi=0; jdq=1; }while(K1==0); } if(moshi==1) //在自动模式 {if(K2==0) //开关按键按下 { qudou(); if(K2==0) {shezhi=1; //开关按键长按可以设置延迟时间,具体看中断 shijian1=0; }while(K2==0); } else shezhi=0; //没按开关按键就退出设置 } } void rentijiance() //红外人体检测子程序 { if(renti==0) rt=1; //检测到没人体时,传感器发送低电平给单片机,rt就为1 rt=0(有人),rt=1(无人) else rt=0; } void guangzhaoqiangdu() //光照强度子程序 { if(guangming==0) gm=1; //检测到光线亮时,传感器发送低电平给单片机,gm就为1 gm=0(光照暗),gm=1(光照亮) else gm=0; } void panduan() //判断 {if(moshi==1) {if(gm==0) {if(rt==0) shijian=sj; else shijian=shijian;} else shijian=shijian; } else shijian=0; } void zhishideng() //指示灯函数 {L5=gm; L4=rt; if(moshi==1) L3=jdq; else L3=1; L2=moshi; if(moshi==0) L1=jdq; else L1=1; } void qudong() //继电器驱动 {if(moshi==1) //自动模式下 {if(shijian>0) jdq=0; //根据延迟时间控制继电器 else jdq=1; } else //手动模式下 {if(K2==0) { qudou(); if(K2==0) //开下开关按键控制继电器的开关 {jdq=!jdq; }while(K2==0); } } } void main() //主程序 { TMOD=0x1; //中断开启 TH0=0xb1; TL0=0xe0; TR0=1; ET0=1; EA=1; while(1) //无线循环 {key(); //按键扫描 rentijiance(); //人体 guangzhaoqiangdu(); //光照 panduan(); //判断 zhishideng(); //指示灯 qudong(); //驱动 } } void time0(void) interrupt 1 //中断 { TH0=0xb1; TL0=0xe0; if(shijian>0) //用来计时延迟 { count++; if(count==50) { count=0; shijian--; } } if(shezhi==1) //在自动模式下用来设置延迟时间 {count1++; if(count1==50) { count1=0; shijian1++; if(shijian1<=5) //长按5秒,延迟时间为10s,并有1个指示灯显示 {sj=10; L5=0;L4=1;L3=1;L2=1;L1=1;} else if(shijian1<=10) //长按10秒,延迟时间为20s,并有2个指示灯显示 {sj=20; L5=0;L4=0;L3=1;L2=1;L1=1;} else if(shijian1<=15) //长按15秒,延迟时间为30s,并有3个指示灯显示 {sj=30; L5=0;L4=0;L3=0;L2=1;L1=1;} else if(shijian1<=20) //长按20秒,延迟时间为40s,并有4个指示灯显示 {sj=40; L5=0;L4=0;L3=0;L2=0;L1=1;} else if(shijian1>25) //长按25秒,延迟时间为50s,并有5个指示灯显示 {sj=50; L5=0;L4=0;L3=0;L2=0;L1=0;} } } }
上一篇:带中文字库LCD12864按键菜单设置反白单片机实验程序
下一篇:51单片机控制步进电机和直流减速电机
推荐阅读
史海拾趣
AVAGO公司(现更名为Broadcom)的创业故事始于上世纪八十年代。当时,几位工程师看到半导体行业的巨大潜力,决定创立一家公司来专注于高性能模拟半导体的研发。初始阶段,公司面临着资金短缺、市场竞争激烈等挑战,但凭借团队的技术实力和对市场的敏锐洞察,他们成功开发出了几款性能卓越的半导体产品,并逐渐在市场上获得了认可。
在电子行业的初期,Cadeka公司凭借一项革命性的半导体技术突破,迅速崭露头角。公司研发团队经过数年的努力,成功开发出一种新型的集成电路,大大提高了电子设备的性能和效率。这一技术突破迅速吸引了市场的关注,Cadeka公司的订单量激增,公司规模迅速扩大。
为了进一步加强对大陆市场的投资和管控,Bytesonic Corporation在1998年5月在英属维尔京群岛成立了控股公司——剑桥电子有限公司。这一举措不仅提升了公司的资本运作能力,也为其在全球范围内的业务拓展提供了更多的便利。
Exclara Inc.自创立之初就致力于研发创新技术,以满足电子行业对高性能、低功耗产品的需求。公司通过不断的技术突破,成功开发出了一系列具有竞争力的产品。例如,其采用HVX技术构成的驱动电源在T8型LED市场中脱颖而出,相比同规格方案,能够降低30%的BOM成本,这一技术革新不仅提升了产品的竞争力,也为公司赢得了市场的广泛认可。
北京速通科技有限公司(以下简称速通科技)作为ETC行业的领军企业,其创立之初就专注于电子不停车收费系统(ETC)的研发与应用。随着国内交通拥堵问题的日益严重,速通科技看到了ETC系统在未来交通管理中的重要地位。公司组建了一支由行业专家和技术精英组成的团队,开始了ETC技术的探索之路。
速通科技始终将用户体验放在首位。公司不断完善ETC系统的服务功能,提高了系统的稳定性和易用性。同时,速通科技还建立了完善的客户服务体系,为用户提供24小时不间断的在线客服支持。这些举措大大提高了用户对ETC系统的满意度和信任度。
菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗? 我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗? 请高手指点迷津,小弟不胜感激!!!!!… 查看全部问答∨ |
|