怎么自学单片机?需要用什么软件看什么书?
怎么自学单片机?需要用什么软件看什么书?
-
单片机应用广泛,学会单片机很有发展前景。学习单片机主要包含硬件学习和软件/程序学习两个方面,这两个方面都会涉及到相应的软件。
1.单片机硬件学习
单片机在一件电子产品中是一颗主控芯片,所有的外围电路都是以单片机为中心的。所以在学习单片机时要掌握单片机常用的外设电路。常用的单片机外设电路有:
按键输入电路:常用的交互方式,输入;
液晶/数码管显示电路:常用的显示电路;
继电器驱动电路:用于控制继电器的输出;
通讯电路:RS232,RS485,CAN,蓝牙等电路;
常用的运放电路:用于信号处理等;
AD采样电路:用于采样连续的物理量,如温度、电流等;
常用的电路设计软件有altium designer,candence等。要会设计原理图还要会PCBlayout。
2.单片机软件的学习
软件的学习主要是编程。要熟悉单片机寄存器的操作方法或者学会使用库函数编程。要学会单片机GPIO的输入输出操作,学会片上资源的操作。
GPIO的配置方法:将GPIO配置为输入/输出,并能实现简单功能,如点亮LED,驱动继电器/蜂鸣器,按键检测等;
Timer资源的学习:学会配置定时器,并能实现相应的功能;
中断资源的学习:学会配置外部中观、定时器中断、AD采样中断等;
AD采样的学习:学会单片机的AD采样的配置,实现AD转换;
UART功能的学习:实现RS232,RS485等常用的通讯接口;
3.常用的软件
前边已经提到,硬件部分会涉及到altium designer,candence等电路设计软件。软件部分的编程环境主要是由单片机来决定的,主要看单片机被哪款编程环境所支持。目前比较主流的编程环境为:
keil:支持51单片机,STM32单片机等,支持大多数主流的单片机;
IAR:支持MSP430单片机(IAR Embedded),STM8单片机(IAR for STM8)等;
2018-08-14 19:54:45 -
这个问题我有亲身的体会,单片机我也是自学的,自学的初衷就是因为兴趣。有一天去实验室找同学玩,看到他在一个封闭的场地上放各种障碍物,一个小车避开障碍来回穿梭,感觉挺有意思,就想自己也做一个玩玩,就走上了学习单片机这条路···
如何自学单片机
刚开始学习的时候也是比较迷茫,不知道从哪里入手,同学推荐我先看郭天祥的“新概念51单片机C语言教程”,这本书算是我的启蒙吧,书里面介绍了基本C语言知识和编程软件KEIL,这本书好的一点就是浅显易懂,直接是把我这个单片机小白领进门的。书还有配套的视频也可以找来看看,看视频的话会更直观一点,便于快速入门。(这本书也有一定的局限性,后面再说,但入门足够)
单片机前期的学习以会用为主。不要纠结于寄存器、定时器、中断这些单片机的内部结构以及如何工作的,开始学习单片机就像学车一样,学车时开始知道怎么加油挂挡刹车控制方向就好了,至于发动机、变速箱、转向助力是怎么配合的以后再说,先学会开车。学习单片机刚开始时就是学会如何编程控制就好,至于内部结构,以后再说。
基本上看书、看视频以后就可以编写一个点亮LED或一组流水灯的程序了,那么,恭喜你,就算是入门了。入门之后刚开始就自己编程还是有点困难,基本是看别人怎么用,怎么写,先理解别人的程序,在理解的基础上模仿和修改,在修改的基础上编写自己的程序,就这样一步一步的过来。学习单片机重要的一点就是自己多写程序,多调试,只看书或视频效果不大,做到在练习中学习,就像游泳一样不管是用什么姿势先下水再说^_^。
入门以后就是按部就班的学习了,I/O口,定时器,中断,串口,数码管 1602,182864,AD/DA,步进电机,直流电机,I2C,PWM,这些内部资源和外部模块依次学习以后就可以完成有点难度的工程,比如说做一个自动循迹加避障的小车、一个12864带遥控调节的万年历,诸如此类。用所学知识做出一个自己想要完成的小产品,还是有满满的成就感。
软件
软件的话主要有两个,一个是Keil,另一个是Proteus。Keil软件是编程和编译软件,把我们理解的C语言转换为单片机可执行的机器语言,我们在Keil里编写控制程序,Keil帮我们完成转化,然后下载到单片机中执行。Proteus是电路仿真软件,就是搭建一个电子电路模拟实际的硬件电路,这样就不需要真正的硬件,我们就可以在仿真电路中关联Keil编译好的程序,来验证我们的代码。这样的好处是只要有电脑我们就可以编程并验证,但是仿真电路是理想化的硬件,真正的硬件和仿真之间还是有很大区别的,尤其是高频电路和模拟信号,因此仿真电路刚开始可以用一下,还是要买一块单片机开发板作为实际硬件来学习。
总结
单片机的学习我理解是是入门简单,深入有难度。入门时按键可以采用延时的方法,但真正应用起来基本上没有人会用延时实现,都是采用状态机。刚开始任务少,怎么写都可以,但是任务多的时候就要考虑资源的分配和程序的架构,这就上面所说的局限性,就需要深入的学习。
自学就是一点兴趣,一点坚持,再加一点耐心,多练习,多总结,方法总比问题多,肯定是可以学会的。
我就是这样走过来的,一路上摸着石头过河,不知道大家是怎么入单片机的“坑”的,欢迎留言讨论^_^
2018-03-20 09:57:02 -
这个要看学习的目的。
1,想从事单片机开发的工作,需要系统的学习。如计算机原理、汇编/C语言开发、单片机原理等教程。没基础的话自学这些很有难度,除非身边就有良师,否则的话还是上个培训班之类的,不要相信什么十天学会单片机、二十一天精通单片机之类教程。
2,出于爱好学单片机,喜欢动手diy什么的,这种情况有很多更容易入门的替代,如 Arduino、Maple之类的开发板,入门阶段不用去关心单片机的底层知识,上手很快。玩熟到一定程度,自然会去挖掘底层的知识。
2017-08-04 18:29:40