欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)PWM波控制LED呼吸燈源程序 [打印本頁(yè)]

作者: yangjiang1    時(shí)間: 2019-9-10 14:18
標(biāo)題: 單片機(jī)PWM波控制LED呼吸燈源程序
程序

  1. // 利用定時(shí)器控制產(chǎn)生占空比可變的 PWM 波
  2. // 按K1,PWM值增加,則占空比減小,LED 燈漸暗。
  3. // 按K2,PWM值減小,則占空比增加,LED 燈漸亮。
  4. // 當(dāng)PWM值增加到最大值或減小到最小值時(shí),蜂鳴器將報(bào)警。


  5. #include < reg51.h >
  6. #include < intrins.h >

  7. sbit  K1 =P3^2 ;                    //增加鍵
  8. sbit  K2 =P3^3 ;                    //減少鍵
  9. sbit  BEEP =P3^6 ;                //蜂鳴器
  10. unsigned char PWM=0x7f ;   //賦初值
  11. void Beep();
  12. void delayms(unsigned char ms);
  13. void delay(unsigned char t);

  14. /*********************************************************/
  15. void main()
  16. {  

  17.      P0=0xff;
  18.     TMOD=0x21 ;
  19.     TH0=0xfc ;             //1ms延時(shí)常數(shù) 12M
  20.     TL0=0x18 ;            //頻率調(diào)節(jié)

  21.     TH1=PWM ;            //脈寬調(diào)節(jié)
  22.     TL1=0 ;

  23.      EA=1;
  24.      ET0=1;
  25.      ET1=1;
  26.    
  27.      TR0=1 ;

  28.    while(1)
  29.    {
  30.      do{
  31.             if(PWM!=0xff)
  32.            {PWM++ ;delayms(10);}
  33.            else Beep() ;
  34.          }
  35.      while(K1==0);

  36.      do{
  37.            if(PWM!=0x02)
  38.           {PWM-- ;delayms(10);}
  39.            else Beep() ;
  40.           }
  41.      while(K2==0);
  42.    }
  43. }

  44. /*********************************************************/
  45. // 定時(shí)器0中斷服務(wù)程序.
  46. /*********************************************************/
  47. void timer0() interrupt 1
  48. {  
  49.     TR1=0 ;
  50.     TH0=0xfc ;
  51.     TL0=0x18 ;
  52.     TH1=PWM ;
  53.     TR1=1 ;
  54.     P0=0x00 ;      //啟動(dòng)輸出
  55. }

  56. /*********************************************************/
  57. // 定時(shí)器1中斷服務(wù)程序
  58. /*********************************************************/
  59. void timer1() interrupt 3
  60. {
  61.     TR1=0 ;
  62.     P0=0xff ;     //結(jié)束輸出
  63. }

  64. /*********************************************************/
  65. //蜂鳴器子程序
  66. /*********************************************************/

  67. void Beep()     
  68.   {
  69.       unsigned char i  ;
  70.       for (i=0  ;i<100  ;i++)
  71.         {
  72.           delay(100)  ;
  73.           BEEP=!BEEP  ;                //Beep取反
  74.         }
  75.      BEEP=1  ;                            //關(guān)閉蜂鳴器
  76.      delayms(100);
  77.   }

  78. /*********************************************************/
  79. // 延時(shí)子程序
  80. /*********************************************************/  
  81. void delay(unsigned char t)
  82. {
  83.     while(t--)   ;
  84. }

  85. /*********************************************************/
  86. // 延時(shí)子程序
  87. /*********************************************************/
  88. void delayms(unsigned char ms)

  89. {
  90.     unsigned char i ;
  91.     while(ms--)
  92.      {
  93.         for(i = 0 ; i < 120 ; i++) ;
  94.      }
  95. }


復(fù)制代碼






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1