2730|6

2

帖子

0

TA的资源

一粒金砂(初级)

流水灯已实现向左,向右和左右,暂停的功能,还差快速和低速两个功能不知道怎么加上去 [复制链接]

#include<reg51.h>
sbit key1=P3^0;
sbit key2=P3^1;
unsigned char dat1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char dat2[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char dat3[15]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char MODE=0,stu=0,num;
void delay(unsigned int x);
void keyscan(void);
void main(void)
{
    while(1)
    {
        keyscan();
        switch(MODE)
        {
            case 0:if(stu) {P0=dat1[num];num++;num%=8;}break;
            case 1:if(stu) {P0=dat2[num];num++;num%=8;}break;
            case 2:if(stu) {P0=dat3[num];num++;num%=15;}break;
        }
        delay(100);
    }
}
void delay(unsigned int x)
{
    unsigned int i,j;
    for(i=0;i<x;i++)
    {
        for(j=0;j<333;j++);
    }
}
void keyscan(void)
{
    if(key1==0)
    {
        delay(10);
        if(key1==0)
        {
            MODE++;
            MODE%=3;
            num=0;
            while(key1==0);
        }
    }
    if(key2==0)
    {
        delay(10);
        if(key2==0)
        {
            stu++;
            stu%=2;
            while(key2==0);
        }
    }
}

此帖出自51单片机论坛

最新回复

你可以设置一个阈值,比如一秒后按键还没松开, 就进入一个死循环,这个死循环里面执行加速的功能, 跳出这个循环的条件是按键松开。 如果是短按的话就不会进入这个循环,对你原来的功能没有影响   详情 回复 发表于 2021-5-19 09:01

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

而且只能用两个按钮来控制,望大佬求助帮修改一下
此帖出自51单片机论坛

点评

你可以设置一个阈值,比如一秒后按键还没松开, 就进入一个死循环,这个死循环里面执行加速的功能, 跳出这个循环的条件是按键松开。 如果是短按的话就不会进入这个循环,对你原来的功能没有影响  详情 回复 发表于 2021-5-19 09:01
你这里的重点是需要用两个按键控制不止两个功能是吧? 可以考虑长按按键来实现快速和低速功能,比如右边按键长按时快速,左边按键长按时低速,就是可能会比较费手哈哈哈  详情 回复 发表于 2021-5-19 08:56

回复

4

帖子

0

TA的资源

一粒金砂(初级)

直接改延时大小实现低速和快速功能不行吗?

此帖出自51单片机论坛

回复

6123

帖子

0

TA的资源

五彩晶圆(高级)

如果没有用PWM实现流水

那想要让流水灯变慢点,就增加延时

反之亦然

此帖出自51单片机论坛

回复

1万

帖子

204

TA的资源

管理员

可以修改点灯的频率,.从你的代码看直接调整延时会比较方便

此帖出自51单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

回复

813

帖子

2

TA的资源

版主

本帖最后由 1nnocent 于 2021-5-19 08:57 编辑
单片机小白啊 发表于 2021-5-18 12:16 而且只能用两个按钮来控制,望大佬求助帮修改一下

你这里的重点是需要用两个按键控制实现两个以上的功能是吧?

可以考虑长按按键来实现快速和低速功能,比如右边按键长按时快速,左边按键长按时低速,就是可能会比较费手哈哈哈

此帖出自51单片机论坛

回复

813

帖子

2

TA的资源

版主

单片机小白啊 发表于 2021-5-18 12:16 而且只能用两个按钮来控制,望大佬求助帮修改一下

你可以设置一个阈值,比如一秒后按键还没松开,

就进入一个死循环,这个死循环里面执行加速的功能,

跳出这个循环的条件是按键松开。

如果是短按的话就不会进入这个循环,对你原来的功能没有影响

此帖出自51单片机论坛

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表