标题: 用单片机按键去控制流水灯的开关,求大神指点程序设计思路 [打印本页]
作者: 我爱单片机@ 时间: 2019-2-21 10:42
标题: 用单片机按键去控制流水灯的开关,求大神指点程序设计思路
用按键去控制流水灯的开关。主要有以下功能: 一个按键表示左移,另一个按键表示右移,当按下相应的按键时,流水灯会往指定方向流动。
作者: bucker 时间: 2019-2-21 21:12
分别各做一个左移和右移的函数或子程序,设计一个状态机,按下相应的键就改变并保持状态,再根据状态调用各自的函数。
作者: wulin 时间: 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秒
}
}
作者: iofree 时间: 2019-2-22 09:01
本帖最后由 iofree 于 2019-2-22 10:08 编辑
你这按键没有消抖处理吧?
作者: wulin 时间: 2019-2-22 11:38
多数情况下按键是需要消抖,但不是全部,根据应用环境选择按键是否需要消抖和判断松手。在这个程序中消抖和判断松手就是多余的赘句。
作者: yzwzfyz 时间: 2019-2-22 12:47
所谓向左向右取决于你的显示排列方案,给人的感觉上是向左或向右。
预先做一套向左的显示方案,再做一套向左的方案。
跟根据按键决定采用哪个方案就可以了。
作者: iofree 时间: 2019-2-22 14:20
你说得也有道理,这个场景确实不需要消抖,不过大多数按键应用都还是需要消抖,给新人建议时顺便帮他们建立起这个概念还是有必要的,以后也许能少走不少弯路
作者: wulin 时间: 2019-2-22 16:33
你说得有道理,给新人建议时更应该规范些。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |