久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16471|回復: 12
收起左側

基于STC15W408AS的LED小臺燈

  [復制鏈接]
ID:395170 發表于 2018-9-7 21:16 | 顯示全部樓層 |閱讀模式
電路為BUCK型,所有LED串電阻后并聯。
LED為5730的暖白與白色兩種,暖白6只,白色的4只。
電位器調節LED亮度,電位器的ADC值直接賦予PWM的比較值。
逆時針旋到底為關機狀態,此時單片機工作于掉電模式,用
掉電喚醒專用定時器喚醒,電流約5uA。
電位器順時針旋轉一定角度后,單片機工作于空閑模式,由T0定時
喚醒,單片機電流約3.7mA。
由于國LED比較刺眼,最后在LED上蒙了兩層衛生紙,用封口膠給粘上的。
燈與底座之間采用USB接口連接,這樣的好處是燈可以插到USB充電
器上單獨使用。
核心代碼:
        while(1)
        {
                POT_L;//使能電位器
                delayus(1);
                v=adc_read8(2);
                //CCAP1H=v;
                POT_H;//關閉電位器
                if((v<10)&&(CCAP1H<11))//關機
                {
                        CCAP1H=0;
                        CCAPM1=0;//關PWM
                        n++;
                        if(n>=5)//每5秒閃一次,便于夜間尋找
                        {
                                n=0;
                                IOCLR(P1,BIT(0));
                                IOSET(P1,BIT(0));
                        }               
                        PCON=0X02;//掉電
                        _nop_();
                        _nop_();               
                }
                else//不關機
                {               

                        CCAP1H=((U16)CCAP1H*9+v)/10;//亮度漸變
                        CCAPM1=BIT(6)|BIT(1);               
                        PCON=0x01;//空閑
                        _nop_();
                        _nop_();               
                }
        }


















--------------------------
11.1317:更新PCB,因為原PCB中LED模塊敷銅距離太近。
12.0922:
  程序中原PWM時鐘為FOSC/2,PWM頻率約22KHz,現已將PWM時鐘改為FOSC,PWM頻率約43KHz。
   電路中增加AP5056充電芯片,USB輸出增加1uf電容,如無此電容,電流會有較大鋸齒。





C7=1uf時,輸出串1歐取樣電阻測得的波形:

C7=10uf時,輸出串1歐取樣電阻測得的波形:


問: 這是BUCK電路電壓調光啊。不算PWM調光

答:
我的PWM占空比是跟隨電位器的,電位器不動,占空比就不變,怎么不算PWM調光?
LED通電后,它的電壓是基本不變的,特性類似于穩壓二極管。
所以當Q4導通時,電感上的電壓也基本不變,電流呈線性上升,所以占空比越大時,平均電流也越大。
所以LED的平均電流與PWM占空基本是呈線性的,應當稱之為“電流調光”

單片機源程序如下:
  1. /*--------------------------------------------------
  2. 電位器調節LED亮度
  3. 逆時針旋到底為關機狀態,此時單片機工作于掉電模式,用
  4. 掉電喚醒專用定時器喚醒,電流約5uA。
  5. 電位器旋轉一定角度后,單片機工作于空閑模式,由T0定時
  6. 喚醒,單片機電流約3.7mA

  7. //--------------------------------------------------*/
  8. #include <INTRINS.H>
  9. #include "STC15F2K60S2.H"
  10. #include "MAIN.H"
  11. #include "uart-15.C"
  12. #include "stcadc.c"
  13. //--------------------------------------------------
  14. //定義
  15. //--------------------------------------------------

  16. //最大PWM
  17. #define        MAXPWM        230
  18. //電位器使能
  19. #define POT_L        IOCLR(P1,BIT(1))
  20. #define POT_H        IOSET(P1,BIT(1))

  21. //--------------------------------------------------
  22. //毫秒級延時
  23. //--------------------------------------------------
  24. void delayms(U16 t)
  25. {
  26.         U16 i;
  27.         for(;t>0;t--)
  28.         for(i=FOSC/13186;i>0;i--);
  29. }
  30. //--------------------------------------------------
  31. //微秒級延時
  32. //--------------------------------------------------
  33. void delayus(U16 t)//72=200us
  34. {
  35.         while(t--);
  36. }

  37. //--------------------------------------------------
  38. //T0中斷:
  39. //每次+-1更新PWM值,處理啟動與停機
  40. //--------------------------------------------------
  41. void timer0_isr(void) interrupt 1
  42. {

  43. }
  44. //--------------------------------------------------
  45. //掉電喚醒定時器
  46. //t*488us
  47. //--------------------------------------------------
  48. void wkt_init(U16 t)
  49. {
  50.         WKTCL=t;
  51.         WKTCH=BIT(7)|(t>>8);

  52. }

  53. //--------------------------------------------------
  54. //PCA初始化
  55. //--------------------------------------------------
  56. void pca_init(void)
  57. {
  58.         CMOD=4<<1;//FOSC
  59.         //CMOD=1<<1;//FOSC/2
  60.         CCAPM1=BIT(6)|BIT(1);//8位PWM
  61.         CCAP1H=0X80;       
  62.         //P_SW1=0<<4;//切換CCP到P1
  63.         //P_SW1=1<<4;//切換CCP到P3
  64.         CR=1;
  65. }
  66. //--------------------------------------------------
  67. //T0初始化
  68. //--------------------------------------------------
  69. void timer0_init(U16 f)
  70. {
  71.         U16 v;
  72.         TMOD&=0xf0;
  73.         TMOD|=0X00;        //T0方式0,16位自動重裝
  74.         v=65536-(FOSC/12/f);
  75.         TH0=v>>8;
  76.         TL0=v;
  77.         ET0=1;
  78.         TR0=1;
  79. }
  80. //--------------------------------------------------
  81. //端口初始化
  82. //--------------------------------------------------
  83. void io_init(void)
  84. {
  85.         P0=0XFF;
  86.         P1=0XFF;
  87.         P2=0XFF;
  88.         P3=0XFF;
  89.         P1M1=BIT(2)|BIT(3)|BIT(4);//AD測電位器、充電電壓
  90.         //IOCLR(P1,BIT(1));//P1.1光纖接收使能
  91.         //P3M1=0xff;
  92.         //P2M1=BIT(5);
  93.         //M0,M1:00:準雙向口,01:推挽,10:僅輸入,11:開漏
  94.         //注意:5A60S2的M0,M1是相反的
  95. }

  96. //--------------------------------------------------
  97. //所有設置初始化
  98. //--------------------------------------------------
  99. void init_devices(void)
  100. {
  101.         io_init();
  102.         uart1_init(9600,1);//關中斷
  103.         timer0_init(20);
  104.         pca_init();
  105.         wkt_init(2000);
  106.         //cmp_init();
  107.         //uart2_init(1600,0);//19200/12=1600,關中斷
  108.         //IOSET(AUXR,BIT(2));//BRTx12,讓獨立波特率變為原來的12倍(uart2)
  109.         //uart3_init(2400,1);//2400
  110.         //IOSET(AUXR,BIT(7));//T0x12,讓T0的時鐘變為原來的12倍,波特率也提高了(模擬串口)
  111. //        IP=0X02;//優先級控制(T0為最高優先級):D4:PS,D3:PT1,D2:PX1,D1:PT0,D0:PX0,
  112.         EA=1;
  113. }


  114. //--------------------------------------------------
  115. //主函數
  116. //--------------------------------------------------
  117. void main(void)
  118. {
  119.         U8 v,n;
  120.         //S16 e;
  121.         init_devices();

  122.         while(1)
  123.         {
  124.                 POT_L;
  125.                 delayus(1);
  126.                 v=adc_read8(2);
  127.                 //CCAP1H=v;
  128.                 POT_H;
  129.                 if((v<10)&&(CCAP1H<11))//關機
  130.                 {
  131.                         CCAP1H=0;
  132.                         CCAPM1=0;
  133.                         n++;
  134.                         if(n>=5)//每5秒閃一次,便于夜間尋找
  135.                         {
  136.                                 n=0;
  137.                                 IOCLR(P1,BIT(0));
  138.                                 delayus(2);
  139.                                 IOSET(P1,BIT(0));
  140.                         }               
  141.                         PCON=0X02;//
  142.                         _nop_();
  143.                         _nop_();               
  144.                 }
  145.                 else//不關機
  146.                 {               
  147.                         //if(v>MAXPWM)v=MAXPWM;
  148.                         //CCAP1H=v;
  149.                         /*e=(U16)v-CCAP1H;
  150.                         if(e<-10)e=-10;
  151.                         if(e>10)e=10;
  152.                         CCAP1H+=e;*/
  153.                         CCAP1H=((U16)CCAP1H*9+v)/10;
  154.                         CCAPM1=BIT(6)|BIT(1);               
  155.                         PCON=0x01;
  156.                         _nop_();
  157.                         _nop_();               
  158.                 }
  159.         }
  160. ……………………

  161. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
1.1電路及程序.rar (958.86 KB, 下載次數: 123)

評分

參與人數 1黑幣 +10 收起 理由
aifengdian + 10 贊一個!

查看全部評分

回復

使用道具 舉報

ID:394663 發表于 2018-9-12 10:58 | 顯示全部樓層
很好的程序,馬上下載來實驗下。
回復

使用道具 舉報

ID:413700 發表于 2018-12-6 02:11 來自手機 | 顯示全部樓層
謝謝先,正找這個用電位器來調光的,但是電路中如果有增加一個電位器來調色溫就好
回復

使用道具 舉報

ID:79544 發表于 2019-3-30 16:46 | 顯示全部樓層
g感謝分享學習啦。。!
回復

使用道具 舉報

ID:211814 發表于 2019-5-17 20:54 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:616896 發表于 2019-10-26 09:58 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:634487 發表于 2019-11-3 12:30 | 顯示全部樓層
這個程序的掉電時間  是怎么算的?
回復

使用道具 舉報

ID:440637 發表于 2019-11-13 16:46 | 顯示全部樓層
感謝分享學習啦
回復

使用道具 舉報

ID:440637 發表于 2019-11-13 16:50 | 顯示全部樓層
謝謝你,學習了
回復

使用道具 舉報

ID:69115 發表于 2020-1-3 10:34 | 顯示全部樓層
這個程序挺實用,下來試試.謝謝樓主分享
回復

使用道具 舉報

ID:283883 發表于 2020-1-4 08:06 | 顯示全部樓層
哇塞,樓主電路板怎么做的,怎么這么好,像工廠打樣的一樣
回復

使用道具 舉報

ID:428443 發表于 2020-7-29 23:25 來自手機 | 顯示全部樓層
請問這個電位器 用多大阻值的 謝謝
回復

使用道具 舉報

ID:378732 發表于 2020-8-3 03:05 | 顯示全部樓層
這個PCB是用雕刻機雕的嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜亚洲| 一区不卡在线观看 | 国产精品久久久久久吹潮 | av大片 | 黄网免费看 | 亚洲97| 国产精品成人一区二区 | 久草中文在线观看 | 久久久免费 | 国产线视频精品免费观看视频 | 日本精品在线播放 | 欧美啪啪网站 | 欧美网址在线观看 | 日本在线一区二区三区 | 中文字幕亚洲欧美日韩在线不卡 | av免费在线播放 | 免费久久精品视频 | 欧美在线a | 亚洲 欧美 日韩在线 | 国产精彩视频在线观看 | 91精品国产综合久久久久久首页 | 在线观看深夜视频 | 毛片免费观看视频 | 日韩欧美在线观看视频网站 | 中文字幕av网址 | 国产精品不卡 | av入口 | 韩国理论电影在线 | 一区二区在线免费观看 | 二区三区在线观看 | 亚洲高清在线免费观看 | 高清一区二区视频 | 国产一区二区三区久久久久久久久 | 日日夜夜视频 | 欧美精品一区二区在线观看 | 日韩欧美精品一区 | 午夜视频精品 | 精品av | 日韩欧美精品 | 欧美日韩在线一区二区 | 欧美精品久久久 |