目录
本文所提到的问题都基于江协科技的51单片机入门教程视频教学,如果在视频中遇到了问题并且找不到好的解答,在这里或许能找到你想要的。
一、配置环境
下载网盘里的内容前要先将电脑自带的电脑管家和各种杀毒软件关闭,不然会影响破解软件的安装,会被自动拦截。

二、存储路径
其他内容问题不大,但下载keil5时最好使用全英文的存储路径,否则可能会遇到编译器中的保留字不变色,没法调整字体大小的问题。
三、STC软件中的单片机型号选择
在跟着教程一步步点亮LED时,打开STC软件会需要选择你的单片机型号,我第一次跟着视频选STC89C52时,程序烧录完之后现象并不是点亮第一个LED 而是前两个LED闪烁一下。我买的开发板是普中A2,需要将型号改选为STC89C52RC/LE52RC,现象才会恢复正常。

四、(3-4)独立按键控制LED移位时的位运算
代码如图(上面还有一个延时函数)

看视频时我就非常疑惑,为什么要先令P2=0x01,再进行位左移,之后再对它取反,兜这么一大圈。为什么不直接令P2=0xFE(1111 1110)然后直接位左移呢。
后面发现问题出在了对位运算的规则不够清晰上,如果按照我的想法P2=0XFE<<LEDnum;得到的结果会是:
0XFE(1111 1110)<<1=(1111 1100)
而不是我们想要的结果:
0XFE(1111 1110)<<1=(1111 1101)
左移时右边的空位是会用零补齐的,而不是直接将最左侧的那位移到最右侧来。
所以按着视频中的程序:
~(0X01(0000 0001)<<1)这个计算式来执行的话
会先对OX01进行移位(0000 0010)
然后进行取反(1111 1101)
达到我们想要的结果,将0向左移一位,使得按下按钮时LED移位。
其实如果对位运算的概念掌握的比较清晰,这个很容易理解的,但是看到弹幕里很多人在问,并且自己也没有弄清楚,就把它列在这里。
五、(4-1)静态数码管显示
1.电路中的译码器
在讲解这节时出现了一些,我以前没有接触过的概念(目前还没有学数电模电),例如这个译码器的构造。理解了这个概念,能帮助后面我们写代码时理解代码的逻辑。

这个译码器是与LED数码管相连的,目的是用来减少操控数码管时,所需要的引脚数量,按理说八个数码管应该需要八个引脚来分别操控他们,但有了译码器,我们就只需要三个引脚了,精简了单片机的结构,降低生产难度,这就是电路设计的巧妙之处。
那译码器是如何实现它的功能的呢?首先,我们想到一个问题,为什么操纵八个数码管,需要三个引脚呢?
我们知道,单片机是二进制的世界,8(111)正好就是三个比特能够代表的最大数字,所以我们只需要将三个引脚的电信号编码,再转译成电流,就可以达到控制八个数码管的效果。P22,P23,P24三个引脚所接收到的电流,转化为二进制的编码。如图CBA对应的是二进制数的三位。若三个引脚都无电流,则是000,对应右侧的Y0接口,控制LED1为低电平0,其他LED都为高电平,就可以达到只控制LED1的效果。同理001,对应Y1接口,控制LED2为低电平。以此类推,我们便达到了只需三个引脚就可以分别控制8个数码管的效果,这便是译码器的原理,由此我们也可以得到它名字的由来。为什么要被叫做译码器,便是因为通过翻译三个引脚所构成的二进制编码从而达成分别控制8个数码管的效果。
2.双向数据缓冲器(图中的74HC245)

顾名思义,它的作用就是用来缓冲数据。因为单片机的高电平驱动能力弱(因为输出的电流强度有限),低电平驱动能力更强,所以设计了这个结构。如果没有它,按理来说,八个引脚就应该直接与八个LCD接口连接,但由于单片机的高电平驱动能力弱,所以设计了这个缓冲器来提高它的驱动能力,只需要引脚提供微弱的电流,这个缓冲器就会将电流视为控制信号,再从与缓冲器直接相接的电源中获取电流,输出给LCD接口。由此便对引脚所提供的电流强弱没有了要求,只需要很微弱的的电流来当做信号传给缓冲器,缓冲器便能执行信号从电源获取电流,使得驱动能力增强。也可以简单理解为电流放大器,信号中继器。
小结:每个人都难免会在学习中遇到大大小小的困难,不要有畏难情绪,也不要跟着弹幕上人云亦云,一直抱怨自己看不懂,甚至开始自我怀疑。要在学习过程中多思考,逐字逐句的去分析,努力理解其中的逻辑,提升自己的独立思考能力,这才能够锻炼我们的自学能力。愿与诸君共勉。
2万+

被折叠的 条评论
为什么被折叠?



