分享

如何学习单片机

 心不留意外尘 2016-06-23

http://blog.csdn.net/k331922164/article/details/44681093

2015

      还是有很多人问,怎样学单片机。

       有的学校先教汇编,再教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》。

你要是学完上面讲的那些,那就可以进一步学嵌入式了。很多电子专业的学生就感觉嵌入式很难,那是因为嵌入式涉及很多计算机领域的知识,而这些知识很多是电子专业不开课的,基本功没过关,学起来肯定吃力。具体的学习路线可以参考本博客的《如何学习嵌入式软件》。

说到这里,其实单片机能做的事情也不多,但它却是电子专业最为重要的核心课程之一,可以说每位电子工程师都必须掌握单片机,并用它来解决工程上的实际问题

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多