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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2651|回復: 17
打印 上一主題 下一主題
收起左側

兩路互補調光調色方案如何實現,求大神指點

  [復制鏈接]
跳轉到指定樓層
樓主
如圖是一張調光調色方案的 PWM波形圖,有大神知道程序如何實現嗎?求大神幫忙指點下 ,萬分感謝
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301191 發表于 2022-1-17 23:13 | 只看該作者
頂一下
回復

使用道具 舉報

板凳
ID:488334 發表于 2022-1-18 15:06 | 只看該作者
1、第一種方法:第一個圖用硬件PWM互補模式,死區調節,第二個用不了硬件PWM。
2、第二種方法:干脆直接用IO模擬PWM。不過這樣的話頻率就無法調得很高。
回復

使用道具 舉報

地板
ID:543220 發表于 2022-1-20 08:13 | 只看該作者
tatachaoren 發表于 2022-1-18 15:06
1、第一種方法:第一個圖用硬件PWM互補模式,死區調節,第二個用不了硬件PWM。
2、第二種方法:干脆直接用 ...

算了你沒明白意思
回復

使用道具 舉報

5#
ID:624769 發表于 2022-1-20 23:23 | 只看該作者
估計沒人能看明白的你的意思,
你發的圖只是說明了 PWMC+PWMW的占空比 與 亮度之間的關系。
跟“如何實現” 之間 沒有任何關聯。壓根不知道你所謂的“如何實現”到底指的什么。
回復

使用道具 舉報

6#
ID:161164 發表于 2022-1-21 00:17 | 只看該作者
簡單,用一個定器就可以了
以下是三種模式

自動循環



手動選擇雙色比例



手動選擇輸出比例


回復

使用道具 舉報

7#
ID:140489 發表于 2022-1-21 09:15 | 只看該作者
lkc8210 發表于 2022-1-21 00:17
簡單,用一個定器就可以了
以下是三種模式

能發下源碼嗎
回復

使用道具 舉報

8#
ID:161164 發表于 2022-1-21 13:47 | 只看該作者

用例程改一下就行

  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited -------------------------------*/
  3. /* --- STC 1T Series MCU RC Demo -----------------------------------*/
  4. /* If you want to use the program or the program referenced in the  */
  5. /* article, please specify in which data and procedures from STC    */
  6. /*------------------------------------------------------------------*/

  7. #include    <reg52.h>


  8. /*************  功能說明    **************

  9. 本程序演示使用定時器做軟件PWM。

  10. 定時器0做16位自動重裝,中斷,從T0CLKO高速輸出PWM。

  11. 本例程是使用STC15F/L系列MCU的定時器T0做模擬PWM的例程。

  12. PWM可以是任意的量程。但是由于軟件重裝需要一點時間,所以PWM占空比最小為32T/周期,最大為(周期-32T)/周期, T為時鐘周期。

  13. PWM頻率為周期的倒數。假如周期為6000, 使用24MHZ的主頻,則PWM頻率為4000HZ。

  14. ******************************************/

  15. #define     MAIN_Fosc       24000000UL      //定義主時鐘

  16. #define     PWM_DUTY        6000            //定義PWM的周期,數值為時鐘周期數,假如使用24.576MHZ的主頻,則PWM頻率為6000HZ。

  17. #define     PWM_HIGH_MIN    32              //限制PWM輸出的最小占空比。用戶請勿修改。
  18. #define     PWM_HIGH_MAX    (PWM_DUTY-PWM_HIGH_MIN) //限制PWM輸出的最大占空比。用戶請勿修改。

  19. typedef     unsigned char   u8;
  20. typedef     unsigned int    u16;
  21. typedef     unsigned long   u32;

  22. sfr P3M1  = 0xB1;   //P3M1.n,P3M0.n     =00--->Standard,    01--->push-pull
  23. sfr P3M0  = 0xB2;   //                  =10--->pure input,  11--->open drain
  24. sfr AUXR  = 0x8E;
  25. sfr INT_CLKO = 0x8F;

  26. sbit    P_PWM = P3^5;       //定義PWM輸出引腳。
  27. //sbit  P_PWM = P1^4;       //定義PWM輸出引腳。STC15W204S

  28. u16     pwm;                //定義PWM輸出高電平的時間的變量。用戶操作PWM的變量。

  29. u16     PWM_high,PWM_low;   //中間變量,用戶請勿修改。

  30. void    delay_ms(unsigned char ms);
  31. void    LoadPWM(u16 i);


  32. /******************** 主函數**************************/
  33. void main(void)
  34. {
  35.     P_PWM = 0;
  36.     P3M1 &= ~(1 << 5);  //P3.5 設置為推挽輸出
  37.     P3M0 |=  (1 << 5);

  38. //  P1M1 &= ~(1 << 4);  //P1.4 設置為推挽輸出   STC15W204S
  39. //  P1M0 |=  (1 << 4);

  40.     TR0 = 0;        //停止計數
  41.     ET0 = 1;        //允許中斷
  42.     PT0 = 1;        //高優先級中斷
  43.     TMOD &= ~0x03;  //工作模式,0: 16位自動重裝
  44.     AUXR |=  0x80;  //1T
  45.     TMOD &= ~0x04;  //定時
  46.     INT_CLKO |=  0x01;  //輸出時鐘

  47.     TH0 = 0;
  48.     TL0 = 0;
  49.     TR0 = 1;    //開始運行

  50.     EA = 1;

  51.     pwm = PWM_DUTY / 10;    //給PWM一個初值,這里為10%占空比
  52.     LoadPWM(pwm);           //計算PWM重裝值


  53.     while (1)
  54.     {
  55.         while(pwm < (PWM_HIGH_MAX-8))
  56.         {
  57.             pwm += 8;       //PWM逐漸加到最大
  58.             LoadPWM(pwm);
  59.             delay_ms(8);
  60.         }
  61.         while(pwm > (PWM_HIGH_MIN+8))
  62.         {
  63.             pwm -= 8;   //PWM逐漸減到最小
  64.             LoadPWM(pwm);
  65.             delay_ms(8);
  66.         }
  67.     }
  68. }


  69. //========================================================================
  70. // 函數: void  delay_ms(unsigned char ms)
  71. // 描述: 延時函數。
  72. // 參數: ms,要延時的ms數, 這里只支持1~255ms. 自動適應主時鐘.
  73. // 返回: none.
  74. // 版本: VER1.0
  75. // 日期: 2013-4-1
  76. // 備注:
  77. //========================================================================
  78. void  delay_ms(unsigned char ms)
  79. {
  80.      unsigned int i;
  81.      do{
  82.           i = MAIN_Fosc / 13000;
  83.           while(--i)    ;
  84.      }while(--ms);
  85. }

  86. /**************** 計算PWM重裝值函數 *******************/
  87. void    LoadPWM(u16 i)
  88. {
  89.     u16 j;

  90.     if(i > PWM_HIGH_MAX)        i = PWM_HIGH_MAX;   //如果寫入大于最大占空比數據,則強制為最大占空比。
  91.     if(i < PWM_HIGH_MIN)        i = PWM_HIGH_MIN;   //如果寫入小于最小占空比數據,則強制為最小占空比。
  92.     j = 65536UL - PWM_DUTY + i; //計算PWM低電平時間
  93.     i = 65536UL - i;            //計算PWM高電平時間
  94.     EA = 0;
  95.     PWM_high = i;   //裝載PWM高電平時間
  96.     PWM_low  = j;   //裝載PWM低電平時間
  97.     EA = 1;
  98. }

  99. /********************* Timer0中斷函數************************/
  100. void timer0_int (void) interrupt 1
  101. {
  102.     if(P_PWM)
  103.     {
  104.         TH0 = (u8)(PWM_low >> 8);   //如果是輸出高電平,則裝載低電平時間。
  105.         TL0 = (u8)PWM_low;
  106.     }
  107.     else
  108.     {
  109.         TH0 = (u8)(PWM_high >> 8);  //如果是輸出低電平,則裝載高電平時間。
  110.         TL0 = (u8)PWM_high;
  111.     }
  112. }

復制代碼
回復

使用道具 舉報

9#
ID:1003140 發表于 2022-1-22 22:26 | 只看該作者
軟件好做,硬件不好做
回復

使用道具 舉報

10#
ID:543220 發表于 2022-3-31 08:41 | 只看該作者
lkc8210 發表于 2022-1-21 13:47
用例程改一下就行

你這個 寫 沒有死區的 , 用硬件帶死區的PWM , 例如PWM0  PWM2N
回復

使用道具 舉報

11#
ID:161164 發表于 2022-3-31 14:49 | 只看該作者
a2748446 發表于 2022-3-31 08:41
你這個 寫 沒有死區的 , 用硬件帶死區的PWM , 例如PWM0  PWM2N

你的圖也沒有顯示要死區啊~
你用硬件帶死區的PWM弄好了嗎?
回復

使用道具 舉報

12#
ID:482083 發表于 2022-8-7 16:03 | 只看該作者
樓主有調好了嘛,小弟也碰到了這個問題,第一個圖能做到,第二個圖就不知道如何下手
回復

使用道具 舉報

13#
ID:140489 發表于 2022-8-8 15:24 | 只看該作者
lkc8210 發表于 2022-1-21 13:47
用例程改一下就行

仿真的那個代碼能發一下嗎?
回復

使用道具 舉報

14#
ID:320097 發表于 2022-8-8 15:29 | 只看該作者
你給信息好有限,很多都是靠猜
回復

使用道具 舉報

15#
ID:609524 發表于 2022-8-9 17:42 | 只看該作者
雙色溫調光調色嗎
回復

使用道具 舉報

16#
ID:482083 發表于 2022-8-10 14:50 | 只看該作者
lkc8210 發表于 2022-1-21 00:17
簡單,用一個定器就可以了
以下是三種模式

大佬可以發一下你仿真的的代碼嗎
回復

使用道具 舉報

17#
ID:161164 發表于 2022-8-10 17:12 | 只看該作者
cj2333 發表于 2022-8-10 14:50
大佬可以發一下你仿真的的代碼嗎

8樓有例程
回復

使用道具 舉報

18#
ID:25310 發表于 2022-8-11 10:17 | 只看該作者
為什么不用硬件PWM輸出? 兩個同周期的PWM。用互補方式輸出就OK了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲三级视频 | 在线观看 亚洲 | 青青久久| 亚洲综合一区二区三区 | 97人人澡人人爽91综合色 | 欧美一级二级视频 | 国产免费av在线 | 久久精品国产亚洲一区二区三区 | 麻豆国产一区二区三区四区 | 国产精品1区 | 日韩成人免费视频 | 一区二区精品电影 | 九九久久久 | 午夜精品一区二区三区在线观看 | 婷婷开心激情综合五月天 | 亚洲一区有码 | 操视频网站 | 成人免费视频在线观看 | 91玖玖| 日韩亚洲视频 | 国产综合区 | 欧美成人一区二区 | 亚洲一区二区在线视频 | 一级毛片免费 | 国产精品a免费一区久久电影 | 国产片侵犯亲女视频播放 | 秋霞影院一区二区 | 91精品国产综合久久久久 | 日韩欧美三区 | 成人精品福利 | 毛片久久久 | 欧美一区免费在线观看 | 天堂网中文字幕在线观看 | 中文字字幕一区二区三区四区五区 | 亚洲成av人影片在线观看 | 网站黄色在线免费观看 | 小草久久久久久久久爱六 | 婷婷免费在线 | 亚洲区一区二 | 国产精品久久久久久中文字 | 日韩一区不卡 |