按键次数的计数的数码管显示
上一节
下一节
看来我这是要对按键次数检测系统死缠烂打的节奏了!目前已是第四次玩这个系统的开发,只不过这下我们用到的是八段数码管显示。不过这里我要提出一个要求,为了分时显示,我们不用前面说的delay延时,原因有两个,一是delay延时拖累CPU运行效率,二是不鼓励大家遇到延时就想到delay,这是很LOW的做法好吗?!如果将来大家工作了,开发系统也还是这么干的化,你的上司会很怀疑你的系统开发能力。所以不到万不得已不要这么干。所以在本案例的开发中,我们使用定时器,比如定义5毫秒的间隔切换显示每个位。为了更好地开展编程,我们把系统功能再具体明确一下:
用三位数码管显示,初始显示000;
按键检测对象使用K5键(P1.4),即不选中断引脚,也不选计数引脚;
系统上电即开始检测和计数显示。
请大家结合上述功能要求动手设计开发程序,然后观看本节视频讲解并做分析和总结。
在本例中,设计使用了一个变量来辅助完成数码管的分时切换显示,每次进到定时中断程序,让变量做自加,当变量为0-2,就分别在第0、1、2位上显示对应的数值字符,程序中应用了switch…case…语句;另外,同前面的程序设计一样,对于按键的检测,我们使用了key_last、key_now的方法,把它放在主程序里做了。不过在调试的时候还是因为按键抖动的原因从效果上看,有时按下会跳跃好几个数值,说明程序设计还是有些BUG,没能考虑到实际应用的情况 ,请大家对它改编一下,结合定时器的定时功能来在定时的按键检测。下一节我们就来消灭这个BUG。

