单片机怎么学,学哪款单片机呢?入门级推荐学习51单片机。因为——51单片机简单易上手资料多,当然最最重要的是,本人发现了51单片机的一套秒杀本人接触过的所有教程的资料——金沙滩宋老师的手把手教你学51单片机,绝对经典。
他的课是一节串一节的,上节学过的东西,这节基本上要用,下节还要用。上面有很多知识点可以参考学习,而且很多优秀的编程思想和编程习惯分享给大家。
刚出生的孩子叫“爸爸”、“妈妈”的时候,他甚至不知道“爸爸”“妈妈”是什么意思, 更不会理解这些声音是什么意思,但是我们带着孩子见到他爸爸就让他喊“爸爸”,见到妈妈就让他喊“妈妈”,见到爷爷就喊“爷爷”„„慢慢的你会发现,次数多了,孩子就知道谁是爸爸,谁是妈妈,谁是爷爷,谁是奶奶了。大家刚开始接触单片机的时候,也属于单片机行业的新生儿。单片机的样子,单片机外围的各种器件,单片机内部的各种结构,单片机使用 C 语言的编程方法,初学者可能都没有见过,脑子里全无概念。没关系,有些概念和方法你不理解也没有关系,甚至不需要你去理解,你只需要跟着我去鹦鹉学舌式的学习,第一遍学习某一节课的内容时,对于程序,大家就可以完全跟着抄下来,甚至抄两三遍,过一段你会发现,好多东西你也认识了,好多概念你也慢慢的理解清楚了, 你也能大概看懂别人的小程序了,切忌觉得自己看会了,而简单复制粘贴。
很多同学学习的时候喜欢看,看我做的视频,看我写的程序,甚至看别人的程序,都能看懂,觉得自己就会了,等到自己写程序的时候,感觉就是老鼠啃天,不知道从哪里下手了,这是初学者很容易犯的“眼高手低”的毛病,所以第二步的内容就非常重要了。我的要求是,每一位同学,在学完了当前课的内容,把第一步顺利完成以后,然后关掉视频教程,关掉源代码,自己通过看电路图和查找非源代码的其他任何资料,把当节课我写的程序代码重新默写出来,边写边多少理解那么一点点,不是纯粹的背诵,应该说是背诵加 理解的结合体。甚至学过几节课以后,可以回头把前边曾经这样实现过的课程,再按照这种方法做一遍。千万不要认为这一步没必要,这一步是你能否真正学会单片机的一个关键,在学完本教程之前,每一课内容都要这样做,如果每一个程序你都能够完美的完成,那么可以说,当节课的内容,百分之七八十你已经掌握了。
单片机技术的最大特点就是可以通过修改程序来实现不同的功能,因此举一反三的能力就必不可少了。每一节课的例程后边,我一般都会布置几个作业,大家尽量去独立完成这个作业。在完成这个作业的过程中,都可以参考我的程序思路,在这个基础上通过动脑思考去构建你自己的程序框架,最终将程序完成。在我们工程师实际产品研发的时候,很多种情况下也是如此。比如一个产品,我们如果从零起步的话,可能会走很多弯路,遭遇很多前人已曾遭遇过的挫折,所以我们通常的做法是寻找购买几款同类产品,然后先研究他们的各自优缺点,学习他们的长处,然后在同类产早就遇到过了,所以遇到问题后,不要慌张,首先利用谷歌或者百度这些搜索引擎在网上搜 一下,要做什么新东西,先去网上找相关资料了解一下,不管是编程还是硬件设计,多多参考别人的东西,只要把别人的东西分析明白了,自己用起来了,也就成为自己的知识了。
当大家把所有的课程都按照前边三步完成后,这个时候不妨再把书打开,再看看书,经过了自己的实战经历,再看书的时候,对很多知识点会有一种恍然大悟的感觉。甚至视频教程、书籍都可以反复看几遍,可能有的知识点当时学习的时候不明白,过了一段时间,回过头来再学习的时候,一下就明白了。”
当你玩了一定时间单片机,玩明白之后,你如果又发出这样的感慨:我靠,51单片机原来这么简单。那么恭喜你,你应该是拿下单片机了。下面说说我的单片机方法论: 51单片机呢说实话很简单的,首先你要有一个概念:学单片机和学单片机外设【这里的外设和下面都指的是单片机的片外外设,不是片上的外设哦】是两个不同的概念。。学单片机呢,其实单片机最小系统就拥有单片机的所有资源(板子上那么多的东西 其实都是外设)一定要有这两个概念:单片机 和 单片机外设的概念。【单片机就是主控芯片,,,外设是接在其引脚上的东西】
下面是我总结的学单片机(后面)的几重心法:
先能大概看懂电路原理图,知道哪个东西,连在了哪个引脚上,大致了解你的板子上有哪些外设东西。同时了解一点硬件基础知识,搞定自己电脑上的开发环境,熟悉keil等软件的使用,熟悉jlink使用【这个仿真器是在32等高级单片机上使用的】。
能用c语言写基本的小程序,来操作硬件IO口。啥意思呢,也就是你可以通过自己的程序可以随心所欲的控制单片机的IO口(引脚)的高低电平,落实到现象就是,你可以通过程序,实现点亮任意一盏接在你单片机上的小LED(LED小灯就属于外设),升级版本就是:你可以自己写程序点流水灯玩。这一层能力是操作硬件IO口
【对于stm32等高级单片机】学会使用jlink等仿真器的硬件仿真,硬件仿真很重要,51单片机仿真器貌似很贵的,反正我基本没有用过51单片机硬件仿真。。用32单片机时,会用jlink仿真会调出窗口,看各个变量的值等功能
学习什么是定时器,什么是中断,什么是定时器中断。先学习这些东西是什么,能做啥。然后再开始学习单片机上的这些东西怎么用c语言实现。这一层的能力在51上其实就是配置寄存器,这个能力很重要,虽说stm32我基本不用寄存器,但是我能知道那些寄存器大概怎么配,都是靠51单片机启蒙的。这个能力很重要,但是不难的,都是套路多套路几遍就熟了。
学习几种通信协议,最常用的的串口(uart)通信协议,I2C通信协议。其他如SPI,CAN总线等我用的不多,等用的时候再去学就是了。其实还是套路,再多套路几遍。 如果你大概坚持到这,然后学的差不多了,那么我恭喜你,单片机你已经学完了。是的你没听错,单片机已经学完了。注意这里是单片机:不仅仅局限于51单片机,其他单片机也是适用的。
学学单片机开发板上的一些外设,用用一些常用的模块,实现模块所具有的功能。这一层的能力,是自己去看相关数据手册,使用手册。这些需要自己去读,能力强者自己就能写这些模块的驱动程序了。当然一般情况下,买的模块都是有例程的,可以参考例程自行优化,编写属于自己的驱动代码。我个人积累了一点自己的驱动代码库。
可以自己用开发板做几个稍大点的小项目了,做项目,一开始要分析项目。
深入学学c语言,回过头刷刷升级书,然后一定要注意编程规范性问题,注意编程规范等吧。然后你就能升级玩32了。
其中秘籍一和秘籍四是非常重要非常好用的工具书。我直接用pdf,搜索起来很方便,这些书不是让你看,让你背的,是当你需要的时候,你知道到哪去看,到哪去找用的。我个人认为自己32单片机学的算是不错的比较溜的,但是我感觉考试我肯定考不太高。。。因为我从来不背这些。。。。