这是单元训练题目。学习完之后自己独立敲多遍代码,即可较好掌握该简单模块。
先看右边蜂鸣器和继电器,都是给低电平就会工作,往回推看到这个ULN2003,这个是比较重要的点,我也不知道是什么东西,那就去百度,如下面。
左边是in,输入,三角形的是非门,意思就是输入和输出相反。
再回到这里,知道达林顿管的作用就可以知道要个给573这个锁存器的P0口什么二进制码了。
蜂鸣器和继电器都是给高电平就停止,给低电平就工作。
(基础,注释的先不管)我们把main主函数的框架(包含头文件,防止重复定义,函数体,while循环)写好之后,就是老样子把延时函数的模块借助软件生成好,如上图所示,注意Delay.h里面包含的头文件是intrins.h,第二点注意就是在main.h里面的外部声明这个延时函数。
学过上一章的这部分LED的走马灯程序应该都能写出来,延时觉得太慢了可以改成1。然后来写今天的重头戏——蜂鸣器和继电器。其实数据手册上,这俩的函数构成跟这个LED可以说是一模一样的,第一步配置引脚选择要控制的设备,第二步给P0口赋二进制码实现打开设备或者关闭设备的要求。
这是作者写的,很垃圾,连任务同时实现依次点亮和蜂鸣器工作都不能做到。
大家还是看下面作者经过学习后改良的代码。
还是先把(注释先不管)基础main和延时函数的框架写好。
第一步,引脚的选择,也就是设备的选择,我们可以想想,如果不写这个函数,到时候每想要切换LED和继电器(蜂鸣器)就要配置一遍P2口,那我们何不直接统一起来,这时只需要输入一个参数就可以选择了,既方便又简洁。如果想要更简洁,就可以使用位操作。
一句话搞定,这是向国一学长学习的结果,至此,上一章我们懵逼的地方也就解决了,我们输入的参数是低三位,经过位操作就可以丢到高三位,也就是P2的5,6,7口。
我们选择完引脚一般就要给P0口二进制码,为了简洁,我们还可以把赋值丢进此函数里面。
像下面俩张图那样,也是能实现俩器的关闭的。
为了实用性,因为我们蓝桥杯比赛写代码经常有个在你功能表现之前要把外设关闭,这一般包括LED和蜂鸣器和继电器的关闭,所以将此函数模块化,对于以后会有帮助。 如下图所示。
下面这张图就是最后的结果了,虽然依旧是不能点亮和蜂鸣器工作一起进行(我觉得是因为单片机事单进程的原因)但是学习完视频还是 对我们的代码有着非常大的帮助和改进。
(实验现象的视频后期审核完我会在这里加上)
LED+蜂鸣器和继电器