如何快速学习单片机?
扫描二维码
随时随地手机看文章
说到硬件操控,有幸学过初中物理的大神们应该都知道:硬件操控的本质是电子器件两端接上符合规范的高低电压,造成电子流动然后电子器件进行工作。
但是,在实际开发中,一般会使用一段封装好的代码,例如安卓控制闪光灯打开:
这种封装好的代码固然简单方便,但是总是没有利用电流操控底层的快感。而我对单片机的理解是: 单片机通过CPU逻辑运算+IO端口控制电流来控制电子器件的开关 。
那么单片机开发到底是什么呢?它怎么控制电流继而运行起电子元件呢?首先我们来看一个简单的例子。下面是一组八个LED灯的电路原理图:
大家可以考虑一下压抑住自己关掉页面的冲动,其实电路图很简单,经我一讲会更简单。我们先忽视上方的动态数码管,只需仔细浏览红色方框中的电路图,其中D11-D18是八个LED灯,并且负极默认接地(GND)。那么只要在LED灯左侧加上高电压,理论上我们就能让LED发亮,并且我们看到,LED左侧的引线通过好多乱七八糟的电路,最后落到J12上。电路对应实物图如下:
可以看到,J12是一排引脚,或者说是一排导电的金属针,那往后的事情就简单了呀,通过J12想办法接进正电压,我们就能“手动”让硬件点亮了。
想什么办法来接入高电压呢?你是否已经迫不及待地找向身边的插线板?唔…我们不这么玩儿,这么简单粗暴的“手动”和蓝翔的课程还有什么区别?为了稍稍高端一些,我们来试着看一下承载着单片机的MCU板块吧,其原理图如下:
实物图如下:
其中,40接入了VCC(正极),各种PX.X和PXX一一对应起来。事实上,我们把这些PXX叫IO端口,用一个简单粗暴的解释:这些端口能通过CPU逻辑发出或接收高电压或低电压。
相信聪明的看官们已经迫不接待把手伸过屏幕开搞了,没错,我们应该把单片机的输出端口和刚才LED的输入端口串联在一起,然后输出高电压,我们就能通过写写代码把LED完美地点亮了。接线如下(代表IO端口P0的JP10接到代表LED输入的J12):
编程如下:
其中,0xff等价于11111111,也就是八个高电平。写入单片机后,结合默认的八个LED负极已经全部接地,效果如下:
我们可以看到,八个LED全亮。
所以总结起来,单片机开发,就是:分析电路板原理图,想办法编程或接线使电子器件两端产生电压差,将所编程序写入单片机,实验失败检查接线代码或坐等控制硬件的快感油然而生。