假如我们的开发板的硬件连接有如下情况,我们需要点亮LED,需要怎么做?
先看左图,要想点亮LED,根据本章第一讲知识,只需“+5”与R1是短接状态即可,那么PNP型三极管就是起到被单片机IO端口控制是否允许此处短接的作用,也叫三极管是否导通。
如果单片机IO端口输出的是低电平(0V),此时我们可以直观的认为“+5”那端与单片机IO端口形成压差有电流通过,而电流流向正如箭头所示,则表明此时“+5”与R1是短接状态,三极管导通,灯就被点亮了。
那单片机IO端口输出的是高电平(5V)时,则没有形成压差也就产生不了电流,那么箭头不能代表此时有电流流向这个方向,所以“+5”与R1是断开状态,灯没有被点亮。箭头起到的就是辅助我们理解的优势。
这样我们可以根据箭头很形象的判断出单片机IO端口输出什么电平状态时就可以点亮LED。R1,R2电阻起到的是限流保护。
同理,右图使用的是NPN型三极管,那么单片机IO端口输出高电平时点亮LED,输出低电平时点不亮LED。
《手把手教你学51单片机》文档第3.3节有全面讲解这部分知识。
有一种元器件只需要用到我们单片机三个IO端口就可以控制它的八个引脚其中的一个输出低电平,开发板就用到这种叫74HC138三八译码器。我们省略它的电源供电引脚,画出需要讲解的引脚。
首先有三个引脚E0,E0,E1需要固定给它默认的电平它才能正常工作,俗称使能器件。
此时3个单片机IO端口输出不一样的电平时,IO0~IO7的其中一个引脚就会输出低电平,而其他7个IO都是输出高电平。
当我们的三个IO端口这样输出时,则有以下情况
单片机IO端口3(输出0)
单片机IO端口2(输出0) → IO0输出0
单片机IO端口1(输出0)
单片机IO端口3(输出0)
单片机IO端口2(输出1) → IO2输出0
单片机IO端口1(输出0)
一句话总结,三个IO端口输出的三个值从 IO端口3→IO端口2→IO端口1排成二进制数的得数就是哪个IOx输出低电平。比如三个IO端口这样输出:1 1 0。此时二进制值为十进制的6,那么IO6就输出低电平,其他输出高电平。
不过仅凭我们这样粗浅的讲解初学者会有疑惑,所以大家前往《手把手教你学51单片机》文档第三章深入学习了解这些元器件,多琢磨几遍,每遍都会有更深入的认识。
我们先拿上一讲的原理图与图二对比
图一:
图二:
上下两张图都表示同一个连接原理,图一比较直观看到1盏灯直接连上1个IO端口,而图二为了使观赏性更舒适,用两个名字相同的标号(网络标号)放在断点处,表示这两点代表着硬件连接中有一条覆铜线相连。平时阅读原理图我们推荐使用图二,不然用图一模式时元器件连接多了就会感觉太花眼。
我们通过对比以下两张图就看到使用网络标号的优势所在
本文固定URL:https://www.dotcpp.com/course/178
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程