找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

使用道具 举报

沙发
ID:332444 发表于 2021-10-20 10:58 | 显示全部楼层

回复

使用道具 举报

板凳
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. }
复制代码
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

6#
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;
复制代码
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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