历史上的今天

今天是:2024年11月10日(星期日)

正在发生

2020年11月10日 | 单片机智能灯光系统程序

发布者:czc天天 来源: 51hei关键字:单片机  智能灯光系统  手动模式 手机看文章 扫描二维码
随时随地手机看文章

智能过道照明系统主要功能

⑴系统设有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单片机控制步进电机和直流减速电机

推荐阅读

集微网消息 11月8日,在“2018中国集成电路产业促进大会”上,集成电路特色工艺联盟正式成立并启动。        集成电路特色工艺是集成电路制造的重要组成部分,主要包括BCD、功率器件、射频器件、传感器、嵌入式存储等工艺,具有工艺、应用、产品深度绑定,设计、制造、材料广泛协同的特点。        随着5G、物联网、汽车电子等集成电路新...
(文章来源:中科罗伯特机器人学院) 工业机器人发展到现在已经不在局限于某一个行业或者是领域了,在我国工业机器人已经逐渐占领了各大流水线上的工作。随着人们生活质量的提高,传统的工业机器人作业方式已经不能满足人们对产品的需求,科技的进步会带动工业机器人进入到什么样的发展呢。 行业是现在仅次于汽车的第二大应用领域, 3C行业由于产品更...
初学者步入电子领域之初,少不了购置万用电表。是选用指针式还是数字式的?笔者认为可以先购指针式的。这好像学生学数学,先学算盘一样,能把抽象的数字,化为形象的个数,而不提倡使用计算器。指针式电表也一样,它能把抽象的物理量化为形象模拟角度大小,便于加深电路的理解,使每个测量过程都像是实验过程。如用舌头添三极管的基极测三极管β值,指针式...
今年下半年,一加推出了一加9R的迭代机型——一加9RT,传闻中的一加9T并未发布。  接下来一加要发布的机型是一加10系列,这是一加2022年的年度旗舰。  今天,知名爆料人士OnLeaks曝光了一加10 Pro渲染图。  如图所示,一加10系列最大的变化在于摄像头。这一代产品的摄像头为矩阵设计,但是更接近方形。  该机后置三颗摄像头,还有一颗为...

史海拾趣

问答坊 | AI 解惑

网络标号问题请教

我画原理图的时候,怎么经常会报告网络编号没有连上?PROTEL99SE。…

查看全部问答∨

《Keil Software –Cx51 编译器用户手册 中文完整版》

《Keil Software –Cx51 编译器用户手册 中文完整版》  网络不好哦…

查看全部问答∨

智能型节能灯泡

部分亮电灯泡,更加环保节能 我们家里使用的灯,基本都是全部亮的,房子的每个地方 都可以照到。不过实际上,我们需要照明的地方可能就只 有某一部分地方,那么其它地方的光似乎就有些浪费了。 现在有了这种可以部分亮电灯泡,就环保节能多了。 ...…

查看全部问答∨

求助:PDA中Picturebox画点

新手求教:如题,想在PDA的Picturebox中画点,已知点的坐标,pda的Picturebox中没有paint,怎么画呢?…

查看全部问答∨

菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗?

       我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗?    请高手指点迷津,小弟不胜感激!!!!!…

查看全部问答∨

U盘问题 救急

设备名称: [I:]USB Mass Storage Device(ChipsBnk Flash Disk USB Device) PNP设备ID: VID = 0420 PID = 1307 设备序列号: 5&&16CC493&&1&&1   设备版本: 5.00   设备类型: 标准USB设备 - USB2.0高速 芯片制 ...…

查看全部问答∨

单片机能不能显示图片

小弟有几个问题 单片机能不能显示图片 应该选什么型号的单片机 难不难…

查看全部问答∨

问一个初级问题,ADC校验后校验值有没有用?

                                 有用的话是用在什么地方?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved