本帖最后由 慢慢思考 于 2018-1-8 20:45 编辑
单片机这东西,它是人设计出来的,而人设计出来的东西,必然是根据人的实际需要来设计,所以,我们可以从“需要”来从头理解,也就是先从“知道它能做什么”开始学习,然后再学习“怎么让它做到”,之后如果你有兴趣,你可以去学习“它是如何做到的”,犹如汽车,我们知道它能装着你在路上跑,然后你再学习如何操作这东西在路上跑,至于它为什么能在路上跑,你需不需要知道,那要看你的需要。 比如说流水灯吧,我们知道灯要亮就必须给它加上电即一头接高电位一头接低电位,要它灭就必须断开电(严格说是让两头的电位一致),没有其它方法的。实现它的基本电路,就是灯加开关加电源,一个灯上一个开关,8个灯就接8个开关,然后顺序操作各个开关进行开关,让灯两端电位一致或不一致。最简单的操作方法,就是用你的手嘛。 真让你去做这个事你肯定烦,其实老板也烦,这点小事,付不起工资啊。于是,可以用单片机啊,怎么用?前面说了,除了用开关的办法来实现流水灯外没别的办法,所以,单片机在这里,它就是起个开关以变换电位的作用。 如何实现开关功能?我们知道单片机的引脚是实现各种功能的应用途径,也就是说要实现这些功能,实际上就是对引脚的应用。 单片机的引脚,其中的电源端、晶振端(也许有也许没有)那是为其自身能够工作而设置的,其它的引脚才是应用引脚即称为端口。其实端口的功能很简单:输出、输入、检测。简单解释就是自身输出高电位或低电位或者不输出、接收对方送过来的高电位或低电位或者拒绝接收、检测自身是处于高电位还是低电位,就这,没别的,真没别的。然后我们要知道,通过程序,我们可以控制端口做这些事。 下面我们就清楚了,即然单片机的端口的电位可以高可以低,那么我们可以将8个灯(假设是8个灯)的一头全部接高电平,而另一头接单片机的8个端口,在程序中首先将8个端口全部设为高电位,然后将第一个端口在程序中设为低电位——拉高为高电位——将第二个端口设为低电位——拉高为高电位......顺序执行下去并循环,流水灯就形成了。当然,你每一步操作之后,要停留一段时间,不然的话,你的眼睛是看不到变化的(太快了之后看不到变化,那是人的问题,不是单片机的问题)。单片机就这么简单。 前面说了,要让灯不亮,是要让其两头的电位一样,所以,你也可以将所有灯的一头全部接低电平,让端口输出高电平亮、低电平灭也行,当然,你硬要混着来那没人能拦着你,因为这样也能实现流水灯。 在程序设计时,对于初学者,我的建议是:一个步骤一个步骤地硬写,这样你会很快地上手并实现你所想实现的功能,否则,你会因为对编程技巧的不熟练而在编程中消耗很多时间,进而会直接影响你的兴趣,比如说流水灯的编程,你要一条一条地逐个端口写操作程序,等你熟练后再去对程序进行优化。 另外,一定要从自己搭建电路开始,开发板可以买,只是在买时加一个面包板、一些线、数码管、几个LED、电阻就行了(最节省的做法,这个可以玩转LED灯及数码管和点阵屏,再买一个可调电阻还可以玩1602及12864屏。当然你也可以买更多的东西用于搭建其它类型实验电路),至于电源及下载则从开发板上的接点引出,包括晶振也可以从开发板上引出。用这些东西搭建电路的目的是快速入门,之后就用开发板上的东西了。 以上知识,足够你在数码管、点阵屏上显示出你想要显示出来的东西了。同样的,在编程时,先一条一条地硬编,这样你就可以很快地将数码管、点阵屏的显示玩转,同时学习编程技巧,然后再从头设计程序。然后呢?就是学习程序设计语言,领略单片机的内部功能了。 PS:个人认为,学习单片机,首先得能理解其端口的功能并熟练地操作端口,然后再进阶。
|