找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

愛心燈程序加仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:224054 發(fā)表于 2017-8-2 11:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機愛心燈源程序如下:
  1. #include<reg52.h>                                           //頭文件
  2. #include <intrins.h>
  3. #define uint unsigned int                           //宏定義
  4. #define uchar unsigned char
  5.                                                                    
  6. void delay(uint k)                                       //延時,大約1ms
  7. {       
  8.         uint i,j;
  9.         for(i=k;i--;i>0)
  10.                 for(j=100;j--;j>0);
  11. }
  12. /***********這個設計的LED是正極接電源,負極接單片機的IO口,
  13. 當單片機IO口輸出低電平時,LED就會點亮***********/
  14. void main()                                                           //主函數
  15. {       
  16.         uchar temp0,temp1;                                   //定義變量用于LED的閃爍
  17.         uchar yi;
  18.         uchar yi0,yi1;                  
  19.         uint i,j,k,a,b;
  20.         j=k=a=b=3;       
  21.                                                                 //全部亮
  22.                 P0=P1=P2=P3=0x00;
  23.                 delay(700);
  24.                 P0=P1=P2=P3=0xff;       
  25.                                                                                 //每個io口獨自亮
  26.                 for(i=2;i--;i>0)
  27.                 {
  28.                         P1=P0=0x00;
  29.                         delay(500);
  30.                         P1=P0=0xff;
  31.                         P3=P2=0x00;
  32.                         delay(500);
  33.                         P3=P2=0xff;
  34.                 }
  35.                                                                                 //全部亮,閃三次
  36.                 for(i=2;i--;i>0)
  37.                 {
  38.                         P0=P1=P2=P3=0x00;
  39.                         delay(100);
  40.                         P0=P1=P2=P3=0xff;
  41.                         delay(100);
  42.                 }
  43.                                                                                 //P1、P2亮,P3、P0暗
  44.                 for(i=3;i--;i>0)
  45.                 {
  46.                         P1=0x00,P2=0x00; P3=0xff,P0=0xff;
  47.                         delay(500);
  48.                         P1=0xff,P2=0xff,P3=0x00,P0=0x00;
  49.                         delay(500);
  50.                 }
  51.        
  52.                                                                                 //四個點的流水
  53.        
  54.                 while(j>0)
  55.                 {
  56.                         temp0=0xfe,temp1=0x7f;
  57.                         P1=P3=temp0,P2=P0=temp1;
  58.                         delay(100);
  59.                         for(i=7;i--;i>0)
  60.                         {
  61.                                 temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
  62.                                 P1=P3=temp0,P2=P0=temp1;
  63.                                 delay(100);
  64.                         }
  65.                          j--;
  66.                  }
  67.                                                                                  //全部亮,閃三次
  68.                 for(i=3;i--;i>0)
  69.                 {
  70.                         P0=P1=P2=P3=0x00;
  71.                         delay(300);
  72.                         P0=P1=P2=P3=0xff;
  73.                         delay(300);
  74.                 }                          
  75.        
  76.                                                                                 //四個IO口同樣跟蹤流水
  77.                 while(k>0)
  78.                 {
  79.                         temp0=0xfe,temp1=0x7f;
  80.                         P1=P3=temp0,P2=P0=temp1;
  81.                         delay(60);
  82.                         for(i=7;i--;i>0)
  83.                         {
  84.                                 temp0=temp0<<1,temp1=temp1>>1;
  85.                                 P1=P3=temp0,P2=P0=temp1;
  86.                                 delay(60);
  87.                         }
  88.                         k--;
  89.                  }
  90.                  P0=P1=P3=P2=0xff;
  91.                  while(k<3)
  92.                  {
  93.                            temp0=0x7f,temp1=0xfe;
  94.                           P1=P3=temp0,P2=P0=temp1;
  95.                           delay(60);
  96.                           for(i=7;i--;i>0)
  97.                           {
  98.                                   temp0=temp0>>1,temp1=temp1<<1;
  99.                                 P1=P3=temp0,P2=P0=temp1;
  100.                                 delay(60);
  101.                           }
  102.                           k++;
  103.                  }
  104.                  P3=P2=0xff;
  105.                                                                      //兩邊單個從上向下流水
  106.                 yi=0xfe;
  107.                 P1=P0=yi;
  108.                 delay(50);
  109.                 for(i=7;i--;i>0)
  110.                 {
  111.                         yi=_crol_(yi,1);
  112.                         P1=P0=yi;
  113.                         delay(50);
  114.                 }
  115.                 P1=P0=0xff;
  116.                 yi=0xfe;
  117.                 P3=P2=yi;
  118.                 delay(50);
  119.                 for(i=7;i--;i>0)
  120.                 {
  121.                         yi=_crol_(yi,1);
  122.                         P3=P2=yi;
  123.                         delay(50);
  124.                 }
  125.                 P3=P2=0Xff;
  126.                                                                          //兩邊單個返回流水
  127.                 for(i=7;i--;i>0)                         
  128.                 {
  129.                         yi=_cror_(yi,1);
  130.                         P3=P2=yi;
  131.                         delay(50);
  132.                 }
  133.                 P3=P2=0xff;
  134.                 for(i=7;i--;i>0)
  135.                 {
  136.                         yi=_cror_(yi,1);
  137.                         P0=P1=yi;
  138.                         delay(50);
  139.                 }                                                                  
  140.                                                                   //全部亮,閃三次
  141.                 P0=P1=P3=P2=0xff;
  142.                 for(i=3;i--;i>0)
  143.                 {
  144.                         P0=P1=P2=P3=0x00;
  145.                         delay(100);
  146.                         P0=P1=P2=P3=0xff;
  147.                         delay(100);
  148.                 }
  149.                                                             //流水燈
  150.        
  151.                 yi0=0xfe,yi1=0x7f;
  152.                 P3=P2=yi1,P1=P0=yi0;
  153.                 delay(100);
  154.                 for(i=7;i--;i>0)
  155.                 {
  156.                          yi0=yi0<<1, yi1=yi1>>1;
  157.                          P1=P0=yi0,P3=P2=yi1;
  158.                          delay(100);
  159.                 }
  160.                 P1=P2=P3=P0=0xff;
  161.                 delay(200);
  162.                 yi0=0x7f,yi1=0xfe;
  163.                 P1=P0=yi0,P3=P2=yi1;
  164.                 for(i=7;i--;i>0)
  165.                 {
  166.                         yi0=yi0>>1,yi1=yi1<<1;
  167.                         P1=P0=yi0,P3=P2=yi1;
  168.                         delay(100);       
  169.                 }
  170.                                                                      //大循環(huán)跟蹤流水
  171.                 P1=P2=P3=P0=0xff;
  172.                 for(i=8;i--;i>0)
  173.                 {
  174.                          P1=P1<<1;
  175.                          delay(50);
  176.                 }
  177.                 for(i=8;i--;i>0)
  178.                 {
  179.                          P3=P3<<1;
  180.                          delay(50);
  181.                 }
  182.        
  183.                 for(i=8;i--;i>0)
  184.                 {
  185.                          P2=P2>>1;
  186.                          delay(50);
  187.                 }
  188.                 for(i=8;i--;i>0)
  189.                 {
  190.                          P0=P0>>1;
  191.                          delay(50);
  192.                 }                                               
  193.                                                                         //逆向大循環(huán)跟蹤流水
  194.        
  195.                 P1=P2=P3=P0=0xff;
  196.                 for(i=8;i--;i>0)
  197.                 {
  198.                          P0=P0<<1;
  199.                          delay(50);
  200.                 }
  201.                 for(i=8;i--;i>0)
  202.                 {
  203.                          P2=P2<<1;
  204.                          delay(50);
  205.                 }
  206.                 for(i=8;i--;i>0)
  207.                 {
  208.                          P3=P3>>1;
  209.                          delay(50);
  210.                 }
  211.                 for(i=8;i--;i>0)
  212.                 {
  213.                          P1=P1>>1;
  214.                          delay(50);
  215.                 }
  216.        
  217.        
  218.                                                                       //全部亮,閃三次
  219.                 P0=P1=P3=P2=0xff;
  220.                 for(i=4;i--;i>0)
  221.                 {
  222.                         P0=P1=P2=P3=0x00;
  223.                         delay(100);
  224.                         P0=P1=P2=P3=0xff;
  225.                         delay(100);
  226.                 }
  227.                                                                                            //全部亮,只有一個暗的在流水
  228.                
  229.                 temp0=0x01,temp1=0x00;
  230.                 P1=P0=temp0,P3=P2=temp1;
  231.                 delay(100);
  232.                 for(i=7;i--;i>0)
  233.                 {
  234.                         temp0=_crol_(temp0,1);
  235.                         P1=P0=temp0;
  236.                         delay(100);
  237.                 }
  238.                 P1=P0=0x00;
  239.                 temp1=0x01;
  240.                 P3=P2=temp1;
  241.                 delay(100);
  242.                 for(i=7;i--;i>0)
  243.                 {
  244.                         temp1=_crol_(temp1,1);
  245.                         P3=P2=temp1;
  246.                         delay(100);
  247.                 }
  248.                                                                                          //全部亮,逆向一個暗在流水
  249.                 temp0=0x00,temp1=0x80;
  250.                 P1=P0=temp0,P3=P2=temp1;
  251.                 delay(100);
  252.                 for(i=7;i--;i>0)
  253.                 {       
  254.                         temp1=_cror_(temp1,1);
  255.                         P3=P2=temp1;
  256.                         delay(100);
  257.                 }
  258.                 P3=P2=0x00;
  259.                 temp0=0x80;
  260.                 P1=P0=temp0;
  261.                 delay(100);
  262.                 for(i=7;i--;i>0)
  263.                 {
  264.                         temp0=_cror_(temp0,1);
  265.                         P1=P0=temp0;
  266.                         delay(100);
  267.                 }
  268.                                                                                      //花樣
  269.                 temp0=0xaa,temp1=0x55;
  270.                 P1=P3=temp0,P2=P0=temp1;
  271.                 delay(500);
  272.                 for(;a--;a>0)
  273.                         {
  274.                                 for(i=7;i--;i>0)
  275.                                 {
  276.                                         temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
  277.                                         P1=P3=temp0,P2=P0=temp1;
  278.                                         delay(500);       
  279.                                 }
  280.        
  281.                          }
  282.                 for(;b--;b>0)
  283.                         {
  284.                                 temp0=0xee,temp1=0x77;
  285.                                 P1=P3=temp0,P2=P0=temp1;
  286.                                 delay(300);
  287.                                 for(i=7;i--;i>0)
  288.                                 {
  289.                                         temp0=_crol_(temp0,1),temp1=_cror_(temp1,1);
  290.                                         P1=P3=temp0,P2=P0=temp1;
  291.                                         delay(300);       
  292.                                 }
  293.                         }         
  294.                                                                                                   //環(huán)形逐個亮
  295.                                                                                                        
  296.                 P1=P2=P3=P0=0xff;
  297.                 for(i=8;i--;i>0)
  298.                 {
  299.                          P0=P0<<1;
  300.                          delay(50);
  301.                 }
  302.                 for(i=8;i--;i>0)
  303.                 {
  304.                          P2=P2<<1;
  305.                          delay(50);
  306.                 }
  307.                 for(i=8;i--;i>0)
  308.                 {
  309.                          P3=P3>>1;
  310. ……………………

  311. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
愛心燈.rar (72.61 KB, 下載次數: 23)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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