考拉聊单片机1
考拉熊当这版主也有几天了,一直也没发啥贴,一是近期事情确实多,二是最近这些天伤了手。以前在CT(长汀)时开过一个系列贴,是边说边作,后来没有时间烂了尾。由于可预见的未来一段时间估计还是事情多时间少,看来是没什么时间可以动手了,所以也只能坐下来和大家聊聊天。考拉只能说是略学了一点单片机,目前的水平也就是一个瓶底儿,最多能让单片机动起来,所以别回贴捧俺,免得捧上了高处爬不下来。这个贴会根据自己的时间不定期的发,每贴会选择一个主题聊,按数字序号排列,说到哪儿算哪儿。有啥问题可以跟贴,也可以单独发主题另行讨论,考拉说错了也请别见怪,直接指出大家学习进步就是,有道是千里之行始于足下,Good good study,day day up …………本坛不是一个专业的单片机类或电子控制类论坛,所以单片机肯定不是本坛之所长。这类论坛里的单片机版大多都有一个特点,那就是两极分化。高手多数是匆匆路过,偶然停留也只是发贴亮骚一下,回答初级问题的很少(倒也不怪人家,从头讲起那可真会要了亲命的,差距确实有点大);新手一天到晚眼热心跳却不得门而入,问的一些问题要么没个几天几夜说不清楚,要么只能用一句看XX单片机教程来回答;中间层(也就是已经粗略入门具备了一定学习能力的)很少,真有兴趣的多数已经转投专业论坛。
因此就有一个目的和对象的问题,本贴所针对的是那些打算用单片机进行一些简单控制的没有基础的入门者,为其使用单片机的简单目的进行初步的指导,同时进行讨论以期共同提高。为什么呢?先看一下学单片机的目的,大凡想学单片机的不外乎以下三种之目的:
①当饭碗:学好单片机以作为职业发展,那么考拉可以很明确的告诉您,这里确实不太适合您。专业的电子控制类论坛,购买学习板编程器仿真器等硬件,看教程啃课本,虽然花钱多但速度快,这些投资相对于长远的回报是完全值得的;
②玩单片机:对单片机很感兴趣,目的主要在于享受与单片机相关的学习制作中之乐趣。如果您属于这一类,那么本贴只能在初期给您一些帮助,毕竟本贴是以简单实用为主旨的;
③用单片机:这些朋友主要兴趣不在单片机,但由于其他方面总体制作的需求,很需要单片机来完成一些其他模拟技术所难以实现的功能。如果您是这种想法,那么本贴对您来说正合适。
本坛由于其本身的特点,活跃会员多数模电技术精湛,但数字电路以及和单片机相关的计算机基础(硬件结构以及软件设计)却很薄弱。但在一些设计制多中越来越多的需要解决一些逻辑控制/精确计时/人机界面设计等方面的问题,这些东西用模电来解决费时费力甚至难于实现,但用单片机却很简单(当然是在掌握了基本应用的前提下),由于缺少前述的基础,很想学单片机却不得门而入。实际上如果只是用单片机来完成一些简单的用途并不难,这也正是考拉开这个贴的主要意图。
好了,前面讲了一些空洞无味的大道理,下面这次说点具体的:
1、学什么单片机?
一涉及这个问题往往会冒出N多答案,也经常会引起多个阵营间的口水战,屁股决定脑袋热闹非凡。其实任何正确的答案都是有其前提和基础的,我们也不要忘了前面所说的根本目的。既然只是简单的应用,那所选择的单片机也要简单实用便宜易得。不管选择哪个都要根据你具体的实际情况,这包括芯片的保有和获得情况/硬件的支持情况/资料获得的情况/你的兴趣之所在。
在此考拉建议首选51,虽然这玩意80年代问世已经有些老得掉了牙,但来源广泛便宜易得,资料更不用说了,编程器什么的也好找,就是老型号资源偏少,新的型号不一定易得(以后再详细讨论)。其次考虑PIC,这东西也比较简单,但也因为太简单而带来了一些麻烦(后面再说),资料也多尤其欧美制作不少,早期芯片老编程器支持也不错。最后推荐AVR,这个玩意对没基础的初学者来说略显复杂,但近年来制作颇多资料倒也好找,只是编程难度稍高(多用C,对于没基础的难度略高),加上近来芯片涨价不一定好找,编程可以ISP倒也简单。
其他的一些东西考拉不建议碰,除非你有特别的理由(如特性或物料基础的原因)。常见的比如MP430,除非你很在意低功耗;ARM(一大类,常见的控制方面是ARM7象飞利浦的LPC2xxx),这东西确实不太适合简单应用和初学;STM8,比较新的东西,资源丰富,但资料较少编程器材也不一定便宜;STM32,这东西也是ARM了,和前项同样理由不推荐;SOC型的新51,象C8051一类的,资源丰富功能强大(有的内部甚至集成了CPLD),但不适合简单应用和初学。
选择前一定记住:简单,实用,适合自己,不求新不怕老。
2、选择什么样的封装?
这个问题多被熟手所忽略,因为他们多数已经具备处理种封装芯片的能力,同时多数也具备了自己制备PCB的能力。而这点对于本贴所打算针对的那些群体来说往往有难度,所以必须要作一些考虑和选择。合适的封装可以大大降低你的制作难度,让你把精力集中到基本原理的学习上,当然在某些方面也会有牺牲(如体积或许还有美观)。
在这里考拉极力推荐初学者选择DIP(双列直插)封装,因为这种封装在业余条件下最容易处理,面包板就可以搭简单的电路实验,万能板(洞洞板)就可以焊实用的电路,密度较低容易制作,可以使用插座更换容易,与常用的元器件处理方式相同等。如果你手上恰好有PLCC封装(方形,引脚为J形从侧面弯到芯片底部,较厚,常见的为PLCC44)的现成芯片,也可以考虑使用,这东西可以用插座焊在洞洞板上,但焊接有些麻烦,拨出一般要专用工具。不建议初学者选择QFP(方形的贴片封装,引脚在四周)及SOP(长形的贴片封装,引脚有两边)封装,除非你有能力制PCB并拥有完善的焊接和拆除工具(如风枪等)。
DIP以外的封装还有一个麻烦就是编程问题,一般的编程器多只有一个DIP的测试座,其他封装都要适配器,那玩意一般很贵的说。而新的芯片多数是焊在板上再用ISP/IAP/JTAG之类的编程,而那些工具多数也并非便宜的器材。这也是考拉不推荐一些比较新型号芯片的原因之一。
3、需要什么条件?
基本的工具相信泡这个论坛的朋友们都有,如基本的万用表、烙铁、一般拆卸操作工具等,当然还要有一台电脑。下面说一些特殊的:
①编程工具:一般为编程器,找台二手的能写你选定芯片的即可。如果选择了可下载(ISP)的芯片弄条相应的下载线就行。但切记这是工具,花点钱买吧,别把时间花在作这东西上面,尤其别作带单片机的下载线(如USB-ASP),很容易让你陷入先有鸡还是先有蛋的困境中;
②实验平台:用来作实验的地方,直接用面包板插一个很方便(连线可以买,也可以直接剥网线获得),也很容易改动,缺陷是你得经常面对接触不良的小麻烦。成品实验板要花点钱,但使用起来非常方便,只是不易改动,此外不能学到解决数字电路问题的经验。如果有时间也可以自己用洞洞板焊一个,能自己作PCB当然更好;
③基本元件:除单片机外,你需要准备一些常用的作实验的元器件,所需要的种类比模拟电路少得多。比如常用电阻如1k/10k/330/470/510/4.7k/5.1k等,常用电容如30P/22P/104/10u/22u等,普通发光二极管及LED数码管(8字管),9012/9013三极管,按钮开关,5V蜂鸣器,5V继电器,常用晶振如4M/6M/12M/11.0592/32768等,还有一些常用的逻辑芯片如7404/7406/74245等,根据需要备一些,不用一次备太齐,需要时再买就是;
④电源:相信大家手头都有一些,一个普通的5V1A以上的电源足可满足实验之用,当然如果能同时供12V更好;
⑤其他工具:这些都是选项,有了会很方便,没有一样干活。首先推荐逻辑笔,虽然万用表也可以判断电平,但逻辑笔可以判断出脉冲。再有就是如果有示波器可以直接看线路波形,如果恰好弄了台便宜的逻辑分析仪更好(好象是屁话,有逻辑分析仪的有几个是初学,哈!)。仿真器如果能搞到便宜的也会有用处。这些都是option,不是必备。
以上这些先粗说一下,后面有空再一项项的细聊,不用急。
4、51/PIC/AVR单片机的具体选择
今天不能再打字了,手已经有些酸了,伤还没有完全好,只能适当的活动。最后就再具体一点说说前面推荐的三个系列单片机的具体选择:
51:可以选择常见的AT89C51/52什么的,别选2051,I/O偏少适合应用不适合学习。其他厂家的51只要你的编程器支持也可以选择,哪怕是需要紫外擦除的87C51。AT89S51/52 也可以,这种芯片还支持ISP,但要作条下载线。STC的51也不错,还可以用串行口下载。除非你喜欢怀旧,否则别选择80C31,虽然这东西非常常见,很容易从电子垃圾中获得。80C31需要外挂ROM(只读存储器,用来存程序),在有现成电路板的情况下用也不复杂(当然你得不在意巨大的PCB面积),麻烦是外扩存储占用了两个宝贵的I/O口,会影响到实验。此外扩展让“单片”的优势尽失,你不会希望自己以后作的东西总那么大吧;
PIC:建议选择16系列中6/7/8打头的老一些的可重复擦写芯片,如16F84A(曾经的标准入门型号)/16F7x/16F87x等等(容易拆到,老的编程器支持性也好),别选择16F5x芯片,结构不太一样,不适合学习及应用。选择比较新的16F芯片(如16F630等)也要慎重,可能老的编程器多不支持。也别选择8脚小螃蟹,如12F509/12F675/12F683一类的,I/O太少,不利于学习和实验,等学会了以后作小东西时再用不迟。别选择18系列芯片,指令什么的不一样,也多是贴片封装;
AVR:如果你选择AVR上手,用常见的M8/M16开始即可,当然前提是你有一条可用的下载线或是一台支持的编程器(老的二手编程器多数不支持)。不要选择早期的AVR芯片如AT90S1200/2313/8515之类的东西(虽然老编程器支持好),已经没什么人用了。
今天就先说到这里了,下次聊聊单片机是个啥东西,且听下回分解。
http://www.crystalradio.cn/bbs/thread-155177-1-1.html
[ 本帖最后由 cosine 于 2010-12-7 12:24 编辑 ] 原帖由 alengend 于 2010-12-2 20:03 发表 http://www.crystalradio.cn/bbs/images/common/back.gif
我感觉初学者选择STC相对容易上手,原因有二:
1,和普通51单片机兼容,使用简单,资料多。
2,下载线最简单,通过串口就可以往单片机下载程序。
第一张图是STC芯片手册里面给出的下载线电路,很简单吧,
第二 ...
另外还要提醒一下,图1中标的232芯片用的是104电容,不同的232芯片要求不一样,有的要求是1u电容,具体制作前最好参考一下手头所获得芯片的DATASHEET.:) 做在沙发上。洗耳恭听。:) 搬个板凳慢慢听. 好!精彩!继续 前排就座,给熊捧个场 我是属于玩单片机类,坐下听课了。 好帖,正准备学点单片机呢…… 我感觉初学者选择STC相对容易上手,原因有二:
1,和普通51单片机兼容,使用简单,资料多。
2,下载线最简单,通过串口就可以往单片机下载程序。
第一张图是STC芯片手册里面给出的下载线电路,很简单吧,
第二张图是用分立元件搭的RS232转TTL电路,用来代替第一张图中的MAX232芯片
结合这两图就能搭出一个下载线,我自己也是这么做的。
[ 本帖最后由 alengend 于 2010-12-2 20:06 编辑 ] 原帖由 alengend 于 2010-12-2 20:03 发表 http://www.crystalradio.cn/bbs/images/common/back.gif
我感觉初学者选择STC相对容易上手,原因有二:
1,和普通51单片机兼容,使用简单,资料多。
2,下载线最简单,通过串口就可以往单片机下载程序。
第一张图是STC芯片手册里面给出的下载线电路,很简单吧,
第二 ...
STC的片子也属于基本51(前面也已经作了推荐),只是有些型号扩了些片上资源.用串口是相当简单的,但对于纯新手如果不是备有经过测试确认好用的下载线或编程器,不建议把精力花在编程下载器材上,这很容易陷入先有鸡还是先有蛋的困境中.因为你无法判断到底是自制的未经过检测的下载线出了问题还是芯片出了问题,从而在上面浪费掉大量的时间.再者很多朋友现在是用笔记本,很多本本已经没有了串行口,还得再找USB-232一类的东西,出问题的机率更高些.当然如果买现成的支持STC串口下载的学习板就基本不存在这个问题了.有时间也可以按照那个用232芯片的方案作条下载线,很多地方都用得到的,比如将来玩一些需要进行TTL-232电平转换的东西,类似于GPRS模块什么的,呵呵.当然如果你还没明白什么是232电平,就别太着急,后面会聊到这个.
所以挑适合个人情况的就是了,重要的是理念,而非标准答案.
[ 本帖最后由 cosine 于 2010-12-2 21:08 编辑 ] 好我来学习了 想当年,10年前,学习51单片机,用汇编,那时候全部的动力是兴趣,什么都觉得新鲜;
为了找个bug没日没夜地调试;一点都不觉得累
毕业后,CPU: AVR -> ARM7 -> ARM9 -> A8
软件:汇编- > C语言 -> C++
系统:裸奔 -> UCOS -> linux
一点热情都没有了,沦落到混饭吃的手艺,悲哀呀 原帖由 mapleft 于 2010-12-2 22:20 发表 http://www.crystalradio.cn/bbs/images/common/back.gif
想当年,10年前,学习51单片机,用汇编,那时候全部的动力是兴趣,什么都觉得新鲜;
为了找个bug没日没夜地调试;一点都不觉得累
毕业后,CPU: AVR -> ARM7 -> ARM9 -> A8
软件:汇编- > C语言 ...
爱好如恋爱,职业如结婚…………:lol :lol :lol http://apps.hi.baidu.com/share/detail/4295073
我觉得AT89S52的下载电路最简单,几乎连电子元件都不需要
在并口上接几根线连在单片机上就行了:lol
俺试过的,还好用:handshake 原帖由 liccil 于 2010-12-2 22:56 发表 http://www.crystalradio.cn/bbs/images/common/back.gif
http://apps.hi.baidu.com/share/detail/4295073
我觉得AT89S52的下载电路最简单,几乎连电子元件都不需要
在并口上接几根线连在单片机上就行了:lol
俺试过的,还好用:handshake
感谢提供资料,但这个电路初学者一定要慎用,还有一个版本是加了几个电阻的,一样要慎用,当心万一接错或目标电路板有问题烧电脑的并口.比较稳妥的电路是马潮老师的那个用244的电路,还有用373的,245的,总之有隔离好一些.这些下载线同时可以用来下载AVR单片机比如M8.此外也有用BBMV下载的,BBMV同时也可以用来下载ALTERA的CPLD等器件.这些下载线有一个共同的特点就是需要用并口,决定前先考察一下你的电脑有没有并行口.
关于编程器下载线这类东西等后面有空再单独挑个时间讨论,在动手之前对于初学者来说还需要补充一些基础知识,比如单片机的基本概念,数字电路及布尔代数的基础知识等.:)
[ 本帖最后由 cosine 于 2010-12-2 23:06 编辑 ]