如何学习单片机
2015-03-27 19:35
162 查看
还是有很多人问,怎样学单片机。
有的学校先教汇编,再教C,但我认为,先学C,再到汇编会比较好,因为汇编枯燥难学,导致单片机还没用起来,兴趣就消减一大半了。正如linus那句话,你得先学会使用它。
一、首先掌握C语言语法。
单片机用的C语言叫C51,C51除了标准C的语法之外,还特意为单片机增添了几个语法而已,没有很大区别,那么我们可以装个Visual Studio(别再用VC6.0那个老掉牙的IDE啦)然后,随便找本语法书抄代码,模仿写,不看书做出课后习题就可以了,其中流程控制(包括if,for,while,switch等)以及指针和结构体都是需要掌握的。没有特别需要推荐的教材,可以在youku看教学视频,也可以看看谭浩强的《C语言程序设计》,入门是没问题的,虽然有很多bug。
二、学会操作寄存器。
单片机工程师又叫固件工程师,因为他们写的代码都是跟寄存器打交道,而寄存器又可以直接控制硬件,处于最底层的软件,所以叫固件。这部分需要数电、模电的基础才好理解,所以在大学都是先教数电、模电再教单片机的。这里你需要买一块单片机开发板,上淘宝淘一块就可以,但不要买那些芯片又少又贵的(板子上留有很多接口的那种,要你另外买模块才能做那些实验的),那些板子都是坑新手的。教程推荐看郭天祥的《十天学会单片机》,但是只能入门。此外,需要装个Keil
C51软件编译代码以便下载到单片机里面。这里重点掌握定时器和串口。
三、养成良好的编码习惯。
在《十天学会单片机》里会出现众多不怎么好的代码,但是我们不能一下写出优秀的代码,必须有个过渡期,所以建议大家先看郭大侠的视频。那么如何写出高效而且可读性好的代码呢?以后再写文章介绍,这里只提到一点,不要用拼音来命名变量或者函数名,像int shi,fen,miao;这些都是不良的编码习惯,必须全部使用英文命名。推荐的做法就是多参考大神们写的代码,在百度文库或者各大电子论坛都可以看到很多优秀的代码。此外,推荐一个PDF——《从单片机初学者迈向单片机工程师》。
四、适量的实践。
接下来,你可以用单片机做一些小玩意了,譬如:摇摇棒,光立方,密码锁,超声波测距,红外摇控等等(很多新奇有趣的小玩意都可以在论坛找到)。当然,也不需要每个都做,我们可以选一些差异性较大的来做,这样升级会快一些。推荐的教材是《单片机c语言程序设计实训100例——基于8051+proteus仿真》。
-----就算你能通过上面四个关卡,也只能达到操作工的水平而已,接下来的才是主题-----
五、深入理解单片机的工作原理。
现在你要用汇编语言来玩单片机,你会发现汇编比较棘手,写出来的代码可读性差、可移植性差而且很难维护,但汇编即让你很清晰地感受到单片机是如何工作的,以及理解C语言指针的原理。不过,我们不需要钻研汇编语言,只需要有所了解,并且要达到C和汇编混合编程就可以了。混合编程是单片机的精髓所在,比如,精准的延时、相对耗时的算法用汇编实现,而其它逻辑用C语言实现。即使是嵌入式,也是汇编和C混编的。推荐的教材是周航慈的《单片机应用程序设计技术》
六、自制单片机最小系统。
自己用洞洞板焊一块单片机最小系统,这事也不难,随随便便都能弄出来,有钱做PCB更好,没钱可以做感光板或者用雕刻机刻一块。主要掌握焊接、维修、PCB等基本功,上youku看看视频,自己多动手就能掌握的。
七、单片机外面的世界。
就算你现在能玩转单片机,但也只是打开了一扇小小的窗户而已,下面你可以选一个方向,但是工作中可以会用到几个方向的知识,反正尽量多学点。
1、操作系统。其中51单片机可以跑TINY OS和Small RTOS,要跑ucos,freeRTOS的话,建议用高档一点的单片机。推荐学ucos,教材是任哲的《嵌入式实时操作系统ucosII原理及应用》
2、上位机。使用单片机采集信号送到PC机上面,而PC机需要一个上位机来控制单片机,这个上位机可以用Labview、C++、C#、JAVA、甚至是HTML、CSS、JAVAScript来写。其中最常用的是单片机跟PC机的串口通信,上位机建议用Labview、C#,或者QT来写,尽管还有很多企业用MFC(C++库),但是MFC上手比较难。其中Labview是最为简单的一种上位机,推荐的教材是《Labview宝典》
3、算法。因为单片机处理速度慢,所以能实现的算法也不多,推荐的教材是周航慈的《嵌入式系统软件中的常用算法》
4、接口应用。单片机的内部资源比较少,很多时候需要外接一些芯片、传感器。这里需要到用模电、电子测量、计算机网络等知识。推荐的教材是陈尚松等著的《电子测量与仪器》和谢希仁的《计算机网络》。此外,还会用到一些通信模块,比如USB、Zigbee、WIFI、蓝牙等(这些芯片一般内置增强型的51核),有兴趣可以弄一下,这些都是比较实用的技术。
题外话:
如果要彻底理解单片机的工作原理的话,那就得学《计算机组成原理》和FPGA了,FPGA的学习路线可以参考本博客的《如何学习FPGA》。
你要是学完上面讲的那些,那就可以进一步学嵌入式了。很多电子专业的学生就感觉嵌入式很难,那是因为嵌入式涉及很多计算机领域的知识,而这些知识很多是电子专业不开课的,基本功没过关,学起来肯定吃力。具体的学习路线可以参考本博客的《如何学习嵌入式软件》。
说到这里,其实单片机能做的事情也不多,但它却是电子专业最为重要的核心课程之一,可以说每位电子工程师都必须掌握单片机,并用它来解决工程上的实际问题。
有的学校先教汇编,再教C,但我认为,先学C,再到汇编会比较好,因为汇编枯燥难学,导致单片机还没用起来,兴趣就消减一大半了。正如linus那句话,你得先学会使用它。
一、首先掌握C语言语法。
单片机用的C语言叫C51,C51除了标准C的语法之外,还特意为单片机增添了几个语法而已,没有很大区别,那么我们可以装个Visual Studio(别再用VC6.0那个老掉牙的IDE啦)然后,随便找本语法书抄代码,模仿写,不看书做出课后习题就可以了,其中流程控制(包括if,for,while,switch等)以及指针和结构体都是需要掌握的。没有特别需要推荐的教材,可以在youku看教学视频,也可以看看谭浩强的《C语言程序设计》,入门是没问题的,虽然有很多bug。
二、学会操作寄存器。
单片机工程师又叫固件工程师,因为他们写的代码都是跟寄存器打交道,而寄存器又可以直接控制硬件,处于最底层的软件,所以叫固件。这部分需要数电、模电的基础才好理解,所以在大学都是先教数电、模电再教单片机的。这里你需要买一块单片机开发板,上淘宝淘一块就可以,但不要买那些芯片又少又贵的(板子上留有很多接口的那种,要你另外买模块才能做那些实验的),那些板子都是坑新手的。教程推荐看郭天祥的《十天学会单片机》,但是只能入门。此外,需要装个Keil
C51软件编译代码以便下载到单片机里面。这里重点掌握定时器和串口。
三、养成良好的编码习惯。
在《十天学会单片机》里会出现众多不怎么好的代码,但是我们不能一下写出优秀的代码,必须有个过渡期,所以建议大家先看郭大侠的视频。那么如何写出高效而且可读性好的代码呢?以后再写文章介绍,这里只提到一点,不要用拼音来命名变量或者函数名,像int shi,fen,miao;这些都是不良的编码习惯,必须全部使用英文命名。推荐的做法就是多参考大神们写的代码,在百度文库或者各大电子论坛都可以看到很多优秀的代码。此外,推荐一个PDF——《从单片机初学者迈向单片机工程师》。
四、适量的实践。
接下来,你可以用单片机做一些小玩意了,譬如:摇摇棒,光立方,密码锁,超声波测距,红外摇控等等(很多新奇有趣的小玩意都可以在论坛找到)。当然,也不需要每个都做,我们可以选一些差异性较大的来做,这样升级会快一些。推荐的教材是《单片机c语言程序设计实训100例——基于8051+proteus仿真》。
-----就算你能通过上面四个关卡,也只能达到操作工的水平而已,接下来的才是主题-----
五、深入理解单片机的工作原理。
现在你要用汇编语言来玩单片机,你会发现汇编比较棘手,写出来的代码可读性差、可移植性差而且很难维护,但汇编即让你很清晰地感受到单片机是如何工作的,以及理解C语言指针的原理。不过,我们不需要钻研汇编语言,只需要有所了解,并且要达到C和汇编混合编程就可以了。混合编程是单片机的精髓所在,比如,精准的延时、相对耗时的算法用汇编实现,而其它逻辑用C语言实现。即使是嵌入式,也是汇编和C混编的。推荐的教材是周航慈的《单片机应用程序设计技术》
六、自制单片机最小系统。
自己用洞洞板焊一块单片机最小系统,这事也不难,随随便便都能弄出来,有钱做PCB更好,没钱可以做感光板或者用雕刻机刻一块。主要掌握焊接、维修、PCB等基本功,上youku看看视频,自己多动手就能掌握的。
七、单片机外面的世界。
就算你现在能玩转单片机,但也只是打开了一扇小小的窗户而已,下面你可以选一个方向,但是工作中可以会用到几个方向的知识,反正尽量多学点。
1、操作系统。其中51单片机可以跑TINY OS和Small RTOS,要跑ucos,freeRTOS的话,建议用高档一点的单片机。推荐学ucos,教材是任哲的《嵌入式实时操作系统ucosII原理及应用》
2、上位机。使用单片机采集信号送到PC机上面,而PC机需要一个上位机来控制单片机,这个上位机可以用Labview、C++、C#、JAVA、甚至是HTML、CSS、JAVAScript来写。其中最常用的是单片机跟PC机的串口通信,上位机建议用Labview、C#,或者QT来写,尽管还有很多企业用MFC(C++库),但是MFC上手比较难。其中Labview是最为简单的一种上位机,推荐的教材是《Labview宝典》
3、算法。因为单片机处理速度慢,所以能实现的算法也不多,推荐的教材是周航慈的《嵌入式系统软件中的常用算法》
4、接口应用。单片机的内部资源比较少,很多时候需要外接一些芯片、传感器。这里需要到用模电、电子测量、计算机网络等知识。推荐的教材是陈尚松等著的《电子测量与仪器》和谢希仁的《计算机网络》。此外,还会用到一些通信模块,比如USB、Zigbee、WIFI、蓝牙等(这些芯片一般内置增强型的51核),有兴趣可以弄一下,这些都是比较实用的技术。
题外话:
如果要彻底理解单片机的工作原理的话,那就得学《计算机组成原理》和FPGA了,FPGA的学习路线可以参考本博客的《如何学习FPGA》。
你要是学完上面讲的那些,那就可以进一步学嵌入式了。很多电子专业的学生就感觉嵌入式很难,那是因为嵌入式涉及很多计算机领域的知识,而这些知识很多是电子专业不开课的,基本功没过关,学起来肯定吃力。具体的学习路线可以参考本博客的《如何学习嵌入式软件》。
说到这里,其实单片机能做的事情也不多,但它却是电子专业最为重要的核心课程之一,可以说每位电子工程师都必须掌握单片机,并用它来解决工程上的实际问题。
相关文章推荐
- 如何学习单片机
- 转】[Zigbee]如何学习zigbee -- 无线单片机怎样入门
- 如何学习单片机 --郭天祥
- 1.2 如何学习单片机
- 如何学习单片机
- 工程师教你如何学习单片机
- 单片机功能如何学习51单片机/心得/KEIL4/DXP
- 如何学习一块单片机的处理器
- 如何学习单片机
- Day1-如何高效学习单片机
- 第一章 如何学习单片机
- 如何学习单片机?
- 单片机学习,如何从菜鸟到高手?!
- 从单片机初学者迈向单片机工程师第二版第一章 究竟该如何学习
- 如何快速学习单片机
- 如何开始学习单片机
- 如何在linux环境下进行单片机开发学习!
- 如何以学习单片机为契机,逐步成为优秀的工程师
- 如何系统地学习JavaScript
- PowerShell的学习笔记(4)---- 如何在使用Enter-PSSession的时候解决TrustedHosts list的问题?