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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 853|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機pwm程序 小燈會出現(xiàn)閃爍

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1143041 發(fā)表于 2025-1-15 00:10 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


在這里我發(fā)現(xiàn)小燈會出現(xiàn)閃爍,就是他會慢慢亮,慢慢滅,但是就是會閃幾下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1133081 發(fā)表于 2025-1-15 08:10 | 只看該作者
調(diào)光燈出現(xiàn)閃爍是因為PWM周期大于20ms。樓主用改變定時中斷周期來改變占空比的方式不妥。
//以200um中斷周期為例,占空比0~100%
void Timer0Interrupt(void) interrupt 1
{
        static unsigned char count=0;
    TH0 = 0xFF;
    TL0 = 0x38;
        if(++count>=100)count=0;
//  num值在主函數(shù)中由按鍵調(diào)整0~100
        if(count>=num)OUT=0;//暗
        else OUT=1;//亮
}
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2025-1-15 09:33 | 只看該作者
41/42行+12太小了
最少要加30
回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2025-1-15 11:02 | 只看該作者
WL0123 發(fā)表于 2025-1-15 08:10
調(diào)光燈出現(xiàn)閃爍是因為PWM周期大于20ms。樓主用改變定時中斷周期來改變占空比的方式不妥。
//以200um中斷周 ...

什么人工智%發(fā)言?
回復(fù)

使用道具 舉報

5#
ID:1143041 發(fā)表于 2025-1-15 23:24 | 只看該作者
WL0123 發(fā)表于 2025-1-15 08:10
調(diào)光燈出現(xiàn)閃爍是因為PWM周期大于20ms。樓主用改變定時中斷周期來改變占空比的方式不妥。
//以200um中斷周 ...

好的,謝謝了
回復(fù)

使用道具 舉報

6#
ID:1143041 發(fā)表于 2025-1-15 23:25 | 只看該作者
lkc8210 發(fā)表于 2025-1-15 09:33
41/42行+12太小了
最少要加30

感謝,我去試試看
回復(fù)

使用道具 舉報

7#
ID:891686 發(fā)表于 2025-1-16 08:34 | 只看該作者
PWM 是周期不變,占空比變化的信號。

定時器應(yīng)設(shè)置為固定周期,定時時間到就對一個計數(shù)器進行加一操作。
計數(shù)器值小于占空比輸出高電平;大于占空比輸出低電平。
計數(shù)器值如果大于 PWM 周期則計數(shù)器清零。
回復(fù)

使用道具 舉報

8#
ID:1073939 發(fā)表于 2025-1-16 09:47 | 只看該作者
pwm工作期間只能在中斷期間操作pwmout,否則可能會閃爍。
configpwm()要分成2個函數(shù)。一個僅用于計算High,Low的加載值,另一個配置T0,開啟或關(guān)閉T0。
High,Low的加載值僅在T0中斷處理更新。

  1. bit gbTR0;
  2. void pwm_onoff(bit b)
  3. {
  4.         gbTR0=b;
  5.         if(b){
  6.                 TR0 = 1;
  7.         }
  8. }
  9. void T0_ISR(void)
  10. {
  11.         pwmout=!pwmout;
  12.         if(pwmout){
  13.                 TH0=HighRH;TL0=HighRL;
  14.         }
  15.         else{
  16.                 //僅在此更新pwm加載值
  17.                 HighRH=high>>8;HighRL=high;LowRH=low>>8;LowRL=low;
  18.                 TH0=LowRH;TL0=LowRL;
  19.                 TR0 = gbTR0;
  20.         }
  21. }
復(fù)制代碼
回復(fù)

使用道具 舉報

9#
ID:1073939 發(fā)表于 2025-1-16 10:56 | 只看該作者
小優(yōu)化:
在占空比為0或100時關(guān)閉T0中斷,否則開啟T0中斷。
這樣configpwm()可以不用分成2個函數(shù)。

  1. unsigned int high,low;
  2. unsigned char HighRH,HighRL,LowRH,LowRL;
  3. bit gbTR0;
  4. void configpwm(unsigned int fr,unsigned char dc)
  5. {
  6.         //計算high,low;
  7.         if(!TR0){//否則由T0中斷刷新加載值
  8.                 HighRH=high>>8;HighRL=high;LowRH=low>>8;LowRL=low;
  9.                 TH0=LowRH;TL0=LowRL;
  10.         }
  11.         if(dc==100){
  12.                 gbTR0=0;
  13.                 TR0 = 0;
  14.                 pwmout=1;
  15.         }
  16.         else if(dc==0){
  17.                 gbTR0=0;
  18.                 if(!TR0)//否則由T0中斷使pwmout=0;
  19.                         pwmout=0;
  20.         }
  21.         else {
  22.                 gbTR0=1;
  23.                 TR0 = 1;
  24.         }
  25. }
  26. void T0_ISR(void)
  27. {
  28.         pwmout=!pwmout;
  29.         if(pwmout){
  30.                 TH0=HighRH;TL0=HighRL;
  31.         }
  32.         else{
  33.                 //僅在此更新pwm加載值
  34.                 HighRH=high>>8;HighRL=high;LowRH=low>>8;LowRL=low;
  35.                 TH0=LowRH;TL0=LowRL;
  36.                 TR0 = gbTR0;
  37.         }
  38. }

  39. void main(void)
  40. {
  41.         T0_cfg();
  42.         configpwm(100,0);
  43.         while(1){
  44.                 char dc=0;
  45.                 for(;dc<=100;dc+=10){
  46.                         configpwm(100,dc);
  47.                         //死等
  48.                 }
  49.                 for(;dc<=100;dc-=10){
  50.                         configpwm(100,dc);
  51.                         //死等
  52.                 }
  53.         }
  54. }
復(fù)制代碼
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 青青草在线视频免费观看 | 奇米av| 国产精品精品久久久 | 国产成人综合久久 | 色婷婷综合成人av | 九色91视频 | 99精品久久久久久久 | 色综合久 | 99色视频 | 一级在线观看 | 欧美一区在线视频 | 在线观看av网站永久 | 中文字幕精 | 中文字幕一区二区三区四区 | 91一区二区三区 | 国产中文字幕亚洲 | 99草免费视频 | a级黄色片在线观看 | www.日本精品 | 91欧美激情一区二区三区成人 | 91精品在线播放 | 一区二区三区视频在线观看 | 妹子干综合| 一区二区三区在线观看视频 | 亚洲高清久久 | 成人在线视频网 | 日韩在线不卡 | 亚洲欧美综合精品久久成人 | 超碰在线影院 | av日韩高清 | 888久久久| 精品91视频| av电影一区二区 | 另类 综合 日韩 欧美 亚洲 | 日日干天天操 | 99久久婷婷 | 大象视频一区二区 | 四虎最新视频 | 秋霞精品 | 久久国产免费看 | 武道仙尊动漫在线观看 |