找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2540|回复: 1
打印 上一主题 下一主题
收起左侧

单片机流水灯+花样控制(LED灯控制)

[复制链接]
跳转到指定楼层
楼主
  1. #include<reg51.h>

  2. sbit S1=P1^0; //将 S1位定义为P1.0引脚.
  3. sbit S2=P1^1;
  4. sbit S3=P1^2;
  5. sbit S4=P1^3;
  6. unsigned char keyval;

  7. void led_delay(void)
  8. {
  9.         unsigned char i,j;
  10.         for(i=0;i<220;i++)
  11.                 for(j=0;j<220;j++);
  12. }


  13. void delay10ms(void)//软件消抖延时函数
  14. {
  15.         unsigned char i,j;
  16.         for(i=0;i<100;i++)
  17.                 for(j=0;j<100;j++);
  18. }

  19. void forward(void) //正向流水点亮LED函数
  20. {
  21.         P3=0xfe;
  22.         led_delay();
  23.         P3=0xfd;
  24.         led_delay();
  25.         P3=0xfb;
  26.         led_delay();
  27.         P3=0xf7;
  28.         led_delay();
  29.         P3=0xef;
  30.         led_delay();
  31.         P3=0xdf;
  32.         led_delay();
  33.         P3=0xbf;
  34.         led_delay();
  35.         P3=0x7f;
  36.         led_delay();
  37. }

  38. void backward(void)
  39. {
  40.         P3=0x7f;
  41.         led_delay();
  42.         P3=0xbf;
  43.         led_delay();
  44.         P3=0xdf;
  45.         led_delay();
  46.         P3=0xef;
  47.         led_delay();
  48.         P3=0xf7;
  49.         led_delay();
  50.         P3=0xfb;
  51.         led_delay();
  52.         P3=0xfd;
  53.         led_delay();
  54.         P3=0xfe;
  55.         led_delay();
  56. }

  57. void Alter(void)
  58. {
  59.         P3=0x0f;
  60.         led_delay();
  61.         P3=0xf0;
  62.         led_delay();
  63. }


  64. void flash(void) //闪烁点亮LED的函数
  65. {
  66.         P3=0xff;
  67.         led_delay();
  68.         P3=0x00;
  69.         led_delay();
  70. }



  71. void key_scan(void)
  72. {
  73.         P1=0xff;
  74.         if((P1&0x0f)!=0x0f) //检测到有键按下
  75.                 {
  76.                         delay10ms();//延时10ms再去检测
  77.                         if(S1==0) //按键 k1被按下
  78.                         keyval=1;
  79.                         if(S2==0) //按键 k2被按下
  80.                         keyval=2;
  81.                         if(S3==0) //按键 k3被按下
  82.                         keyval=3;
  83.                         if(S4==0) //按键 k4被按下
  84.                         keyval=4;
  85.                 }
  86. }


  87. void main(void)
  88. {
  89.         keyval=0; //键值初始化为0
  90.         while(1)
  91.         {
  92.                 key_scan();
  93.                 switch(keyval)
  94.                 {
  95.                         case 1:forward();
  96.                                 break;
  97.                         case 2:backward();
  98.                                 break;
  99.                         case 3:Alter();
  100.                                 break;
  101.                         case 4: flash();
  102.                                 break;

  103.                 }
  104.         }
  105. }








复制代码


51hei.png (11.85 KB, 下载次数: 127)

51hei.png

LED.zip

28.86 KB, 下载次数: 31, 下载积分: 黑币 -5

内含源码,仿真文件

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:772118 发表于 2020-6-15 10:19 | 只看该作者
怎么错的  我上当了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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