自学单片机第二十篇:多点输入

小微 科技自学单片机第二十篇:多点输入已关闭评论109字数 1642阅读模式
摘要前文说了输入的方法和如何检测,包括我们进行了自锁和非自锁的实验,两种按键都是可以完成信号输入的,区别就在于信号在程序中的处理方法不同,进而输出效果也不大一致。今天就再说说,多点输入...

前文说了输入的办法以及怎么检测,包含咱们进行了自锁以及非自锁的试验,两种按键都是可以完成信号输入的,区分就在于信号在程序中的处理办法不同,进而输出效果也不大一致。

今天就再说说,多点输入的操作,如果说单点输入是明白怎么检测信号,那么多点输入就是对信号检测的熟练掌握。咱们先说下练习的规则,本次采取P1以及P2端口,P1采取总线方式,P2采取单点检测方式。对输入的数据咱们均采取自锁方式处理。处理后用于P3端口的节制LED小灯点亮。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

首先咱们把代码先写好。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

我选取了两个io作为单独的开关,用来测试单独的开关状况读取。分别是P20、P21,然后对P1的所有端口都进行了状况读取,相似于总线方式的读取,跟咱们以前的总线方式的输出有类似的地方,一个是把数据输出出去,一个是把数据读取进来,两个都是把8位的端口数据放在了一个字节中。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

接着在主函数中,首先是对需要使用的端口进行置1,这个是常规操作,由于咱们以前说过,如果不置1,就没法准确的读取外部输入的信号状况。所以要读取,就内部先置1.文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

接着是循环体,这个主要是为了让程序不停的循环,以保证成能正常运行,避免意外跑飞。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

循环体中,显示对P1进行了读取判断,我给的是一个固定的值,0xf7,写成二进制就是11110111,可以看出当P1.3,也就是P1的第四个引脚处于低电位时,LED就会输出0x08,二进制就是00001000,至关于通过点亮LED来唆使哪一个按键按下。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

然后是开关的判断,通过判断两个单独的开关状况,然后分别输出不同的动作。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

因为都是对P3口进行的操作,所以最后一个按下的开关,抉择了P3端口的终究状况。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

依据程序,我来设计出仿真电路。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

左边是P1端口,接了8个按键开关,右边上端是两个单独开关接在P2上,下方是八个小灯,接在了P3口上,仿真电路中没有绘制出最小系统所需要的晶振以及复位电路,记得实际电路这些是不能省去的,不然没法运行,别说运行了,程序都下不进去的。文章源自微观生活(93wg.com)微观生活-https://93wg.com/17490.html

接下来简单测试下功能,首先顺次按下P1.0到P1.7,咱们会发现,只有在按下P1.3时P3才会呈现动作,点亮一个小灯,其他熄灭,当松开按键,小灯状况不产生扭转。

这主要是因为咱们使用了判断语句,前提知足就会执行输出,前提不知足,就不进入判断,输出的状况维持上一个循环的状况。于是只要前提不相符,输出状况就不会扭转,至关于自锁了。接下来再测试一下两个单独的按键,分别按下按键,查看状况。

可以看出,不同的按键按下,输出的LED状况随之扭转,终究的输出状况,保持了最后的按键按下时的状况。有无一种办法,咱们可让按键的按下,对其他按键发生的状况做出扭转,却又不是简单的覆盖呢?咱们尝试下,当我按下P13时,八个LED灯开始流水,当我按下P20,LED开始闪烁,当我按下P21时,状况清空,所有小灯熄灭。

咱们尝试书写下程序。

为了有流水的效果,我使用了延时函数。原本想写闪烁的,但想到取反同样可以看出开关致使的状况变化,所以就使用了取反,这样每一一次按下,都会有变化。程序很短,对于延时不会的,可以查看往期文章或者留言便可。来看下仿真,硬件没有扭转。

初始状况下,所有的都是高电位,而且因为没有相符判断前提呈现的情况,所以所有判断语句都没有执行。于是LED就是初始状况,全亮。此时按下P13,会看到,LED从高位逐步向低位开始置零,直到全熄灭后,呈现间隔点亮,然后静止不动。

呈现该状况,说明运行正常,接着就再按下P20再试试。

通过不断的单击按键,会发现,LED的状况在不断的变化,按下一次就变化一次。

最后咱们通过P21将所有状况都清空。

所有灯熄灭。在本次测试中,咱们遇到几个问题,第一个:当P1进入第一判断语句时,流水灯开始,此时按键P20、P21就没有用了,点击没有反映。第二个,当点击P20时,会呈现有时按一下按键,灯的状况扭转两次的情况。第三个,32个端口,就只能节制32个开关?

以上就是微观生活(93wg.com)关于“自学单片机第二十篇:多点输入”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/17490.html