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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3164|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機P1開關(guān)控制低四位流水燈源程序+Proteus仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:470888 發(fā)表于 2020-11-26 18:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
P1開關(guān)控制低四位流水燈,速度有點快自己調(diào),有備注。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define led P1                //可以改為其他口
  3. void delay(int x);
  4. void left(int x);
  5. void right(int x);
  6. void flash1(int x);
  7. void flash2(int x);
  8. void delay(int x)            //延遲函數(shù)1ms(大概)
  9. {int i;
  10. while(x)
  11. {
  12.   for(i=0;i<125;i++);
  13.   x--;
  14. }
  15. }
  16. void left(int x)                //從P1^3到P1^0(我叫它左移)
  17. {int i,j;
  18. while(x)
  19.   {for(i=0;i<3;i++)            // 循環(huán)3遍
  20.    {led=0xfe;                  
  21.     delay(50);                    //每個燈亮50ms
  22.     for(j=0;j<3;j++)        //一共四位
  23.      {
  24.       led=led<<1|0xf1;
  25.       delay(50);
  26.      }
  27.    }
  28.    x--;
  29. }
  30. }
  31. void right(int x)            //從最低位的最高位(我叫它右移)
  32. {int i,j;
  33. while(x)                        //其他同左移
  34.   {for(i=0;i<3;i++)
  35.    { led=0xf7;
  36.      delay(50);
  37.      for(j=0;j<3;j++)
  38.      {
  39.       led=led>>1|0xf8;
  40.       delay(50);
  41.      }
  42.    }
  43.   x--;
  44. }
  45. }
  46. void flash1(int x)                //四位全閃 (可以改很多種)
  47. {int i;
  48. while(x)
  49. {led=0xf0;
  50.   delay(100);                //一次亮100ms
  51.   for(i=0;i<1;i++)      //可以改循環(huán)次數(shù)
  52.    {
  53.     led=~led|0xf0;                //屏蔽高四位
  54.     delay(100);
  55.    }
  56.    x--;
  57. }
  58. }
  59. void flash2(int x)                //隔一位閃爍(全閃改)
  60. {int i;
  61. while(x)                                //基本和全閃一樣
  62. {led=0xf5;
  63.   delay(100);
  64.   for(i=0;i<1;i++)
  65.   {
  66.    led=~led|0xf0;
  67.    delay(100);
  68.   }
  69.   x--;
  70. }
  71. }
  72. main()
  73. {while(1)
  74. {led=0xff;
  75. switch(led)                                         //在燈全滅的情況下,多個按鍵同時按下時不會動作;
  76.    {case 0xef :{left(2);}break;         //按下P1^4,執(zhí)行左移,可以修改循環(huán)次數(shù)
  77.     case 0xdf :{right(2);}break; //按下P1^5,執(zhí)行右移
  78.     case 0xbf :{flash1(2);}break;//按下P1^6,執(zhí)行全閃
  79.     case 0x7f :{flash2(2);}break;//按下P1^7,執(zhí)行全閃改
  80.         default:{led=0xff;}
  81.    }
  82. }
  83. }
復制代碼
  1. #include<reg51.h>
  2. #define led P1                //可以改為其他口
  3. void delay(int x);
  4. void left(int x);
  5. void right(int x);
  6. void flash1(int x);
  7. void flash2(int x);
  8. void delay(int x)            //延遲函數(shù)1ms(大概)
  9. {int i;
  10. while(x)
  11. {
  12.   for(i=0;i<125;i++);
  13.   x--;
  14. }
  15. }
  16. void left(int x)                //從P1^3到P1^0(我叫它左移)
  17. {int i,j;
  18. while(x)
  19.   {for(i=0;i<3;i++)            // 循環(huán)3遍
  20.    {led=0xfe;                  
  21.     delay(50);                    //每個燈亮50ms
  22.     for(j=0;j<3;j++)        //一共四位
  23.      {
  24.       led=led<<1|0xf1;
  25.       delay(50);
  26.      }
  27.    }
  28.    x--;
  29. }
  30. }
  31. void right(int x)            //從最低位的最高位(我叫它右移)
  32. {int i,j;
  33. while(x)                        //其他同左移
  34.   {for(i=0;i<3;i++)
  35.    { led=0xf7;
  36.      delay(50);
  37.      for(j=0;j<3;j++)
  38.      {
  39.       led=led>>1|0xf8;
  40.       delay(50);
  41.      }
  42.    }
  43.   x--;
  44. }
  45. }
  46. void flash1(int x)                //四位全閃 (可以改很多種)
  47. {int i;
  48. while(x)
  49. {led=0xf0;
  50.   delay(100);               //一次亮100ms
  51.   for(i=0;i<1;i++)     //可以改循環(huán)次數(shù)
  52.    {
  53.     led=~led|0xf0;           //屏蔽高四位
  54.     delay(100);
  55.    }
  56.    x--;
  57. }
  58. }
  59. void flash2(int x)                //隔一位閃爍(全閃改)
  60. {int i;
  61. while(x)                                //基本和全閃一樣
  62. {led=0xf5;
  63.   delay(100);
  64.   for(i=0;i<1;i++)
  65.   {
  66.    led=~led|0xf0;
  67.    delay(100);
  68.   }
  69.   x--;
  70. }
  71. }
  72. main()
  73. {while(1)
  74. {led=0xff;                         //在燈全滅的情況下,多個按鍵同時按下時不會動作;
  75. if(led==0xef)                 //按下P1^4,執(zhí)行左移,可以修改循環(huán)次數(shù) ;
  76.    {left(2);}
  77.   else if(led==0xdf) //按下P1^5,執(zhí)行右移
  78.    {right(2);}
  79.   else if(led==0xbf) //按下P1^6,執(zhí)行全閃
  80.    {flash1(2);}
  81.   else if(led==0x7f) //按下P1^7,執(zhí)行全閃改
  82.    {flash2(2);}
  83. }
  84. }
復制代碼


所有資料51hei提供下載:
開關(guān)控制低四位流水燈.zip (74.82 KB, 下載次數(shù): 10)

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级特黄aaa大片评分 | 日韩不卡视频在线观看 | 一区二区三区免费网站 | 视频一区二区三区四区五区 | 午夜影院官网 | 影音先锋久久 | 福利视频网站 | 日韩欧美国产成人一区二区 | 九一在线 | 欧洲高清转码区一二区 | 先锋资源吧 | 亚洲欧美一区二区在线观看 | 亚洲综合精品 | 成人在线精品 | 黑色丝袜三级在线播放 | 夜夜精品浪潮av一区二区三区 | 黄色综合 | 日日噜噜噜夜夜爽爽狠狠视频, | 久久国内精品 | 国产xxxx在线 | 精品三级在线观看 | 久久久久久久国产精品 | 天天天操天天天干 | 99久久精品国产一区二区三区 | 成人欧美一区二区三区在线观看 | 欧美一区二区三区大片 | 成人在线电影网站 | 91极品视频 | 欧美视频成人 | 国产精品不卡 | 亚洲国产精品视频一区 | 中文字幕不卡视频在线观看 | 一区二区三区国产 | 久精品久久 | 亚洲成人免费视频在线观看 | 毛片一级片 | 亚洲国产一区二区三区在线观看 | 久久久91精品国产一区二区三区 | 久久33| 欧美日韩国产一区二区三区 | 精品视频一区二区 |