亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我想用單片機進行pwm分級調整改變LED亮度

[復制鏈接]
跳轉到指定樓層
樓主
最后進行調試時候,為什么這個發光二極管led就總是一閃一閃的,加1時候,led閃得越來越快?
這算是調整亮度嗎?我要是亮和暗那種樣子。

程序都編輯好了
sbit led1=P2^0;
sbit led2=P2^2;
sbit PWM=P3^7;
sbit key1=P2^6;//A加
sbit key2=P2^7;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
u8 fenpin=1;                       
u16 chuzhi=500;        
u16 timer0;                                       
void delay(u16 i)
{
        while(i--);        
}

void key()
{
  if(key1==0)   //A加
        {
          delay(100);
                 if(key1==0)
           {
                          if(fenpin<16)
                                {
                     fenpin++;
                                        beep=0;
                                }else
                                {
                                 beep=1;
                                }
                 }
                 while(!key1);
        }
        if(key2==0)     //A減
        {
          delay(100);
                 if(key2==0)
           {
                         if(fenpin>=2)
                         {
                           fenpin--;
                                  beep=0;
                         }else
                         {
                            beep=1;
                         }
                 }
                 while(!key2);
        }
}
void timer_init(void)  //定時器初始化函數
{
        TMOD=0X51;          //設置定時器工作模式
        PT0=1;     
        TH0 = (65536 -chuzhi)/256;//給定時器賦初值
        TL0 = (65536 -chuzhi)%256;
        TH1=0;              //不設初值
        TL1=0;
        ET0=1;              //開中斷
        ET1=1;
        TR0=1;              //開定時器
        TR1=1;
        EA=1;               //開總中斷
}
void main()
{        
        timer_init();
         beep=0;
        while(1)
        {
                        key();
               
        }
}


void timer() interrupt 1          //定時器0中斷函數
{
        TH0 = (65536 - chuzhi)/256;//給定時器賦初值
        TL0 = (65536 - chuzhi)%256;
        timer0=!timer0;          //時間變量
        if(TL1>=fenpin)
                {
                  TL1=0;
                        PWM=!PWM;
                }
  if(timer0)
        {
                P1=0x00;
          led1=0;
    led2=1;        
                P1=smgduan[fenpin/10];
        }else
        {
                P1=0x00;
          led1=1;
    led2=0;               
                P1=smgduan[fenpin%10];
        }
}         

51hei圖片_20200102211904.png (147.7 KB, 下載次數: 41)

51hei圖片_20200102211904.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:462827 發表于 2020-1-3 09:16 | 只看該作者
仿真的只能這樣閃了,你要用實物單片機的led燈才能真正展現亮度的變化
回復

使用道具 舉報

板凳
ID:454178 發表于 2020-1-3 10:10 | 只看該作者
hantu 發表于 2020-1-3 09:16
仿真的只能這樣閃了,你要用實物單片機的led燈才能真正展現亮度的變化

但是 我用實物焊接單片機led燈,其他什么沒問題,就這個led燈,我加1時候最后,它就是閃閃閃著閃爍,感覺沒有亮度調整。
回復

使用道具 舉報

地板
ID:475247 發表于 2020-1-3 10:46 | 只看該作者
將你后面PWM如下圖這樣接就能看到仿真的亮度變化

pwm.jpg (29.18 KB, 下載次數: 48)

pwm.jpg
回復

使用道具 舉報

5#
ID:401564 發表于 2020-1-4 11:04 | 只看該作者
我在這總能看到很多人先花很大精力去解決好仿真的問題,總感覺仿真OK了就萬事大吉了一樣,然后拼命的解決好了仿真的問題,實物卻又是另外一回事,何苦呢?
這原本是一個很簡單的項目:
1,把PWM頻率設定為1KHZ,不管是延時,定時器還是片上自帶的PWM功能都行,這1KHZ是大多LED調光都用的頻率,可以適應90%以上的LED
2,LEDVF值(就是LED的正向導通壓降)不同,它對PWM占空比的亮度變化也不同,所以,你就設定9個等級,占空比從10%到90%,每次調節占空比加1,然后你就可以大概知道這個LED要怎么調節了。
3,如果你連占空比都不知道怎么調節!。……!!。…!!。…!
回復

使用道具 舉報

6#
ID:680894 發表于 2020-1-4 20:32 | 只看該作者
仿真玩的好,實物做起來才更簡單!有些個人自以為隨便說說就是解決了問題,其實是沒有入到精髓!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表