找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用单片机按键去控制流水灯的开关,求大神指点程序设计思路

[复制链接]
跳转到指定楼层
楼主
ID:478778 发表于 2019-2-21 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用按键去控制流水灯的开关。主要有以下功能: 一个按键表示左移,另一个按键表示右移,当按下相应的按键时,流水灯会往指定方向流动。

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

使用道具 举报

沙发
ID:439075 发表于 2019-2-21 21:12 | 只看该作者
分别各做一个左移和右移的函数或子程序,设计一个状态机,按下相应的键就改变并保持状态,再根据状态调用各自的函数。
回复

使用道具 举报

板凳
ID:213173 发表于 2019-2-21 21:28 | 只看该作者
给你写一个简单的按键控制流水灯方向的程序参考
#include <reg52.h>
#include <intrins.h>//此头文件包含循环左/右移函数
sbit s1=P3^3;
sbit s2=P3^4;

void delay(unsigned int k)
{
        unsigned int i,j;
        for(i=k;i>0;i--)
                for(j=115;j>0;j--);
}
void main()
{
        unsigned char num=0;
//P1驱动8个LED
        P1=0xfe;
        while(1)
        {
                if(s1==0)
                        num=1;       
                if(s2==0)
                        num=2;       
                if(num==1)
                        P1=_crol_(P1,1);//循环左移一位
                if(num==2)
                        P1=_cror_(P1,1);//循环右移一位
                delay(500);//延时0.5秒
        }
}
回复

使用道具 举报

地板
ID:474677 发表于 2019-2-22 09:01 | 只看该作者
本帖最后由 iofree 于 2019-2-22 10:08 编辑
wulin 发表于 2019-2-21 21:28
给你写一个简单的按键控制流水灯方向的程序参考
#include
#include //此头文件包含循环左/右移函数

你这按键没有消抖处理吧?
回复

使用道具 举报

5#
ID:213173 发表于 2019-2-22 11:38 | 只看该作者
iofree 发表于 2019-2-22 09:01
你这按键没有消抖处理吧?

多数情况下按键是需要消抖,但不是全部,根据应用环境选择按键是否需要消抖和判断松手。在这个程序中消抖和判断松手就是多余的赘句。
回复

使用道具 举报

6#
ID:123289 发表于 2019-2-22 12:47 | 只看该作者
所谓向左向右取决于你的显示排列方案,给人的感觉上是向左或向右。
预先做一套向左的显示方案,再做一套向左的方案。
跟根据按键决定采用哪个方案就可以了。
回复

使用道具 举报

7#
ID:474677 发表于 2019-2-22 14:20 | 只看该作者
wulin 发表于 2019-2-22 11:38
多数情况下按键是需要消抖,但不是全部,根据应用环境选择按键是否需要消抖和判断松手。在这个程序中消抖 ...

你说得也有道理,这个场景确实不需要消抖,不过大多数按键应用都还是需要消抖,给新人建议时顺便帮他们建立起这个概念还是有必要的,以后也许能少走不少弯路

评分

参与人数 1黑币 +5 收起 理由
yaoji123 + 5 程序规范是必须的,具体用好要看场合,不要.

查看全部评分

回复

使用道具 举报

8#
ID:213173 发表于 2019-2-22 16:33 | 只看该作者
iofree 发表于 2019-2-22 14:20
你说得也有道理,这个场景确实不需要消抖,不过大多数按键应用都还是需要消抖,给新人建议时顺便帮他们建 ...

你说得有道理,给新人建议时更应该规范些。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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