找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3426|回復(fù): 1
收起左側(cè)

城市LED路燈控制電路和程序

[復(fù)制鏈接]
ID:145624 發(fā)表于 2016-11-2 02:25 | 顯示全部樓層 |閱讀模式
電路很簡單,接在開關(guān)電源的穩(wěn)壓回路中就可控制城市的路燈了。這程序只控制關(guān)和開,全功率和半功率。24小時循環(huán)可不要人工干涉。
0.png

stm8單片機源程序:
  1. #include"ADC.h"
  2. #include "Eeprom.h" //包含用到的外設(shè)的頭文件



  3. extern u8 minlimit;
  4. extern u8 maxlimit;
  5. extern u16 right_valume;


  6. extern u8 SaveDATA1H;
  7. u8 Adj_Valume;
  8. u8 DATA0H;


  9. u8 ADJADDR;
  10. extern u8 t1ms;


  11. u8 Adc_Flag;

  12. u8 HeCong;
  13. u8 NoLight;
  14. u8 NewLight;
  15. u8 ADC_Valume;

  16. u16 BufllAcc;
  17. u8 BufllPoint;
  18. u8 Adc_Bufll[8];


  19. u8 ReadSample1(void)
  20. {
  21.         right_valume = 0;
  22.         right_valume += ADC1->DB1RH;
  23.         right_valume += ADC1->DB2RH;
  24.         right_valume += ADC1->DB3RH;
  25.         right_valume += ADC1->DB4RH;
  26.         right_valume += ADC1->DB5RH;
  27.         right_valume += ADC1->DB6RH;
  28.         right_valume += ADC1->DB7RH;
  29.         right_valume += ADC1->DB8RH;
  30.         ADC_Valume = right_valume>>3;        //求平均
  31.         
  32.          
  33.         return ADC_Valume;
  34. }
  35. u8 t =10;
  36. void StartUP_ADC(void)
  37. {
  38.   TIM1_SetCompare1(0); //改變PC1輸出的PWM的占空比,0
  39.   t1ms = 0;             //
  40.   while(t1ms <= t)
  41.   {
  42.    nop();
  43.   }

  44.   NoLight = ReadSample1();    //環(huán)境光  
  45.   TIM1_SetCompare1(Adj_Valume); //改變PC1輸出的PWM的占空比,80%
  46.   t1ms = 0;
  47.   while(t1ms <= t)
  48.   {
  49.     ;
  50.   }
  51.   HeCong = ReadSample1();        //合成光

  52.   SaveDATA1H = NoLight - HeCong;    //增量光,標準光點
  53. }



  54. /*******************************************************************************
  55.   *                         ==ADC初始化函數(shù)==
  56.   * ADC_DeInit();                                   -->  復(fù)位定時器4寄存器
  57. *******************************************************************************/
  58. void ADC_INIT(void)
  59. {
  60.   CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE); //給ADC時鐘
  61.   ADC1->CR1 = 0X03;//ADC = fMASTER /3 = f /4.使能ADC并開始轉(zhuǎn)換
  62.   ADC1->TDRH = 0X00;//施密特觸發(fā)器禁止
  63.   ADC1->TDRL = 0XF8;//施密特觸發(fā)器禁止
  64.   
  65.   ADC1->CSR = 0X03;//模擬通道 AIN4
  66.   ADC1->CR2 = 0X00;//單次轉(zhuǎn)換模式,數(shù)據(jù)左對齊
  67.   ADC1->CR3 = 0X80;//數(shù)據(jù)緩存功能/禁止

  68.   ADC1->CR1 |= 0x01;         //開始轉(zhuǎn)換
  69. }

  70. u8 T1S_Count;
  71. //ADC開始
  72. void ADCStart(void)
  73. {
  74.       T1S_Count++;
  75.       if(T1S_Count ==5)
  76.       {   
  77.          T1S_Count = 0;
  78.         right_valume = 0;
  79.         right_valume += ADC1->DB1RH;
  80.         right_valume += ADC1->DB2RH;
  81.         right_valume += ADC1->DB3RH;
  82.         right_valume += ADC1->DB4RH;
  83.         right_valume += ADC1->DB5RH;
  84.         right_valume += ADC1->DB6RH;
  85.         right_valume += ADC1->DB7RH;
  86.         right_valume += ADC1->DB8RH;
  87.         NewLight = right_valume>>3;        //求平均
  88.         DATA0H =NoLight -  NewLight;
  89.         Adc_Flag = 1;

  90.       }
  91. }
  92. u8 w;
  93. //ADC以查詢方式工作
  94. void AdjRight(void)
  95. {
  96.   w = ~SaveDATA1H;
  97.   if(Adc_Flag == 1 )        //20MS抽一次
  98.   {
  99.     Adc_Flag = 0;
  100.     if(NewLight > w)
  101.     {
  102.               if(Adj_Valume <= maxlimit)
  103.               {
  104.                 Adj_Valume++;
  105.               }        
  106.     }
  107.     else if(NewLight < w)
  108.     {
  109.               if(Adj_Valume >= minlimit)
  110.               {
  111.                 Adj_Valume--;
  112.               }
  113.     }
  114.   }
  115. }
復(fù)制代碼
0.png
所有資料打包下載:
城市路燈控制電路和程序.rar (2.19 MB, 下載次數(shù): 17)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:71535 發(fā)表于 2016-11-3 13:57 | 顯示全部樓層
謝謝開源精神,學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表