找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求思路 单片机单按键控制8个Led灯亮灭程序,逐1-8灯或者从8-1

[复制链接]
跳转到指定楼层
楼主
ID:739432 发表于 2021-10-19 07:49 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请求大侠:用一个按键来分别控制8个Led灯亮灭,逐1→8灯或者从8→1,方向任意。怎么编程?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-10-19 19:51 | 只看该作者
你先搞明白 1 等于 亮灯,还是灭灯
再搞明白,按键按下 等于 1 还是 0
8个灯,是一个总线,还是分布各处。

电路原理搞清楚了,然后再考虑编程。不然随便给你个程序,你能成功跑起来的概率 约等于0
回复

使用道具 举报

板凳
ID:332444 发表于 2021-10-19 20:24 | 只看该作者
到我博客找流水灯例子有这样切换的,用按键控制即可,经典按键代码:if(k1==0&&++xd==0){k=~k;while(k1==0);}这样按键控制状态K即可,其余代码到我博客去抄写。https://blog.csdn.net/xianfajushi
回复

使用道具 举报

地板
ID:130231 发表于 2021-10-19 20:29 | 只看该作者
用循环左移,右移,就可实现。逐1,逐2点亮也可以,或者多个也可以。
回复

使用道具 举报

5#
ID:973452 发表于 2021-10-19 22:48 | 只看该作者
要看你灯是怎么接的?也就是电路原理
回复

使用道具 举报

6#
ID:332444 发表于 2021-10-20 10:58 | 只看该作者

回复

使用道具 举报

7#
ID:964308 发表于 2021-10-20 18:42 | 只看该作者
随手写的一个,自己把没定义的变量和没写的函数补全吧

unsigned int p0=0x01;    //这个p是小写
void main()
{
while(1)
{
while(key);    //低电平有效
delay(30);    //延时30ms
if(p0==0x80) p0=0x01;
else p0=p0<<1;
P0=p0;
}
}
回复

使用道具 举报

8#
ID:739432 发表于 2021-11-3 13:24 来自手机 | 只看该作者
xianfajushi 发表于 2021-10-19 20:24
到我博客找流水灯例子有这样切换的,用按键控制即可,经典按键代码:if(k1==0&&++xd==0){k=~k;while(k1==0) ...

在您的博客中没找到。烦劳大侠复发一份
回复

使用道具 举报

9#
ID:332444 发表于 2021-11-3 14:18 | 只看该作者

  1. sbit k1=P1^0;
  2. void main()
  3. {
  4. uchar xd=0;P0=1;
  5. while(1)
  6. {
  7. if(k1==0&&++xd==0)
  8. {
  9. P0=_crol_(P0,1);
  10. while(k1==0);
  11. }
  12. }
  13. }
复制代码
回复

使用道具 举报

10#
ID:332444 发表于 2021-11-3 14:33 | 只看该作者
我博客有众多例子代码,在理解按键代码的基础上随意复制一些代码都可轻松实现,关键是要理解代码。
按键代码逻辑当检测到按键按下后再判断是否过了消抖时间,只要有一个不符合就不会执行按键里面代码,一旦2个条件都成立(按键按下并且达到消抖时间)执行按键里面代码,并且等待按键释放,本例按键按下灯移动1位,且按键释放后才能执行下一次移位。
回复

使用道具 举报

11#
ID:332444 发表于 2021-11-3 14:42 | 只看该作者
本按键代码下载到板子上实验正常使用不曾出现抖动现象,特别老旧板子上的按键没条件测试,因为没那样的板子可用来验证。
回复

使用道具 举报

12#
ID:332444 发表于 2021-11-3 14:47 | 只看该作者
当然,可以加大延时长度用int和修改代码如

  1. if(k1==0&&++xd==0)
  2. {
  3. P0=_crol_(P0,1);
  4. while(k1==0);
  5. }
  6. else xd=0;
复制代码
回复

使用道具 举报

13#
ID:332444 发表于 2021-11-3 15:22 | 只看该作者
本按键代码之所以能跳过抖动,妙就妙在2个判断条件安排的顺序上,只有在按键稳定期间且达到一定时间,所以延时不需要很长时间,按键非稳定期间条件就不会成立,这样显得按键灵敏度很好,所以称为经典,不喜欢写多行代码。
回复

使用道具 举报

14#
ID:587810 发表于 2021-11-3 16:57 | 只看该作者
在按键按下得程序中编写一个移位得函数语句
回复

使用道具 举报

15#
ID:453974 发表于 2021-11-3 21:50 | 只看该作者
设置一个变量,按下一次按键加一次数;然后用位定义,定义小灯,按下一次点亮一个,清除上一个
回复

使用道具 举报

16#
ID:332444 发表于 2021-11-4 10:37 | 只看该作者
新官上任三把火(诸葛孔明上任火烧博望坡),新生上学三萝卜(还珠格格上学不求甚解只会萝卜,能把萝卜变成锣钹罗帛罗白全靠别人),横批还想不到,哈哈。。。挺有趣的。
回复

使用道具 举报

17#
ID:332444 发表于 2021-11-4 13:38 | 只看该作者
午饭时灵感得横批:指学成才。指望别人指点来学习,指望抄写别人蒙混过关。有感提问的人百相。
因此改写上下联:上联,新生上学三萝卜,下联,新官上任三把火,横批,指学成才。
回复

使用道具 举报

18#
ID:311846 发表于 2021-11-4 13:56 | 只看该作者
为什么这么多人回复,网上例子大把!而且一个简单的入门,一看就是小白伸手党
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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