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

標(biāo)題: 關(guān)于單片機(jī)pwm占空比讓LED漸變的問(wèn)題 [打印本頁(yè)]

作者: sq8422779    時(shí)間: 2020-12-3 11:20
標(biāo)題: 關(guān)于單片機(jī)pwm占空比讓LED漸變的問(wèn)題
看了論壇,嘗試了自己做led漸變的程序.

        yc=1000;
        led=0;
                while(1){
                  led=0;
                        a=yc-300;
                        if(a<0){a=0;}
                        Delay_us(a);
                        led=1;
                        b=1000-yc;
                        if(b<0){b=0;}
                        Delay_us(b);
                        yc=yc-1;
                        if(yc==0){led=1;break;}
                }
                while(1){
                  led=0;
                        a=yc-300;
                        if(a<0){a=0;}
                        Delay_us(a);
                        led=1;
                        b=1000-yc;
                        if(b<0){b=0;}
                        Delay_us(b);
                        yc=yc+1;
                        if(yc==1000){led=0;break;}
                }
               

不停的漸亮,漸暗,但是發(fā)現(xiàn)2個(gè)問(wèn)題,
1.在漸亮的時(shí)候,最后會(huì)突然很亮.
2.漸變過(guò)程中,閃爍比較明顯..
視頻鏈接:http://www.56.com/u74/v_MTY4MDcwMDMx.html

作者: 權(quán)威人物    時(shí)間: 2020-12-3 15:31
//你這程序爛的很,不用定時(shí)器可以這樣
while(1){
               led=0;
               Delay_us(a);
               led=1;
               Delay_us(1000-a);
                if(a++>1000)
                {a=0;break;}

             }
while(1){
               led=0;
               Delay_us(1000-a);
               led=1;
               Delay_us(a);
                if(a++>1000)
                {a=0;break;}

             }





作者: lovexulu    時(shí)間: 2020-12-3 22:55
led是壓敏器件。。在達(dá)到閾值電壓時(shí)會(huì)有自穩(wěn)壓特性,導(dǎo)致電流變化變小,所以均勻輸出pwm并不會(huì)得到均勻光亮度增加。還有多理解pwm的意思,程序?qū)懙牟惶谩T賰?yōu)化一下吧。
作者: 1922323908    時(shí)間: 2020-12-3 23:55
可以參考一下自動(dòng)控制原理這本書(shū),
作者: sq8422779    時(shí)間: 2020-12-4 03:29
權(quán)威人物 發(fā)表于 2020-12-3 15:31
//你這程序爛的很,不用定時(shí)器可以這樣
while(1){
               led=0;

你不覺(jué)得這程序簡(jiǎn)單,上手特容易嗎?你的這個(gè)程序沒(méi)有多大改變
作者: sq8422779    時(shí)間: 2020-12-4 03:34
lovexulu 發(fā)表于 2020-12-3 22:55
led是壓敏器件。。在達(dá)到閾值電壓時(shí)會(huì)有自穩(wěn)壓特性,導(dǎo)致電流變化變小,所以均勻輸出pwm并不會(huì)得到均勻光亮 ...

難怪最后一秒突然很亮,是因?yàn)樽盍恋臅r(shí)候需要電流小 一下達(dá)到閾值。謝謝。那我問(wèn)下, pwm不就是不停的開(kāi)關(guān),輸出方波嗎?
作者: wulin    時(shí)間: 2020-12-4 07:48
sq8422779 發(fā)表于 2020-12-4 03:34
難怪最后一秒突然很亮,是因?yàn)樽盍恋臅r(shí)候需要電流小 一下達(dá)到閾值。謝謝。那我問(wèn)下, pwm不就是不停的開(kāi) ...

PWM調(diào)光與線性調(diào)光是兩回事。給你一個(gè)極簡(jiǎn)單且不用定時(shí)器的呼吸燈示例參考。
  1. #include<reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;
  4. sbit led=P1^0;
  5. uint count=0,time0=0,time1=0,DIR=0;

  6. void main( )
  7. {       
  8.         while (1)
  9.         {
  10.                 time0++;
  11.                 count++;
  12.                 if(count>=80)
  13.                 {
  14.                         count=0;
  15.                         if(DIR==0)
  16.                         time1++;
  17.                         else
  18.                         time1--;               
  19.                 }
  20.                 if(time1>=500)
  21.                         DIR=1;
  22.                 if(time1==0)
  23.                         DIR=0;
  24.                 if(time0>=500)
  25.                         time0=0;
  26.                 if(time0<=time1)
  27.                         led=0;
  28.                 else
  29.                         led=1;
  30.         }
  31. }
復(fù)制代碼

作者: chenyinhu    時(shí)間: 2020-12-4 09:13
sq8422779 發(fā)表于 2020-12-4 03:34
難怪最后一秒突然很亮,是因?yàn)樽盍恋臅r(shí)候需要電流小 一下達(dá)到閾值。謝謝。那我問(wèn)下, pwm不就是不停的開(kāi) ...

應(yīng)該是均勻的改變占空比,理論上是均勻的改變占空比亮度也會(huì)變化,如果用MOS管搭一個(gè)BUCK電路用普通燈泡就可以看到均勻的變化效果
作者: chenyinhu    時(shí)間: 2020-12-4 09:15
這是我之前寫(xiě)的采用中斷方式呼吸燈效果:
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit pwm =P2^1;
uint count=0,timer1=0,value=0;
bit DIR=1;
void main()
{
TMOD=1;
    TH0=(65536-1)/256;
TL0=(65536-1)%256;
EA=1;//開(kāi)總中斷
ET0=1;//開(kāi)定時(shí)器0中斷
   TR0=1;//TR0置位,啟動(dòng)定時(shí)器


while(1)
{
  
  if(timer1>value)
  {
   pwm=0;
  }
  else
  {
  pwm=1;
  }

}
}

void time0() interrupt 1 using 1
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
timer1++;
count++;
if(timer1>500)
{
timer1=0;
}
if(count>100)
  {
  count=0;
   if(DIR==1)
{
  value++;
}
if(DIR==0)
{
  value--;
}
  }

  if(value==500)
  {
     DIR=0;
  }
  if(value==0)
  {
    DIR=1;
  }

}
作者: chenyinhu    時(shí)間: 2020-12-4 09:16
這個(gè)是不用中斷呼吸燈的代碼:
#include "reg52.h"

sbit LED = P2^0;

#define TIME 300


int main()
{
        unsigned int set  =10,time = 0;
        while(1)
        {
                for(time = 0;time < TIME;time++)
                {
                        if(time > set)
                        {
                                LED = 0;       
                        }
                        else
                        {
                                LED = 1;
                        }
                }
                set++;       
                if(set == TIME)
                {
                        for(;set>0;set--)
                        {
                                for(time = 0;time < TIME;time++)
                                {
                                        if(time > set)
                                        {
                                                LED = 0;       
                                        }
                                        else
                                        {
                                                LED = 1;
                                        }
                                }
                        }
                }
        }
}
作者: wwh2382    時(shí)間: 2020-12-4 10:25
在led兩端并個(gè)電容應(yīng)該有改善
作者: 1641989950    時(shí)間: 2020-12-4 11:09
為什么我看不懂..
作者: 回憶不堪回首    時(shí)間: 2020-12-7 16:40
不要那么多while(1)!要不然你以后會(huì)死很慘。。。
作者: sq8422779    時(shí)間: 2020-12-8 10:04
wulin 發(fā)表于 2020-12-4 07:48
PWM調(diào)光與線性調(diào)光是兩回事。給你一個(gè)極簡(jiǎn)單且不用定時(shí)器的呼吸燈示例參考。

代碼簡(jiǎn)單易懂,漸變效果也很理想,只是不能停留在一個(gè)恒定的漸變狀態(tài),如停留就會(huì)出現(xiàn)閃爍..看來(lái)是沒(méi)辦法通過(guò)PWM來(lái)調(diào)光了..我看看能不能加個(gè)電感 二極管 電容來(lái)達(dá)到.....
作者: 湖南    時(shí)間: 2021-1-4 09:12
利用單片機(jī)的定時(shí)器來(lái)實(shí)現(xiàn)即可,在一段時(shí)間內(nèi)輸出低電平,然后隨著時(shí)間的增加逐漸輸出高電平
作者: 人人學(xué)會(huì)單片機(jī)    時(shí)間: 2021-1-4 10:09
需要用到定時(shí)器或者增強(qiáng)型的PWM模塊,參考這個(gè)貼子http://www.zg4o1577.cn/bbs/dpj-200820-1.html
作者: mengzhixinheng    時(shí)間: 2021-1-5 12:31
就小功率led而言,絕對(duì)不應(yīng)該出現(xiàn)你說(shuō)的問(wèn)題。好好研究一下你的程序和硬件
作者: sq8422779    時(shí)間: 2021-1-28 15:02
wulin 發(fā)表于 2020-12-4 07:48
PWM調(diào)光與線性調(diào)光是兩回事。給你一個(gè)極簡(jiǎn)單且不用定時(shí)器的呼吸燈示例參考。

這代碼好厲害,我拆解了2個(gè)小時(shí)都沒(méi)看懂..佩服的!!!繼續(xù)努力中..
作者: 踏雪無(wú)痕做什么    時(shí)間: 2021-2-7 16:41
我也用定時(shí)器做過(guò)可調(diào)PWM調(diào)節(jié)LED燈玩,一鍵加亮,另一鍵加暗,循環(huán),你講的可能是LED電壓與亮度非線性吧,調(diào)整一下程序,叁數(shù)試試
作者: wuyuwangluo    時(shí)間: 2021-2-7 20:07
        PWM_COUNT++;
        if(255 == lamp1)
        {
           if(PWM_COUNT <= pwm){lamp=1;}      //判斷是否到了點(diǎn)亮LED的時(shí)候          
           else{lamp=0;}
           if(PWM_COUNT>=115){PWM_COUNT=0;}
        }
        else{lamp=0;}
作者: 湖南    時(shí)間: 2021-3-19 23:57
單片機(jī)的定時(shí)中斷判斷就行
作者: TTQ001    時(shí)間: 2021-3-20 08:56
用于控制LED亮度的pwm方法已被許多人使用,搜索示例并學(xué)習(xí)如何編寫(xiě)代碼。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天堂在线一区 | 91精品国产麻豆 | 日本激情一区二区 | 91国产视频在线 | 国产999精品久久久久久绿帽 | 福利一区在线观看 | av中文字幕网 | 免费观看的av毛片的网站 | 一级黄a视频 | 97在线观看 | 国产精品久久久久久久7电影 | 国产在线激情视频 | 一区二区高清 | 国产精品免费观看 | 日本一区二区高清不卡 | 欧美高清性xxxxhdvideosex | 麻豆av片| 81精品国产乱码久久久久久 | 97精品超碰一区二区三区 | 91精品久久久久久久久久入口 | 日韩日韩日韩日韩日韩日韩日韩 | 国产精品污www在线观看 | 精品久久99| 一区二区三区四区在线视频 | 欧美精品欧美精品系列 | 中文字幕一区二区三区四区五区 | 国产福利在线看 | 成人久久久 | 成人高清在线视频 | 91精品国产一区二区在线观看 | 夜夜爽99久久国产综合精品女不卡 | 国产高清视频在线观看 | 久久精品国产久精国产 | 美女视频黄色片 | 国户精品久久久久久久久久久不卡 | 亚洲aⅴ | 亚洲综合日韩精品欧美综合区 | 一色一黄视频 | 成人免费视频在线观看 | 中文字幕av在线 | 久久久蜜桃 |