现在单片机的水平只能说是的。如果你想从外设中学到更多,你手里只有开发板。有什么好办法吗?目前,基础知识只有C,会单片机,数电也懂点,模电没看过,电路还没开始……
对此,我想提出以下学习建议:
-
必须学好基础知识;
-
模块学习;
-
完成一个项目必须总结;
-
通过学习一种单片机,再学习其它单片机,就会很快开始,学习外设;
-
学会移植(抄)程序。
学习技术的东西是一层一层的。如果前面的基础知识学得不好,后面的学习会让你无知,最后会走很多弯路。 对外设的学习,可以从两方面来看,一个是单片机与外设的电路图连接,这是硬件方面;另一个是软件方面,如何用软件控制这个外设。例如:
这是一个LED对于流水灯模块,您至少应该从电路图中了解以下信息:
-
LED灯D1到D8分别连接到单片机P1.0到P1.7引脚;
-
当你把其中一个引脚放在零,相应的LED灯就会亮。
这是阅读电路图的能力,是最基本和最重要的。
然后是例程,点亮一个LED灯。
#include<reg52.h> sbitLED=P1^0; voidmain(void) { LED=0; while (1); }
那为什么要包括呢?reg52.h?内容是什么?sbit这是什么意思?是标准C中的关键字还是标准C中的关键字?keil C里面的关键词?为什么要写这个句子?为什么最后要加?while死循环?
当我第一次学习的时候,我通常不会问自己这些问题。当我自己学习的时候,我从来没有问过自己这些问题。但这些知识点只是学习的基础或盲点。
我就不多写基础了,点到即止。
不多说了,我直接去看我学习资料的图片,买了学习板后客服发的资料挺好的。
可以说这些都是外设。分析每个模块的电路图和代码真的够大学玩四年了。 顺便说一句,仅仅阅读信息是不够的,因为信息非常混乱,你不知道从哪里开始,这次有必要买一本关于单片机的书,因为技术书是整理,你做什么模块,看看章节,同时做实验阅读材料,学习非常快。这种方法不一定适合每个人,但至少我是这样来的。
熟悉几个模块后,可以尝试组合这些模块,给自己一个小项目。例如,我试过使用它DS1302和LCD1602做过一个LCD日历 时钟。
重要的事情说三遍: 用文字描述您使用的技术、电路图分析和代码分析。总结不需要逐字逐句地播放。您可以复制数据中的文本和代码,但您必须首先彻底理解它们。如果您没有彻底理解它们,请不要将这些文本复制到您的总结中,而不是为他人写任何文章,而是为自己学习(如照明)LED不需要总结这个简单的项目)。
如果你不知道该写什么什么,你可以参考大学里的单片机实验指导书或实验报告。我一直认为写那些实验报告和课程设计报告真的是最好的学习方法!也许你将来不必写实验报告或课程设计论文。 我们的实验报告如下:
-
实验目的
-
实验内容
-
仪器、设备和材料
-
实验原理(使用什么芯片,外设什么)
-
实验步骤
-
实验结果(代码)
-
注意事项
如果是你自己写的总结,最重要的是4。你不能写任何其他的东西。整理总结使用的芯片、外设、电路图和代码,对这些技术有非常深刻的理解。注意事项可以写一些技术问题,为什么在实验中卡住,或者很多材料没有写,他们发现的技术细节。例如,红外线NEC协议:
这是NEC在协议的典型脉冲链开始时有一个9ms和4.5ms的低电平,接下来是用户码和数据码等等。但是,在红外接收头那一端,这些信号是相反的。
也就是说,红外接收头输出信号的引脚在没有信号的情况下输出高电平,接收信号后输出9ms的低电平和4.5ms高电平,取反数据码等。
刚开始学习的时候可能不会注意到这些细节,以为只要例程跑了,懂了例程代码和电路图就学会了。不是这样!我曾经为老师调试过这个红外协议。为了优化红外接收的稳定性和准确性,我调试了将近一个半月(其实每周只需要8、9个小时,对吧?记不清了)。最后,项目结束后,我发现了很多以前没有注意到的知识点。
总之,一定要总结,不要偷懒。
现在我正在尝试总结IIC,SPI,UART这些总线协议。总结了一些技术知识后,我会发现很多调试过程中学不到的知识点。比如SPI,当我使用它时,它只是一个非常简单的移植程序(在宝藏购买的模块中,客户服务会顺便给你一个例程),理解例程,然后你可以根据自己的想法修改程序,根本不理解SPI。但对SPI有了感性的理解,回头总结,联想自己做项目遇到的技术问题,你会发现某个知识点不知道,所以你不能开始。另外,项目完成后不需要总结,查资料时可以开始总结。
再说一遍,我说的总结写起来很简单,就是用新的技术资料分析你,理解透彻。word组织文档。
在我看来,只要你精通一台单片机,再学其他单片机就很快,学习外设,学习其他东西。
帮老师做项目的时候(真的觉得参与项目收获很多),用了LCD后来发现12864,LCD12864和LCD1602的指令是相似的,我以前用它做过一个时钟,所以我用它LCD12864年,我很自信。而且,当我使用1602时,它加深了「芯片的操作本质上是寄存器的操作」理解这句话。除二极管、数字管、蜂鸣器等分立元件外,液晶显示屏、外部存储器(24C02)、DS这些带芯片的外设,如1302,本质上是对寄存器的操作。
因此,不要担心将来需要重新学习其他模块。那些外设或模块有一定的标准。LCD我只接触过液晶模块。LCD1602,之后上手LCD12864很快,那个LCD12864没有例程,需要自己写程序,只需要修改初始化程序,然后直接移植其他驱动程序1602。
刚才也引出了第五点,学会了移植程序。51单片机在行业中真的很糟糕,几乎每个电气专业都会学习,所以如果你想使用51控制任何外设,基本上可以在互联网上找到很多信息和程序,很多程序不需要写,这是理解外设工作原理和程序的好机会。当您不使用51作为主控芯片,或使用类似的外设时,直接移植以前的程序。
接下来,说一些题外话。事实上,我想强调以下几点:
-
基础
-
分为模块(分为小目标学习)
-
总结
-
先精通一种
不仅这样学单片机比较好,学什么都可以。
看时序图,看datasheet我觉得写总结的时候可以提高能力。datasheet这是工程师的基本能力。我想问一下,我玩了51这么久,见过51datasheet么?没看过?可以马上去看啊!会看了51的datasheet,看看其他芯片datasheet(一通百通)。
因为我比较软,我只能提一下硬件。一开始,最重要的是学会分析电路图。
这是学习板上的DS1302模块电路图。 从电路图中可以看出,该模块由单片机的哪两个引脚控制?晶振在电路图中有什么作用?C12有什么作用? 如果你分析电路图,你就会明白原理。当你需要设计时,你会得到它,或者看它datasheet在设计电路图时,你会知道为什么要这样设计。
这里我只强调一个词:!
至于画什么电路图,画什么PCB我就不提了。
嵌入式物联网 22个STM32项目和竞赛作品【华清远见发放信息包】http://makerschool.mikecrm.com/f4wjYBB