找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5128|回复: 3
打印 上一主题 下一主题
收起左侧

最近做个一个灯光控制系统,含代码

[复制链接]
跳转到指定楼层
楼主
这是最近参加一个比赛做的一个智能灯光控制系统,
可以实现的功能是用光强传感器感应强度来使灯光强度变化,
手动是通过app来控制灯的颜色变化,
还有闪烁模式,灯光闪烁加颜色变化,比较绚丽,
最后是一个睡眠模式和驱蚊模式。还有人来灯亮人走灯灭的功能。
用oled来显示,没有字库,自己取模来显示。
比较简单。
附上代码

流程图 副本.JPG (216.65 KB, 下载次数: 204)

流程图 副本.JPG

截图00.png (213.25 KB, 下载次数: 179)

截图00.png

截图01.png (187.08 KB, 下载次数: 219)

截图01.png

截图02.png (23.06 KB, 下载次数: 184)

截图02.png

截图03.png (693.61 KB, 下载次数: 175)

截图03.png

截图04.png (429.75 KB, 下载次数: 181)

截图04.png

0.png (10.81 KB, 下载次数: 150)

0.png

多级系统.zip

76.39 KB, 下载次数: 57, 下载积分: 黑币 -5

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:239150 发表于 2017-12-13 13:24 | 只看该作者
楼主你好,下载的时候显示指定板块不存在,请问应该怎么办
回复

使用道具 举报

板凳
ID:1 发表于 2017-12-13 13:58 | 只看该作者
楼主的主程序:
  1. #include "reg52.h"
  2. #include "oled.h"
  3. sbit led = P1^0;
  4. unsigned char step = 0;
  5. unsigned char oprt = 0;
  6. unsigned char xuhao = 0;

  7. signed long num1 = 0;
  8. signed long num2 = 0;
  9. signed long result = 0;
  10. unsigned char T0RH = 0;
  11. unsigned char T0RL = 0;
  12. void ConfigTimer0(unsigned int ms);
  13. extern void KeyScan();
  14. extern void KeyDriver(unsigned char xuhao);
  15. void jia();
  16. void jian();
  17. void jian()
  18. {
  19.         if(xuhao==0)
  20.         xuhao=2;
  21.         else
  22.         xuhao--;
  23.         led = ~led;
  24. }
  25. void jia()
  26. {       
  27.         if(xuhao<2)
  28.         xuhao++;
  29.         else
  30.         xuhao=0;
  31.         led = ~led;
  32. }

  33. void main(void)
  34. {                u8 t;
  35.                 EA = 1;           //开总中断
  36.         ConfigTimer0(1);  //配置T0定时1ms
  37.                         OLED_Init();                        //初始化OLED  
  38.                 OLED_Clear()          ;
  39.                 t=' ';
  40.                 led =1;
  41.         while(1)
  42.         {               
  43.                  KeyDriver(xuhao);  //调用按键驱动
  44.         }          
  45. }
  46. void Reset()
  47. {
  48.         num1 = 0;
  49.         num2 = 0;
  50.         step = 0;
  51.         OLED_Clear();
  52.                 OLED_ShowString(5,0,"1.",16);
  53.                 OLED_ShowCHinese(18,0,0);//
  54.                 OLED_ShowCHinese(36,0,1);//
  55.                 OLED_ShowCHinese(54,0,2);
  56.                 OLED_ShowCHinese(72,0,3);
  57.                 OLED_ShowString(5,2,"2.",16);
  58.                 OLED_ShowCHinese1(18,2,0);
  59.                 OLED_ShowCHinese1(36,2,1);
  60.                 OLED_ShowCHinese1(54,2,2);
  61.                 OLED_ShowCHinese1(72,2,3);
  62.                   OLED_ShowString(5,4,"3.",16);
  63.                 OLED_ShowCHinese1(18,4,0);
  64.                 OLED_ShowCHinese1(36,4,1);
  65.                 OLED_ShowCHinese1(54,4,2);
  66.                 OLED_ShowCHinese1(72,4,3);
  67.                 delay_ms(8000);
  68. }

  69. void OprtKeyAction(unsigned char type)
  70. {  
  71.         switch(type)
  72.         {
  73.                 case 0: jian(); break;
  74.                 case 1:        jia(); break;       
  75.                 default: break;
  76.         }
  77. }
  78. void ConfigTimer0(unsigned int ms)
  79. {
  80.     unsigned long tmp;  //临时变量
  81.    
  82.     tmp = 11059200 / 12;      //定时器计数频率
  83.     tmp = (tmp * ms) / 1000;  //计算所需的计数值
  84.     tmp = 65536 - tmp;        //计算定时器重载值
  85.     tmp = tmp + 12;           //补偿中断响应延时造成的误差
  86.     T0RH = (unsigned char)(tmp>>8);  //定时器重载值拆分为高低字节
  87.     T0RL = (unsigned char)tmp;
  88.     TMOD &= 0xF0;   //清零T0的控制位
  89.     TMOD |= 0x01;   //配置T0为模式1
  90.     TH0 = T0RH;     //加载T0重载值
  91.     TL0 = T0RL;
  92.     ET0 = 1;        //使能T0中断
  93.     TR0 = 1;        //启动T0
  94. }
  95. /* T0中断服务函数,执行按键扫描 */
  96. void InterruptTimer0() interrupt 1
  97. {
  98.     TH0 = T0RH;  //重新加载重载值
  99.     TL0 = T0RL;
  100.     KeyScan();   //按键扫描
  101.        
  102.        
  103. }
复制代码
回复

使用道具 举报

地板
ID:1115541 发表于 2024-4-7 21:19 | 只看该作者
请问这个光敏电阻的DO输出连接到哪个IO口呀
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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