標(biāo)題: 最近做個(gè)一個(gè)燈光控制系統(tǒng),含代碼 [打印本頁]

作者: zha    時(shí)間: 2017-7-9 19:17
標(biāo)題: 最近做個(gè)一個(gè)燈光控制系統(tǒng),含代碼
這是最近參加一個(gè)比賽做的一個(gè)智能燈光控制系統(tǒng),
可以實(shí)現(xiàn)的功能是用光強(qiáng)傳感器感應(yīng)強(qiáng)度來使燈光強(qiáng)度變化,
手動(dòng)是通過app來控制燈的顏色變化,
還有閃爍模式,燈光閃爍加顏色變化,比較絢麗,
最后是一個(gè)睡眠模式和驅(qū)蚊模式。還有人來燈亮人走燈滅的功能。
用oled來顯示,沒有字庫,自己取模來顯示。
比較簡單。
附上代碼

流程圖 副本.JPG (216.65 KB, 下載次數(shù): 239)

流程圖 副本.JPG

截圖00.png (213.25 KB, 下載次數(shù): 216)

截圖00.png

截圖01.png (187.08 KB, 下載次數(shù): 267)

截圖01.png

截圖02.png (23.06 KB, 下載次數(shù): 221)

截圖02.png

截圖03.png (693.61 KB, 下載次數(shù): 211)

截圖03.png

截圖04.png (429.75 KB, 下載次數(shù): 215)

截圖04.png

0.png (10.81 KB, 下載次數(shù): 179)

0.png

多級系統(tǒng).zip

76.39 KB, 下載次數(shù): 71, 下載積分: 黑幣 -5


作者: 我愛吃零食    時(shí)間: 2017-12-13 13:24
樓主你好,下載的時(shí)候顯示指定板塊不存在,請問應(yīng)該怎么辦
作者: admin    時(shí)間: 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定時(shí)1ms
  37.                         OLED_Init();                        //初始化OLED  
  38.                 OLED_Clear()          ;
  39.                 t=' ';
  40.                 led =1;
  41.         while(1)
  42.         {               
  43.                  KeyDriver(xuhao);  //調(diào)用按鍵驅(qū)動(dòng)
  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;  //臨時(shí)變量
  81.    
  82.     tmp = 11059200 / 12;      //定時(shí)器計(jì)數(shù)頻率
  83.     tmp = (tmp * ms) / 1000;  //計(jì)算所需的計(jì)數(shù)值
  84.     tmp = 65536 - tmp;        //計(jì)算定時(shí)器重載值
  85.     tmp = tmp + 12;           //補(bǔ)償中斷響應(yīng)延時(shí)造成的誤差
  86.     T0RH = (unsigned char)(tmp>>8);  //定時(shí)器重載值拆分為高低字節(jié)
  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;        //啟動(dòng)T0
  94. }
  95. /* T0中斷服務(wù)函數(shù),執(zhí)行按鍵掃描 */
  96. void InterruptTimer0() interrupt 1
  97. {
  98.     TH0 = T0RH;  //重新加載重載值
  99.     TL0 = T0RL;
  100.     KeyScan();   //按鍵掃描
  101.        
  102.        
  103. }
復(fù)制代碼

作者: wuzhenyu    時(shí)間: 2024-4-7 21:19
請問這個(gè)光敏電阻的DO輸出連接到哪個(gè)IO口呀




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1