学单片机,是软硬件的综合体。并不是单单会点汇编或者C语言就说会单片机,这顶多只能说会编程而已。因为大部分单片机系统都是不带操作系统的裸机系统,那么没有所谓的操作系统和应用软件,没有操作系统层所封出来的一些接口可用,也就是说,需要架一个简单的前后台系统,只会写应用软件,就比较难使用单片机,因为他们对这些只有硬件,没有软件接口的东西,无从下手。
所以,学单片机,首先学会硬件,也就是简单的电阻电容电感,三极管,二极管,比较器,等等相关的基础元器件特性及其应用。个人觉得,大学教程的模电数电很重要,先模后数,模电是数电的基础,也是电子这块的基础,显得特别重要。然后数电就要吸取其思想,很多数电所介绍的集成IC,比如门电路,计数器,触发器,比较器,运算器等等,现在工业很少见的了,但是,其设计思想是值得学习的。
理解单片机内部的人就清楚,单片机或者其他的主控(ARM DSP等)的内部其实也就是这些东东高度集成而来的。所以,学单片机的时候或者之前,先抽时间学习一下模电数电,学到自己有所理解的程度,就可以学一下单片机编程,C语言或者汇编都可以,看个人爱好,C语言移植方便,好维护,编程快速,但是缺点是其编译出来的CODE比较占空间,一般用于移植性通用型要求高的嵌入式软件领域,或者比较大的单片机项目,或者要求开发速度而对价格不敏感的产品。而汇编刚好相反,对利润薄,成本低,开发难度不大的行业使用,比如小家电。不过现在的MCU也很便宜的,几块钱都几十k的FLASH ROM,在现在技术人工那么贵的情况下,还是C语言比较迎合市场。学习这些理论知识的同时,都需要动手做实验,不怕搞错,最怕就是懒得搞。
会编程之后,怎么嵌入单片机?
初学者学了编程语言的之后,又或者搞纯软件想转单片机的人,都会有个共同的特点就是,下一步不知道如何入手?
那么我就会问,你懂硬件吗?要求不高,略懂就好,不求很精,因为硬件这东西是越老越辣,越久越醇,锻炼多了,自然会精。
假如你一点都不懂,那请看上面的一段,学硬件基础去吧。
假如略懂,那么你现在的切入点就是在五花八门的单片机中找一款合适的入门单片机,初学者做任何决定都是以“易入手”为标准,入手了,就不怕你以后跑不快,力求找些通用的MCU,资料多,软件平台也多,容易上手,比较51核的,虽然简单,但是它是鼻祖,学起来方便,只要懂了这个鼻祖,其他的再复杂的东西,也不过它繁殖出来的,不会太难。一下子搞太难的东西,不单学不会,还会打击自己的脆弱的心灵。
选好了单片机,那就搭开发平台,首先是软件开发平台,针对不同的单片机内核或者型号,有不同平台,通用性51核的KEIL51,AVR的IAR ICC,还有很多不同厂家的开发平台,不一一列举。其次就是单片机硬件平台了,也就是开发板,不同的单片机器引脚和外围都稍有不同,所以开发板也有针对性,网上很多卖开发板的,都希望做的很通用,支持很多种型号的MCU,价格也不高,假如怕麻烦,怕焊接出错的初学者,可以买,关键是现在的开发板便宜,几十块钱很漂亮,以前那个年代动不动几百块,流血啊。当然,我更推荐是自己焊接,特别是自我感觉硬件还可以的人,趁此机会锻炼一下焊工,还有,会对电路理解更深的。其实各种各样的开发板都是一样的,只要你焊接遵循以下原则:
首先,焊接最小工作环境,电源电路,复位电路,振荡电路(现在很多MCU都集成内部晶振,精度也可以,频率也比较高)。然后就是其他的常用的外设电路,按键输入(按键多的话,可以用矩阵,学学矩阵扫描),串口(UART),AD/DA,蜂鸣器,数码管,点阵显示屏,电机驱动,温度传感器等等,这些资料很多的了,几十年来,初学者都是学这些。
这些外围电路,网上资料多得是,随便找几份对比一下就有了。找个万用板,就可以动手焊了。不成功的,测量单片机工作电压正不正常,晶振有没有起振,复位电路有没有搞错等等,再不成功,焊多一块,哈哈。有了软硬件平台,就可以一个实验一个实验的动手,开始是模仿,后来就改动,再后来就完全自己搞一个有新意的,从0开始写code,做第一个属于你自己的project。顺便说一下,单片机的编程和纯软件的编程,除了编程思想和大部分语法可以沿用之外,其他的,寄存器配置和部分语法都有针对性,要花点时间去学的。学会了51之后,假如有时间可以学一下AVR PIC MSP430 等等其他内核的单片机或者功能更强大的51核单片机,宏晶,笙泉等等,作为一种提高的练习。
|