单片机按键防抖程序_自学单片机第二十一篇:多点输入实际操作

本次实验不会太长,由于设备和其他原因,我们将继续采用以图片代替视频形式的讲解(发视频就无法通过~-~)。

在仿真中我们也看到了是个开关来控制八个小灯,为此,我们需要先安装十个开关,然后是八个小灯。

我这里设备还是充足的,小灯需要电阻限流,开关不用,跨接线排的还不算特别乱,够用就好。

2a4dc80637c04dc06cbd1d175a063a17.png

左下角两个小灯点亮,是由于我把下载器已经安装到了电脑上,所以下载接口的电流点亮了这两个小灯,不是故障,放心使用。看下之前仿真的电路图,对比下电路。

01a7ce1e2ce2f473b046fb10ce5a38af.png

老流程,我们需要先查看COM口,如果一直使用一台电脑进行操作,这个步骤就可以省略了,COM口是不会变来变去的。

9b6b35d07e5284bd12e60c257e6a1402.png

接着需要打开下载软件,我使用的是STC-ISP,由于单片机89c52是老版的,所以在软件版本上,只能使用老版本的4.8,新版的好使是好使,但是刷写老版芯片成功率太低,总是读不到芯片,老版软件就没有问题。打开软件后,简单的设置参数。

ce71b3e8b973c8d7e5a71a4e030efa58.png

如果之前使用过,就什么也不用管了,如果是第一次使用,就需要把步骤1那里的MCU选择下,就是选择与自己使用芯片一样的型号即可,如果没有,就选择同样的款型的,还是没有就选择同样功能的,无所谓是否同一公司。然后设置COM口,下边的就不要更改了。接着选择我们之前保存的可执行文件,记得需要是.hex结尾的。

4aa06972ed7276980535e7605cbf239e.png

确定后,我们就可以单击下载了。说了这么多,主要是有好些朋友依然没有试过下载到真正的单片机中测试,希望看完之后,自己尝试下,会发现,仿真和现实还是不一样的。

05c6eca24ff5e023151decd9fa46f8a8.png

单击下载后,等待片刻,软件会提示给单片机上电,此时我们再给单片机打开电源。

f58f8a850bc6002eda0ed88e39f8f4bb.png

当提示完成后,我们会在结果框中看到一些说明,例如单片机的实际频率,刷写时间,还有我们总共成功刷写过多少次,这些信息显示了,就说明成功了。其中实际频率对我们测试是很有帮助的,后期我们会涉及中断的计时,需要依据单片机的频率来测定时间长短,我们就可以通过这个来看下实际频率,我使用的是11.0592的晶振,系统反馈的是11.07418相差不大,但是反映到中断中,就会在长时间运行后出现累积偏差,例如一天后就会差个几分钟,这精度就无法保证了。所以实际和仿真还是有些不同的。不过我们现在的输入检测,不受晶振的影响。看下刷写程序后的状态。

ada3ba8845fa1cebd7bed9ddb5e824a7.png

所有的小灯都已经点亮了,这是由于所有的按键均没有按下,于是单片机不对P3操作,就会默认高电位。

我们接下来先按下P1.0看下状态。

cb3177d60d0225118c403ec28db46e4d.png

按下P1.0没有反应,我们知道,在前文的程序中,我们设定的是当P1.3按下才会开始执行,所以其他按键的变化,即使程序检测到了,也没有用,测试是否正常,当然还是要按下P1.3才行。

6590a1c8666d353ee90e51149f405c40.png

这是先执行的流水灯操作。

6fc206fb4cce33763da247666d202bfd.png

这是最终的结果,定格在这个状态,是因为程序此时跳出了循环,所以无法再改变输出的状态。接着我们测试按下P2.0的状态,这个按键是取反用的,也就是原来亮的灯,现在会熄灭,原来灭的现在会点亮。

6b490c211b9dfcfb30cf1ecb4bae5bc7.png

按这个按键时,就会发现一个现象,在仿真中好好的,但是在实际操作时,却会出现,有时按一下就切换了,有时需要按两下或三下才可以切换?是按键坏了?还是程序问题,难道是代码存在bug?

其实都不是,这主要是由于我们的按键是用的自复位型的,在切换状态时,存在一个中间状态,我们称之为抖动,至于为何会抖,又怎么消除,这就需要到下一篇说了,放一篇太长了。

最后我们按下P2.1,这个是清零键,按下后所有端口都会置零,不管之前灯的状态是什么都会被熄灭掉。

ecb57baccef2ca7acf44363a8bf7dfe3.png

看电源指示灯就知道,我没有把电源关掉,这是程序的输出结果。

好了,仿真也做了,实际操作也做了,这回关于输入的检测该学会了吧。之前的文章有的没有通过,所以没法看到。可以去电气学苑查看。看留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值