找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3066|回复: 0
收起左侧

单片机智能感应调光台灯设计论文与源程序下载

[复制链接]
ID:198608 发表于 2017-10-26 22:09 | 显示全部楼层 |阅读模式
分享一个智能感应调光台灯,单片机资源共享群293194307有大量学习资源欢迎一起学习交流

0.png

台灯的程序流程图:

本设备可根据人体感应和环境光线来控制,自动实现人来灯亮,人走灯灭的功能 0.png
目 录


1 引言    1
2 人体感应灯整体方案设计    1
3 总体工作方案电路图    2
4 人体感应灯硬件电路设计    4
4.1 STC89C51单片机    4
4.2光控模块    4
4.2.1 光敏电阻    4
4.2.2 光控模块设计    4
4.3人体检测模块    6
4.3.1红外热释电处理芯片BISS0001    6
4.3.2 工作原理    7
4.3.3 功能特点    8
4.5控制模块    9
4.6按键电路设计    10
5 焊接与调试    11
总结    14
参考文献    15

论文内容预览:
0.png

单片机源程序如下:
  1. #include<reg51.h>
  2. #include"lcd.h"
  3. #include"temp.h"
  4. /*     程序修改    焦建梅
  5.                         程序设计:lcd1602 data:P0
  6.                                                          rs   P3^5
  7.                                              rw   P2^7
  8.                                              en   P3^4
  9.                                     18b20   P2^2
  10.                                  人体红外  P1^0
  11.                                    光敏    P1^5
  12.                                    继电器   P1^6                                                         
  13. */
  14. #include<intrins.h>
  15. #define uc unsigned char
  16. #define ui unsigned int
  17. sbit GM=P2^1;        //光敏
  18. sbit RT=P2^0;        //人体红外
  19. sbit KZ=P2^2;        //继电器控制灯
  20. void delay1(ui x)//延时函数1s
  21. {
  22.         ui i,j;
  23.         for(i=0;i<x;i++)
  24.         for(j=0;j<110;j++);
  25. }
  26. void initgr()//初始化函数
  27. {
  28.         GM=0;//光敏置低
  29.         RT=0;//人体红外置低
  30. }

  31. void work()//工作函数
  32. {
  33.         if(GM==1)//光敏判断是否为黑天
  34.         {
  35.                 delay1(20);//延时20ms
  36.                 if(GM==1)//确定是否为黑天
  37.                 {                   //如果为黑天
  38.                         if(RT==1)//检测人体
  39.                         {                 //如果检测到人体
  40.                                 KZ=0;//继电器吸合
  41.                         }
  42.                         else
  43.                         {
  44.                                 delay1(5000);//延时5s
  45.                                 if(RT==0)//如果没有感应到人体
  46.                                 KZ=1;//继电器断开
  47.                                 else//否则
  48.                                 KZ=0;//继电器吸合
  49.                         }
  50.                 }
  51.         }
  52.         else if(GM==0)//如果光敏检测的为白天
  53.         {
  54.                 delay1(20);//延时20ms
  55.                 if(GM==0)//确定是否为白天
  56.                 {                  //如果为白天
  57.                         KZ=1;//继电器断开
  58.                 }
  59.         }
  60. }



  61. void LcdDisplay(int);
  62. void main()
  63. {
  64.           initgr();//初始化函数
  65.           LcdInit();                         
  66.           LcdWriteCom(0x88);       
  67.           LcdWriteData('C');
  68.         while(1)
  69.           {
  70.                 LcdDisplay(Ds18b20ReadTemp());
  71.                         work();//调用工作函数
  72.           }
  73. }



  74. void LcdDisplay(int temp)          
  75. {   
  76.   unsigned char datas[] = {0, 0, 0, 0, 0};
  77.         float tp;  
  78.         if(temp< 0)
  79.           {
  80.                   LcdWriteCom(0x80);               
  81.             LcdWriteData('-');            
  82.                 temp=temp-1;
  83.                 temp=~temp;
  84.                 tp=temp;
  85.                 temp=tp*0.0625*100+0.5;       
  86.           }
  87.         else
  88.           {                       
  89.                   LcdWriteCom(0x80);               
  90.             LcdWriteData('+');        
  91.                   tp=temp;
  92.                   temp=tp*0.0625*100+0.5;       
  93.            }
  94.         datas[0] = temp / 10000;
  95.         datas[1] = temp % 10000 / 1000;
  96.         datas[2] = temp % 1000 / 100;
  97.         datas[3] = temp % 100 / 10;
  98.         datas[4] = temp % 10;

  99.         LcdWriteCom(0x82);                    //写地址 80表示初始地址
  100.         LcdWriteData('0'+datas[0]); //百位

  101.         LcdWriteCom(0x83);                    //写地址 80表示初始地址
  102. ……………………

  103. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
智能台灯.zip (396.95 KB, 下载次数: 54)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表