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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)控制LED燈怎樣從暗到亮?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:826754 發(fā)表于 2021-9-3 08:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬,如題怎樣編寫LED燈可以從暗到亮的起動(dòng)。用P3.7來(lái)控制PMOS管。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:10947 發(fā)表于 2021-9-3 11:06 | 只看該作者
輸出占空比可調(diào)的PWM脈沖
回復(fù)

使用道具 舉報(bào)

板凳
ID:514901 發(fā)表于 2021-9-3 11:57 | 只看該作者
pwm調(diào)壓
回復(fù)

使用道具 舉報(bào)

地板
ID:668693 發(fā)表于 2021-9-3 14:41 | 只看該作者
好家伙  我程序都給你發(fā)出來(lái)
#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義

sbit LED0=P1^0;// 用sbit 關(guān)鍵字 定義 LED到P1.0端口,LED是自己任意定義且容易記憶的符號(hào)

void Delay(unsigned int t); //函數(shù)聲明
/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{
                                                                               
        unsigned int CYCLE=600,PWM_LOW=0;        //定義周期并賦值
        while (1)                                                                         //主循環(huán)
                        {
                                 LED0=1;
                                 Delay(60000);                                //特意加延時(shí),可以看到熄滅的過(guò)程
                                 for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)//PWM_LOW表示低
                                        {
                                 //電平時(shí)間,這個(gè)循環(huán)中低電平時(shí)長(zhǎng)從1累加到CYCLE(周期)的值,即600次
                                                        LED0=0;        //點(diǎn)亮LED  
                                                        Delay(PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從1加至599
                                                        LED0=1;        //熄滅LED
                                                        Delay(CYCLE-PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從599減至1
                                        }
                                        LED0=0;
                                        for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
                                        { //與逐漸變亮相反的過(guò)程
                                                LED0=0;
                                                Delay(PWM_LOW);
                                                LED0=1;
                                                Delay(CYCLE-PWM_LOW);
                                        }                                                 
                        }
}
/*------------------------------------------------
延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值
unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
回復(fù)

使用道具 舉報(bào)

5#
ID:136485 發(fā)表于 2021-9-3 16:01 | 只看該作者
在簡(jiǎn)單一點(diǎn)網(wǎng)上有專門調(diào)光的IC賣,用555都可以搭個(gè)調(diào)光電路
回復(fù)

使用道具 舉報(bào)

6#
ID:149799 發(fā)表于 2021-9-3 18:30 | 只看該作者
林神經(jīng) 發(fā)表于 2021-9-3 14:41
好家伙  我程序都給你發(fā)出來(lái)
#include //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定 ...

謝謝,你是最快的,最直接的幫忙,
回復(fù)

使用道具 舉報(bào)

7#
ID:420836 發(fā)表于 2021-9-4 08:14 | 只看該作者
使用PWM控制應(yīng)該很容易,在這個(gè)論壇上尋找一些示例項(xiàng)目。
回復(fù)

使用道具 舉報(bào)

8#
ID:267932 發(fā)表于 2021-9-4 11:27 | 只看該作者
PWM 控制占空比,或者定時(shí)器,模擬PWM改變占空比。
回復(fù)

使用道具 舉報(bào)

9#
ID:417092 發(fā)表于 2021-9-5 19:45 | 只看該作者
100Hz   PWM占空比5%----90%每200ms增加5%
回復(fù)

使用道具 舉報(bào)

10#
ID:57657 發(fā)表于 2021-9-5 20:15 | 只看該作者
例如亮度30%頻率100Hz,10毫秒內(nèi)3毫秒點(diǎn)亮,7毫秒熄滅,頻率高就會(huì)產(chǎn)生視覺(jué)暫留,這就叫PWM調(diào)光的原理,懂?
回復(fù)

使用道具 舉報(bào)

11#
ID:956872 發(fā)表于 2021-9-5 21:32 | 只看該作者
最簡(jiǎn)單的調(diào)亮度的
void timer1() interrupt 12
{       zq++;       //周期
      if(zq == 250)
              zq = P1 = 0;
      if(zkb == zq)      //調(diào)zkb就能調(diào)亮暗   
     P1 = 0xff;   
回復(fù)

使用道具 舉報(bào)

12#
ID:890186 發(fā)表于 2021-9-6 06:50 來(lái)自手機(jī) | 只看該作者
用定時(shí)器模擬pwm,調(diào)占空比,占空比越大越亮
回復(fù)

使用道具 舉報(bào)

13#
ID:950946 發(fā)表于 2021-9-6 11:07 | 只看該作者
利用PWM調(diào)占空比,用定時(shí)器控制從0%一直到100%。你就能看到led的亮度變化
回復(fù)

使用道具 舉報(bào)

14#
ID:826754 發(fā)表于 2021-9-6 12:02 | 只看該作者
F:\單片機(jī)文件\銳志流光燈\銳志轉(zhuǎn)向流光燈
回復(fù)

使用道具 舉報(bào)

15#
ID:826754 發(fā)表于 2021-9-7 17:08 | 只看該作者
  1. /***使用STC8F1K08S2-SOP16為主控轉(zhuǎn)向流光燈
  2. 1、上電掃描藍(lán)光從兩邊向中間流光一次——藍(lán)光從L6流向L1一次——黃光從L1流向L1一次——藍(lán)光呼吸燈兩次后滅。
  3. 2、雙閃時(shí),左右同時(shí)接到信號(hào),左右跟隨信號(hào)同時(shí)流光。
  4. 3、接收到左或右轉(zhuǎn)向信號(hào)時(shí)相應(yīng)方向流光一次常亮,中斷滅。
  5. 4、斷開左或右轉(zhuǎn)向信號(hào)時(shí),延時(shí)2秒日行燈LED11 100%亮度。
  6. *****/

  7. #include <STC8.H>  
  8. typedef unsigned char u8;
  9. typedef unsigned int u16;
  10. /********端口引腳定義*****/  
  11. sbit KEYL=P5^4;    //設(shè)置左方向觸發(fā)信號(hào)

  12. sbit LED1=P3^2;    //左方向流光燈設(shè)定
  13. sbit LED2=P3^3;
  14. sbit LED3=P3^4;
  15. sbit LED4=P3^5;
  16. sbit LED5=P3^6;
  17. sbit LED6=P3^7;   

  18. sbit YU=P1^3;
  19. sbit BU=P1^2;

  20. bit signl=0;       //觸發(fā)狀態(tài)標(biāo)志
  21. //bit signk=0;
  22. u16 count3=0,num;

  23. /******函數(shù)聲明*******/

  24. void Delay(unsigned int t); //延時(shí)函數(shù)
  25. void keyScan();                           //觸發(fā)子程序函數(shù)
  26. void Led_YU();             //呼吸燈函數(shù)

  27. /*********定時(shí)器0初始化函數(shù)***********/
  28. void Timer0Init()                //5毫秒@11.0592MHz
  29. {
  30.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  31.         TMOD &= 0xF0;                //設(shè)置自動(dòng)重裝模式
  32.         TL0 = 0x00;                        //設(shè)置定時(shí)初值
  33.         TH0 = 0x28;                        //設(shè)置定時(shí)初值
  34.         TF0 = 0;                                //清除TF0標(biāo)志
  35.         TR0 = 1;                                //定時(shí)器0開始計(jì)時(shí)
  36.         EA  = 1;                                //開總中斷
  37.         ET0 = 1;                                //開T0中斷
  38. }
  39. /********左流光函數(shù)*********/
  40. void Led_L()
  41. {
  42. YU=1;
  43.         if(num>50)              {LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;}
  44.         else if(num<=50&&num>40){LED1=1;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;}
  45.         else if(num<=40&&num>30){LED1=1;LED2=1;LED3=1;LED4=0;LED5=0;LED6=0;}
  46.         else if(num<=30&&num>20){LED1=1;LED2=1;LED3=1;LED4=1;LED5=0;LED6=0;}
  47.         else if(num<=20&&num>10){LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=0;}
  48.         else if(num>0&&num==10) {LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;}
  49. }
  50. /*******右流光函數(shù)******/
  51. /**void Led_R()
  52. {
  53.         if(num>50)              {LED6=1;LED7=0;LED8=0;LED9=0;LEDA=0;}
  54.         else if(num<=50&&num>40){LED6=1;LED7=1;LED8=0;LED9=0;LEDA=0;}
  55.         else if(num<=40&&num>30){LED6=1;LED7=1;LED8=1;LED9=0;LEDA=0;}
  56.         else if(num<=30&&num>20){LED6=1;LED7=1;LED8=1;LED9=1;LEDA=0;}
  57.         else if(num<=20&&num>10){LED6=1;LED7=1;LED8=1;LED9=1;LEDA=1;}
  58.        // else if(num>0&&num==10)    {LED6=0;LED7=0;LED8=0;LED9=0;LEDA=0;}
  59. }
  60. /*****掃描流光函數(shù)*****/
  61. void Led_BU()
  62. {               

  63.                 if(num>590)                                        {BU=1;P3=0X84;       }
  64.                 else if(num<=590&&num>570)        {BU=1;P3=0X48;       }
  65.                 else if(num<=570&&num>550)        {BU=1;P3=0X30;       }

  66.                 else if(num<=550&&num>530)        {BU=1;P3=0X30;       }
  67.                 else if(num<=530&&num>510)        {BU=1;P3=0X48;       }
  68.                 else if(num<=510&&num>490)        {BU=1;P3=0X84;       }

  69.                 else if(num<=490&&num>480)        {BU=1;P3=0X80;       }
  70.                 else if(num<=480&&num>470)        {BU=1;P3=0X40;       }
  71.                 else if(num<=470&&num>460)        {BU=1;P3=0X60;       }
  72.                 else if(num<=460&&num>450)        {BU=1;P3=0X10;       }
  73.                 else if(num<=450&&num>440)        {BU=1;P3=0X08;       }
  74.                 else if(num<=440&&num>430)        {BU=1;P3=0X04;       }                     
  75.                 else if(num<=430&&num>420)        {BU=1;P3=0X84;       }
  76.                 else if(num<=420&&num>410)        {BU=1;P3=0X44;       }
  77.                 else if(num<=410&&num>400)        {BU=1;P3=0X24;       }
  78.                 else if(num<=400&&num>390)        {BU=1;P3=0X14;       }
  79.                 else if(num<=390&&num>380)        {BU=1;P3=0X0C;       }
  80.                 else if(num<=380&&num>370)        {BU=1;P3=0X8C;       }
  81.                 else if(num<=370&&num>360)        {BU=1;P3=0X4C;       }
  82.                 else if(num<=360&&num>350)        {BU=1;P3=0X2C;       }
  83.                 else if(num<=350&&num>340)        {BU=1;P3=0X1C;       }
  84.                 else if(num<=340&&num>330)        {BU=1;P3=0X9C;       }
  85.                 else if(num<=330&&num>320)        {BU=1;P3=0X5C;       }
  86.                 else if(num<=320&&num>310)        {BU=1;P3=0X3C;       }
  87.                 else if(num<=310&&num>300)        {BU=1;P3=0XBC;       }
  88.                 else if(num<=300&&num>290)        {BU=1;P3=0X7C;       }
  89.                 else if(num<=290&&num>280)        {BU=1;P3=0XFC;       }
  90.                 else if(num<=280&&num>270)        {BU=0;P3=0X00;       }
  91.    
  92.                 else if(num<=270&&num>260)        {YU=1;P3=0X04;       }
  93.                 else if(num<=260&&num>250)        {YU=1;P3=0X08;       }
  94.                 else if(num<=250&&num>240)        {YU=1;P3=0X10;       }
  95.                 else if(num<=240&&num>230)        {YU=1;P3=0X20;       }
  96.                 else if(num<=230&&num>220)        {YU=1;P3=0X40;       }
  97.                 else if(num<=220&&num>210)        {YU=1;P3=0X80;       }                     
  98.                 else if(num<=210&&num>200)        {YU=1;P3=0X84;       }
  99.                 else if(num<=200&&num>190)        {YU=1;P3=0X88;       }
  100.                 else if(num<=190&&num>180)        {YU=1;P3=0X90;       }
  101.                 else if(num<=180&&num>170)        {YU=1;P3=0XA0;       }
  102.                 else if(num<=170&&num>160)        {YU=1;P3=0XC0;       }
  103.                 else if(num<=160&&num>150)        {YU=1;P3=0XC4;       }
  104.                 else if(num<=150&&num>140)        {YU=1;P3=0XC8;       }
  105.                 else if(num<=140&&num>130)        {YU=1;P3=0XD0;       }
  106.                 else if(num<=130&&num>120)        {YU=1;P3=0XE0;       }
  107.                 else if(num<=120&&num>110)        {YU=1;P3=0XE4;       }
  108.                 else if(num<=110&&num>100)        {YU=1;P3=0XE8;       }
  109.                 else if(num<=100&&num>90)        {YU=1;P3=0XF0;       }
  110.                 else if(num<=90&&num>80)        {YU=1;P3=0XF4;       }
  111.                 else if(num<=80&&num>70)        {YU=1;P3=0XF8;       }
  112.                 else if(num<=70&&num>60)        {YU=1;P3=0XFC;       }

  113.                 else if(num<=60&&num>50)        {YU=1;P3=0X7C;       }               
  114.                 else if(num<=50&&num>40)        {YU=1;P3=0X3C;       }
  115.                 else if(num<=40&&num>30)        {YU=1;P3=0X1C;       }
  116.                 else if(num<=30&&num>20)        {YU=1;P3=0X0C;       }
  117.                 else if(num<=20&&num>10)        {YU=1;P3=0X04;       }
  118.                 else if(num<=10&&num>0)            {YU=0;P3=0X00;       }
  119.                        
  120. }
  121. /******主函數(shù)區(qū)******/  
  122. void main()
  123. {
  124.         u8 i;
  125.         P3M0=0xFC;//設(shè)P3.1~3口為推挽輸出,P3.0為準(zhǔn)雙向口。      
  126.         P3M1=0x00;
  127.         P1M0=0xFF;//設(shè)P1口為推挽輸出,
  128.         P1M1=0x00;         
  129.         P5M0=0x00;//設(shè)P5.4、P5.5為準(zhǔn)雙向口.        
  130.         P5M1=0xCF;
  131.         P3=0X03;
  132.         P1=0X00;
  133.                 P5=0X30;  //不可設(shè)為底電平   
  134.         Timer0Init();
  135.                 if(KEYL==0)
  136.           {
  137.            
  138.                    keyScan(); //把觸發(fā)部分的代碼打包成函數(shù)放在這里執(zhí)行

  139.           }
  140.         else
  141.          {      
  142.         for(i=0;i<1;i++)//上電掃描流光1次
  143.                 {
  144.               num=590;//1.秒
  145.             // if(num==460)
  146.                           while(num)
  147.                {
  148.                                
  149.                  Led_BU();
  150.                                
  151.                                        
  152.                      
  153.                }
  154.                             Led_YU();
  155.                                 Led_YU();
  156.                 //        if(num==0)
  157.                 //         {LED11=1;}
  158.                 }  
  159.          }       
  160.                   
  161.     while(1)         
  162.         {      
  163.                 if(KEYL==0)
  164.                  {                         
  165.                         keyScan();
  166.                  }
  167.         }         
  168. }
  169. /*********定時(shí)器0中斷服務(wù)函數(shù)*************/
  170. void timer0() interrupt 1      
  171. {
  172.         /* static unsigned char i=0;
  173.         if(i<3)PWM=1;//占空比75%
  174.         else PWM=0;
  175.         i++;
  176.         i%=4;             */
  177.     //    PWM=~PWM;//PWM周期10ms,占空比50%
  178.                                   
  179.                 if(num>0)
  180.                
  181.                 num--;          
  182.         //if(num==0)
  183.                 if(KEYL!=0)
  184.         {
  185.                         YU=0;
  186.                 LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;
  187.                                
  188.                                 signl=0;
  189.                
  190.              //   signk=0;
  191.                         if(++count3>=150)//3秒延時(shí)
  192.               {
  193.                  count3=150; //保持
  194.                  BU=1;
  195.                                   P3=0XFC;              //日行燈亮
  196.                }  
  197.         }
  198. }

  199. /********觸發(fā)子程序函數(shù)*********/

  200. void keyScan()
  201. {
  202.                             
  203.              if(KEYL==0  && signl==0  )//左轉(zhuǎn)流光
  204.                 {
  205.                                                 count3=0;        //計(jì)數(shù)3清0
  206.                         signl=1;
  207.                         num=60;
  208.                         while(num)
  209.                         {
  210.                          BU=0;   
  211.                          Led_L();

  212.                         }
  213.                        
  214.                 }
  215.      
  216. }         


  217. /*------------------------------------------------
  218. 延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值
  219. unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是
  220. 0~65535
  221. ------------------------------------------------*/
  222. void Delay(unsigned int t)
  223. {
  224. while(--t);
  225. }


  226. /*****掃描呼吸燈函數(shù)*****/
  227. void Led_YU()
  228. {
  229.                                                                               
  230.         unsigned int CYCLE=1500,PWM_LOW=0;        //定義周期并賦值
  231.          
  232.                                                                                     
  233.                         {
  234.                                  BU=0;
  235.                                  Delay(60000);                                //特意加延時(shí),可以看到熄滅的過(guò)程
  236.                                  for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)//PWM_LOW表示低電平時(shí)間,這個(gè)循環(huán)中低電平時(shí)長(zhǎng)從1累加到CYCLE(周期)的值,即600次
  237.                                         {                                P3=0XFC;
  238.                                                                 BU=1;        //點(diǎn)亮LED  
  239.                                                         Delay(PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從1加至599
  240.                                                         BU=0;        //熄滅LED
  241.                                                         Delay(CYCLE-PWM_LOW);//延時(shí)長(zhǎng)度,600次循環(huán)中從599減至1
  242.                                         }
  243.                                      //   BU=1;
  244.                                      //  for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  245.                                      //   {                       //與逐漸變亮相反的過(guò)程
  246.                                      //          BU=1;
  247.                                      //          Delay(PWM_LOW);
  248.                                      //          BU=0;
  249.                                      //          Delay(CYCLE-PWM_LOW);
  250.                                      //  }                                                
  251.                         }
  252. }
復(fù)制代碼


以上是按大神的修改后的程序,但還有一個(gè)地方不理想,就是上電流光掃描還沒(méi)有完成時(shí),
                        if(++count3>=150)//3秒延時(shí)
              {
                 count3=150; //保持
                 BU=1;
                                  P3=0XFC;              //日行燈亮
               }  
        }
}
這一部份就亮了,我想要的效果是掃描完成后才亮。轉(zhuǎn)向中斷后1秒也要亮。
各位大神幫看看需要怎樣修改一下。
回復(fù)

使用道具 舉報(bào)

16#
ID:99987 發(fā)表于 2021-9-7 21:04 | 只看該作者
用pwm方式實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

17#
ID:280000 發(fā)表于 2021-9-8 08:56 | 只看該作者
單片機(jī)定時(shí)器輸出不同大小的PWM即可實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

18#
ID:859245 發(fā)表于 2021-9-8 18:28 | 只看該作者
呼吸燈用PWM調(diào)占空比呀,STM32和51都是這樣做的
回復(fù)

使用道具 舉報(bào)

19#
ID:280000 發(fā)表于 2021-9-15 09:01 | 只看該作者
單片機(jī)定時(shí)器輸出不同大小的PWM即可
回復(fù)

使用道具 舉報(bào)

20#
ID:966227 發(fā)表于 2021-9-15 12:02 | 只看該作者
就是找準(zhǔn)控制IO開關(guān)頻率,這個(gè)開關(guān)頻率里面又要去按照一定時(shí)間去調(diào)整占空比從0-100%。找到一個(gè)最佳的顯示效果
回復(fù)

使用道具 舉報(bào)

21#
ID:161164 發(fā)表于 2021-9-15 14:42 | 只看該作者
川蜀浪子 發(fā)表于 2021-9-7 17:08
以上是按大神的修改后的程序,但還有一個(gè)地方不理想,就是上電流光掃描還沒(méi)有完成時(shí),
                        if(++count3 ...

加一個(gè)標(biāo)置位Init_Done
在上電流光的后面置1
在中斷里
if(Init_Done)
{
行195~209
}
回復(fù)

使用道具 舉報(bào)

22#
ID:966294 發(fā)表于 2021-9-15 16:23 | 只看該作者
用TIM來(lái)制造PWM波,然后調(diào)節(jié)PWM的占空比就可能實(shí)現(xiàn)它的亮暗變化
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 三级黄色片在线观看 | 日韩亚洲欧美一区 | 国产精品96久久久久久 | 亚洲福利一区 | 成人黄色电影在线播放 | 日韩视频中文字幕 | 中文在线一区二区 | 国产精品激情 | 天天爱天天操 | 亚洲高清在线观看 | av影音资源 | 老司机免费视频 | 欧美激情国产精品 | 亚洲高清免费观看 | 中文在线一区 | 淫片一级国产 | 黄色网址av | 国产视频二区在线观看 | 欧美精品二区 | 国产精品亚洲视频 | 99久久精品国产麻豆演员表 | 日韩视频一区 | www.婷婷| 亚洲一区三区在线观看 | 欧美亚洲国产一区二区三区 | 精品国产网 | 国产成人99久久亚洲综合精品 | 99这里只有精品 | 久久国内 | 在线综合视频 | 成人av激情 | 久久男人天堂 | 一级大黄 | 日日夜夜免费精品视频 | 一区二区三 | 久久精品国产99国产精品 | 欧美福利 | a在线免费观看 | 国产精品久久久久久久久久三级 | 欧美 日韩 国产 成人 | 99在线视频观看 |