第一阶段综合例程(下) 1.上一讲的代码#include<reg52.h>sbitADDR2=P1^2;sbitADDR1=P1^1;sbitADDR0=P1^0;sbitENLED=P1^4;sbitADDR3=P1^3;sbitBEEP=P1^6;sbitKEY13=P2^4;sbitKEY14=P2^5;sbitKEY 独立按键 2022年05月14日 183 点赞 0 评论 75480 浏览
第一阶段综合例程(上) 1.其他按键的使用我们之前都是让P2.3输出低电平来让K1,K2,K3,K4作为独立按键,那我们要想用K13,K14,K15,K16做独立按键时只要P2.0输出低电平就可以了。下面是简化的原理图2.美女与男人作为本章的最后一个题目,我们结合所有学过的知识做一个综合例程,实现美女与男人的游戏的功能代码。 独立按键 2022年02月19日 223 点赞 0 评论 107670 浏览
双模式函数封装 学了这两种按键模式的代码,我们现在决定将这两种模式封装成一个函数,然后通过参数选择是支持连按还是不支持连按。1.双按键一直以来我们都是只用一个按键,现在利用两个按键来实现按键模式的切换,K3负责用来给K4做“支持连按”还是“不支持连按”的选择。 独立按键 2022年05月20日 106 点赞 0 评论 102209 浏览
代码对比 1.延时函数退出舞台有了上一讲的理论讲解,代码的实现就比较简单了,实验现象就是高6位的6盏灯不停流水,我们用K4按键控制LED2的亮灭,并且途中并没有影响到6盏流水灯的运行。我们知道以前流水灯是需要延时才能看得到流水现象的,那么现在再用延时函数的话,按键就没有意义了。 独立按键 2022年04月25日 200 点赞 0 评论 107808 浏览
流水灯的优化解说 1.题目为了更好地体现上一讲优化好的不支持连按代码的优势,我们来一道题目:用上7盏灯,左边6盏不停地流水,最右边1盏实现按键切换灯的打开和关闭,且按键动作不能干扰到流水灯的流速状态。实验现象状态模拟如下11111011//按键没按下11110111//按键没按下11101110//按键按下后抬起110 独立按键 2022年04月05日 96 点赞 0 评论 111375 浏览
再次优化不支持连按的代码 1.还需消抖可以看到我们在第6讲和第7讲的按键不支持连按代码中,死循环都有“delay_ms(2);”,因为大多数时候主循环都要做很多事,所以我们认为这2ms的延时是很多复杂程序要执行所消耗的时间,而正是因为这个延时函数的存在把按键的物理抖动给滤掉了,误导了我们以为这样的不支持连按代码是合格的。 独立按键 2022年01月19日 57 点赞 0 评论 73333 浏览
支持连按与全局变量 1.支持连按的思路支持连按的代码就是在“不支持连按”代码的思路上把“if(KEY4==1)”改为“if(KEY4==0)”,这样的话按键不松手程序就能一直进入“if(KEY4==0)”的大括号里面。然后我们定义一个变量times,如果一直按着不放, 独立按键 2022年05月31日 117 点赞 0 评论 105500 浏览
静态变量 1.staticstatic一般不用在主函数中,大多数在中断函数和封装好的子函数里运用,它的作用是保证在子函数或中断函数中定义的变量每次调用完之后都可以保持调用完时候的值,《手把手教你学51单片机》文档7.2节有这个知识点的讲解,不过我们还是用代码来解释这个static的作用吧。 独立按键 2022年05月24日 167 点赞 0 评论 85736 浏览
不支持连按 1.缺陷上一讲讲解的“不支持连按”模式贴合了我们在生活中的实际应用,虽然我们仅用“while(KEY4==0);”就把按键模式给切换了,不过这条语句严格来说是有缺陷的。现在我们编写的都是简单的程序,如果后面还有更多更复杂的程序时,“while(KEY4==0);”就成为BUG了。 独立按键 2022年03月30日 213 点赞 0 评论 101268 浏览
按键模式 1.前讲回顾在上一讲的代码里如果我们按下按键一直不松手,则灯会一直闪烁。这是因为“稳定接触状态”一直保持着长时间的低电平,所以程序的二次“if(KEY4==0)”判断一直满足条件就会在“LED2=0;”和“LED2=1;”之间来回切换,再加上50ms延时才会保持亮一段时间灭一段时间所体现的LED闪烁。 独立按键 2022年05月31日 202 点赞 0 评论 120236 浏览