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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機PWM控制流水燈漸亮漸滅程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-16 05:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //跳線設置:默認跳線位
  2. #include <reg51.h>      
  3. typedef unsigned char uchar;
  4. #define Ton 40
  5. #define LED P1
  6. sbit leds=P1^4;
  7. sbit LED0 = P1^0;
  8. sbit LED1 = P1^1;
  9. sbit LED2 = P1^2;
  10. sbit LED3 = P1^3;
  11. sbit LED4 = P1^4;
  12. sbit LED5 = P1^5;
  13. sbit LED6 = P1^6;
  14. sbit LED7 = P1^7;
  15.       
  16. unsigned char Maikuan=0;
  17. static unsigned char ledon[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
  18. uchar Occupy_led; //占空比越大,燈越亮
  19. bit light;
  20. uchar m;     
  21. void Inittime()
  22.       {
  23.           TMOD = 0x02; //定時器0,工作方式2,自動重裝
  24.           TH0 = 256-Ton;
  25.           TL0 = 256-Ton;
  26.           ET0 = 1;
  27.          EA = 1;
  28.          TR0 = 1;
  29.      }
  30. //定時器0中斷
  31.      void time0() interrupt 1 using 0
  32.       {
  33.            Maikuan++;
  34.       }
  35. void main()
  36.        {
  37.           unsigned char i = 0,j = 0; //初始化i,j
  38.     leds=0;
  39.           Inittime();
  40.          while (1)
  41.            {
  42.                //第1,3,5,7個燈半亮,其余的全亮。            
  43.             for(i=254; i>0; i--)      
  44.             {
  45.                 while ( Maikuan!=20)
  46.                 {
  47.                         LED = 0x00;
  48.                 }
  49.                 while ( Maikuan!=200)
  50.                 {
  51.                         LED = 0x55;
  52.                 }
  53.    
  54.                Maikuan = 0;
  55.             }

  56.    //最難的:8個燈從第一個開始依次漸亮,直到最后一個。再從最后一個起漸暗,直到第一個。如此循環往復。
  57.    for(j = 0;j<=7;j++)
  58.    {
  59.     i = 0;      
  60.     while(i!=255)     // 由暗變亮
  61.         {
  62.           if( Maikuan == 0) // 點亮
  63.         {
  64.             LED = ledon[j];
  65.        }
  66.        if(Maikuan == i) // 熄滅
  67.         {
  68.            LED = 0xff;
  69.        }
  70.       if( Maikuan== 255)   
  71.         {
  72.             i++;     
  73.           }
  74.        }
  75.    }
  76.    for(j=7;j>=0;j--)
  77.    {
  78.      i = 0;     
  79.     while(i!=255)     // 由亮變暗
  80.    {
  81.      if(Maikuan == 0) // 熄滅
  82.      {
  83.              LED = 0xff;
  84.       }
  85.       if( Maikuan == i) // 點亮
  86.        {
  87.          LED = ledon[j];
  88.        }
  89.     if( Maikuan == 255)
  90.       {
  91.             i++;
  92.      }
  93.    }  
  94. }
  95.   
  96.    //所有的燈逐漸從暗到全亮,再由全亮到暗。

  97.    for (m=254; m>0; m--)
  98.       {            
  99.           while (Maikuan!=Occupy_led)
  100.           {
  101.                   LED = 0x00;
  102.           }

  103.           while (Maikuan!=127)
  104.           {
  105.                   LED = 0xff;
  106.           }
  107.       
  108.          Maikuan = 0;

  109.           if (light)      
  110.           {
  111.                  Occupy_led++;      
  112.           }
  113.           else
  114.           {
  115.                  Occupy_led--;
  116.           }

  117.           if (Occupy_led==128)
  118.           {
  119.                  Occupy_led = 127;
  120.                   light = !light;   
  121.           }
  122.           if (Occupy_led>128)
  123.           {
  124.                   Occupy_led = 0;
  125.                   light = !light;
  126.           }
  127.       }            
  128. }
  129. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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