找回密码
 立即注册

QQ登录

只需一步,快速开始

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

两种单片机流水灯用按键控制暂停继续的程序

[复制链接]
跳转到指定楼层
楼主
ID:507222 发表于 2019-4-8 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机的流水灯按键控制关于按键控制暂停继

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int //定义int变量uint
  3. #define shuzu1 unsigned char
  4. #define shuzu2 unsigned char //定义两个数组,实现两种流水灯
  5. shuzu1 i;
  6. shuzu2 j; //数组 i,j变量
  7. shuzu1 code table1[]={0xfc,0xf9,0xf3,0xe7,
  8.                                     0xcf,0x9f,0x3f}; //数组1,每两个流水灯亮
  9. shuzu2 code table2[]={0xfe,0xfd,0xfb,0xf7,
  10.                                         0xef,0xdf,0xbf,0x7f};//数组2,一位流水灯亮
  11. sbit k1=P3^2;
  12. sbit k2=P3^3;
  13. sbit k3=P3^4;
  14. sbit k4=P3^5; //定义四位数码管函数名(k1,k2,k3,k4)
  15. void deng1(); //流水灯1的子函数
  16. void deng2(); //流水灯2的子函数
  17. void anjian(); //按键暂停继续子函数
  18. void delay(uint z)
  19. {
  20.         uint i,j;
  21.         for(i=0;i<z;i++)
  22.         for(j=0;j<110;j++);
  23. } //延时函数
  24. void deng1()
  25. {
  26.         if(k1==0)
  27.         {
  28.                 delay(10);
  29.                 if(k1==0)
  30.                 {
  31.                         while(!k1); //判断按键1是否按下,松手检测
  32.                         for(i=0;i<=7;i++)
  33.                         {
  34.                         P1=table1[i];
  35.                 delay(500);//流水灯程序
  36.                         anjian();//按键暂停继续子程序
  37.                                 if(k2==0)
  38.                                 {
  39.                                         delay(10);
  40.                                         if(k2==0)
  41.                                         {
  42.                                         deng2();//中途跳出灯1循环
  43.                                         }
  44.                                 }
  45.                         }
  46.                 }
  47.    }
  48. }
  49. void deng2()
  50. {
  51.         if(k2==0)
  52.         {
  53.                 delay(10);
  54.                 if(k2==0)
  55.                 {
  56.                         while(!k1);
  57.                         for(j=8;j>=0;j--)
  58.                         {
  59.                         P1=table2[j];
  60.                 delay(500);
  61.                         anjian();
  62.                                 if(k1==0)
  63.                                 {       
  64.                                         delay(10);
  65.                                         if(k1==0)
  66.                                         {
  67.                                         deng1();
  68.                                         }
  69.                                 }
  70.                         }
  71.                 }
  72.    }
  73. }
  74. void anjian()
  75. {
  76.         if(k3==0)
  77.         {
  78.                 delay(10);
  79.                 if(k3==0)
  80.                 {
  81.                         while(!k3);//判断按键3是否按下,松手检测                       
  82.                         while(1)//死循环,使流水灯暂停
  83.                 {
  84.                         if(k4==0);               
  85.                         if(k4==0)
  86.                         {
  87.                                 delay(10);
  88.                                 if(k4==0)
  89.                                         {
  90.                                                 while(!k4);
  91.                                                 break;//跳出死循环
  92.                                         }
  93.                         }
  94.                 }       
  95.                 }
  96.         }
  97. }
  98. void main()
  99. {
  100.         while(1)
  101.         {
  102.         deng1();
  103.         deng2();
  104.         anjian();//调用三个子函数
  105.         }
  106. }
复制代码

所有资料51hei提供下载:
两种流水灯按键控制暂停继续.rar (37.99 KB, 下载次数: 25)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:496061 发表于 2019-4-8 20:16 | 只看该作者
楼主,你那个32行的代码是不是有错呀?小白不是很懂,你那个数组1里就6个数,为啥你的table1里面显示是7个数呢?纠结
回复

使用道具 举报

板凳
ID:507222 发表于 2019-4-8 20:42 来自手机 | 只看该作者
1035510176 发表于 2019-4-8 20:16
楼主,你那个32行的代码是不是有错呀?小白不是很懂,你那个数组1里就6个数,为啥你的table1里面显示是7个 ...

数组1里是七个数,你可以再看看,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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