找回密码
 立即注册

QQ登录

只需一步,快速开始

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

怎么用一个按键点亮和关闭单片机流水灯 求帮助

  [复制链接]
跳转到指定楼层
楼主
ID:495639 发表于 2019-3-21 19:40 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
单片机新手,怎么用一个按键点亮和关闭流水灯?我只能设置按下亮松开又灭 师傅说要按下亮在按一下灭怎么实现啊?求帮忙
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:234075 发表于 2019-3-21 21:32 | 只看该作者
前提是已经有并且可以正常运行的流水灯程序,把流水灯程序放在while(1){}循环中(应该已经在了),把while(1)中的判断条件“1”换成一个bit型变量,设置KEY按下时这个变量翻转就可以了
回复

使用道具 举报

板凳
ID:493355 发表于 2019-3-21 22:17 来自手机 | 只看该作者
按第一下  按一下 加一  看  是单数还是偶数
回复

使用道具 举报

地板
ID:164602 发表于 2019-3-22 08:19 | 只看该作者

#include<reg51.h>
#include<intrins.h>       

#define GPIO_LED P2

sbit k1=P3^1;

void Delay10ms(unsigned int c);

void main(void)
{
        unsigned int i;
        bit f;                       
        f=0;
        GPIO_LED=0xfe;
        while(1)
        {       
                if(k1==0)
                {
                        Delay10ms(1);
                        if(k1==0)
                        {
                                f=~f;
                            while((i<50)&&(k1==0))
                            {
                                    Delay10ms(1);
                                    i++;
                            }
                            i=0;
                        }
                }
                if (f==1)
                {
                        GPIO_LED=_crol_(GPIO_LED,1);
                        Delay10ms(30);
                }
        }               
}
void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}




回复

使用道具 举报

5#
ID:365802 发表于 2019-3-22 08:28 | 只看该作者
设定一个状态位, 灯的亮灭受状态位控制, 检测到按键就翻转状态位.
回复

使用道具 举报

6#
ID:426861 发表于 2019-3-22 09:29 | 只看该作者
流水灯外加条件判断
回复

使用道具 举报

7#
ID:492967 发表于 2019-3-22 11:27 | 只看该作者
外加一个判断程序  例如 计数: 按一下+1  偶数亮 奇数不亮 这样就可以按一下亮 按一下灭  循环
回复

使用道具 举报

8#
ID:495639 发表于 2019-3-24 23:51 来自手机 | 只看该作者
HC6800-ES-V2.0 发表于 2019-3-22 08:19
#include
#include       


谢谢大哥
回复

使用道具 举报

9#
ID:495639 发表于 2019-3-24 23:51 来自手机 | 只看该作者
zzfwhlltz 发表于 2019-3-22 11:27
外加一个判断程序  例如 计数: 按一下+1  偶数亮 奇数不亮 这样就可以按一下亮 按一下灭  循环

程序大概是怎么样的
回复

使用道具 举报

10#
ID:493177 发表于 2019-3-29 11:31 | 只看该作者
给一个  flag
回复

使用道具 举报

11#
ID:416287 发表于 2019-3-29 13:33 | 只看该作者
你用按键按下给一个标记啊  key——
回复

使用道具 举报

12#
ID:501283 发表于 2019-3-30 16:58 | 只看该作者
写一个流水函数,在主函数里如果按键按下执行流水灯否则关闭流水灯
回复

使用道具 举报

13#
ID:501405 发表于 2019-3-30 21:00 | 只看该作者
可以将流水灯控制变成反转,按一下反转一次
回复

使用道具 举报

14#
ID:498978 发表于 2019-3-31 11:31 | 只看该作者
你需要一个标志位,检测到按键按下就翻转一次
回复

使用道具 举报

15#
ID:494207 发表于 2019-3-31 14:59 | 只看该作者
设置一个外部中断,将控制流水灯的开关功能设置在中断函数中
回复

使用道具 举报

16#
ID:481641 发表于 2019-3-31 22:07 | 只看该作者
加一个while(1);
回复

使用道具 举报

17#
ID:502301 发表于 2019-4-1 11:45 | 只看该作者
找一本单片机的书,一般都会有教程的。
回复

使用道具 举报

18#
ID:313759 发表于 2019-4-1 14:18 | 只看该作者
按键中断
回复

使用道具 举报

19#
ID:497882 发表于 2019-4-1 16:17 | 只看该作者
加一个判断程序  用按键标记一下哦
回复

使用道具 举报

20#
ID:495639 发表于 2019-8-15 21:47 | 只看该作者
HC6800-ES-V2.0 发表于 2019-3-22 08:19
#include
#include       

谢谢大佬谢谢
回复

使用道具 举报

21#
ID:600598 发表于 2019-8-15 22:19 | 只看该作者
可以用反转控制,按一下反转一次
回复

使用道具 举报

22#
ID:486153 发表于 2019-8-16 10:29 | 只看该作者
标志位
回复

使用道具 举报

23#
ID:600712 发表于 2019-8-16 11:25 | 只看该作者
可以将按键连接的引脚设置成中断引脚,然后在中断函数中计中断次数,计数为单次时将等打开,计数为偶数次时将灯关闭
回复

使用道具 举报

24#
ID:605308 发表于 2019-8-29 23:41 | 只看该作者
你可以定义一个变量,按键一下变量加一,只需要看奇偶就可以了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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