找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 782|回复: 0
收起左侧

51单片机LED流水灯程序

[复制链接]
ID:1084073 发表于 2023-6-14 16:43 | 显示全部楼层 |阅读模式
本代码通过keil编写,下载到单片机开发板上可以实现多种不同的流水灯样式,因为所用到的c语言语法较为简单,所以代码较为冗杂,如有能力,可自行更改。
  1. #include <REGX52.H>
  2. #include <INTRINS.H>

  3. void delay(unsigned int xms)
  4. {
  5.         unsigned char i,j;
  6.         while(xms)
  7.         {
  8.                 i=2;
  9.                 j=239;
  10.                 do
  11.                 {
  12.                         while(--j);
  13.                 }
  14.                         while(--i);
  15.                 xms--;
  16.                
  17.         }
  18. }

  19. void main()
  20. {
  21.         unsigned int xms=150;
  22.         unsigned int LEDNum=0x01;
  23.         unsigned int Tick;
  24.         
  25.         
  26.         
  27.         P2=~LEDNum;
  28.         delay(200);
  29.         for(Tick=0;Tick<=6;++Tick)
  30.         {
  31.                 LEDNum=LEDNum<<1;
  32.                 P2=~LEDNum;
  33.                 delay(200);
  34.         }
  35.         for(Tick=0;Tick<=6;++Tick)
  36.         {
  37.                 LEDNum=LEDNum>>1;
  38.                 P2=~LEDNum;
  39.                 delay(200);
  40.         }
  41.         
  42.         
  43.         
  44.         P2=~LEDNum;
  45.         for(Tick=0;Tick<0xFE;++Tick)
  46.         {
  47.                 ++LEDNum;
  48.                 P2=~LEDNum;
  49.                 delay(100);
  50.         }
  51.         for(Tick=0;Tick<0xFE;++Tick)
  52.         {
  53.                 --LEDNum;
  54.                 P2=~LEDNum;
  55.                 delay(100);
  56.         }
  57.         
  58.         
  59.         
  60.         while(xms)
  61.         {
  62.                 P2_0=0;
  63.                 delay(xms);
  64.                 P2_1=0;
  65.                 delay(xms);
  66.                 P2_2=0;
  67.                 delay(xms);
  68.                 P2_3=0;
  69.                 delay(xms);
  70.                 P2_4=0;
  71.                 delay(xms);
  72.                 P2_5=0;
  73.                 delay(xms);
  74.                 P2_6=0;
  75.                 delay(xms);
  76.                 P2_7=0;
  77.                 delay(xms);
  78.                 P2_0=1;
  79.                 delay(xms);
  80.                 P2_1=1;
  81.                 delay(xms);
  82.                 P2_2=1;
  83.                 delay(xms);
  84.                 P2_3=1;
  85.                 delay(xms);
  86.                 P2_4=1;
  87.                 delay(xms);
  88.                 P2_5=1;
  89.                 delay(xms);
  90.                 P2_6=1;
  91.                 delay(xms);
  92.                 P2_7=1;
  93.                 delay(xms);
  94.                 xms=xms-30;
  95.         }
  96.         while(xms)
  97.         {
  98.                 P2_0=0;
  99.                 delay(xms);
  100.                 P2_1=0;
  101.                 delay(xms);
  102.                 P2_2=0;
  103.                 delay(xms);
  104.                 P2_3=0;
  105.                 delay(xms);
  106.                 P2_4=0;
  107.                 delay(xms);
  108.                 P2_5=0;
  109.                 delay(xms);
  110.                 P2_6=0;
  111.                 delay(xms);
  112.                 P2_7=0;
  113.                 delay(xms);
  114.                 P2_7=1;
  115.                 delay(xms);
  116.                 P2_6=1;
  117.                 delay(xms);
  118.                 P2_5=1;
  119.                 delay(xms);
  120.                 P2_4=1;
  121.                 delay(xms);
  122.                 P2_3=1;
  123.                 delay(xms);
  124.                 P2_2=1;
  125.                 delay(xms);
  126.                 P2_1=1;
  127.                 delay(xms);
  128.                 P2_0=1;
  129.                 delay(xms);
  130.                 xms=xms-30;
  131.         }
  132.         
  133.         
  134.         
  135.         LEDNum=0xCC;
  136.         for(Tick=0;Tick<=6;++Tick)
  137.         {
  138.                 P2=LEDNum;
  139.                 LEDNum=~LEDNum;
  140.                 delay(200);
  141.         }
  142.         LEDNum=0x55;
  143.         P2=LEDNum;
  144.         delay(200);
  145.         for(Tick=0;Tick<=6;++Tick)
  146.         {
  147.                 LEDNum=LEDNum<<1;
  148.                 P2=LEDNum;
  149.                 delay(200);
  150.         }
  151.         while(1);
  152. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表