单片机也称为微控制器(microcontroller) ,最早用在工业控制领域,由芯片内仅有CPU的专用处理器发展而来。其设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成到复杂的对体积要求严格的控制设备中。它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,概括地讲,一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜,为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
目前单片机在自动控制、测量、通信、机电一体化等领域均有着广泛的用途,主要作为控制部分的核心部件,在这些方面单片机得到了最广泛的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等计算机配件中都配有1~2部单片机;而个人计算机中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机;复杂的工业控制系统上甚至可能有数百台单片机在同时工作。单片机的数量不仅远超过PC和其他计算机的总和,甚至比人类的数量还要多。
因此,掌握单片机的原理和工程应用对于电子与电气、计算机、自动控制等相关专业的大学生就业和科技实践相当重要。我们在大学教授单片机课程有些年头了,目前单片机教学在一定程度上还存在着课堂讲授多而实践少、考试中记忆性内容过多等不符合认知规律的地方。俗话说“在游泳中才能学会游泳”,只有通过增加实践教学、强调动手训练,才能真正掌握单片机。这里我愿意和大家分享在大学时学习游泳的一段经历。我的第一位游泳课老师是一位体校刚毕业的研究生,刚开始两节课听老师讲解游泳的要点、动作的分解、步骤,后来两节课在陆地上将各组分解动作反复演练直到娴熟,后来的4节课再到水中练习,但是并没有多少人学会游泳。第二次学游泳时的教练是一位年长的教师,前几节课老师要求我们不可以留在岸上,必须待在水里,但不允许停留在一个位置静止不动,要不停地漂动,若是谁站在水里不动,他就会用小竹竿敲打身边的水,以此敦促学生在水里走动。此后,老师在水中示范几个游泳的动作,让同学们模仿、学习。就这样,在所有的课程学完后,大多数的同学自然而然地学会了游泳。所以,对游泳学习而言,最重要的是接触水和练习。
单片机这类课程的学习不同于数学、物理等理论课程。我们在长期的教学中发现: 如同只有通过接触水才能学会游泳,单片机教学必须和精心设计、丰富多彩的实验相结合才能获得满意的教学效果,一方面,各种实验能激发同学的兴趣,克服传统单片机教学中强调记忆各种指令、寻址方式、内部逻辑结构等较为单调的环节;另一方面,通过实验的逐步深入,学习者会逐步加深对单片机系统的理解,在理解的基础上记忆可以起到事半功倍的效果。鉴于此,根据我们多年的单片机教学经验,特地编写了本书。该书以盛群半导体公司生产的HT46F49E型单片机为例,讲述了单片机的基本原理和一些典型实例。本书的特点在于,将单片机的学习贯穿于一组精心设计的实验。这些实验共分3个大类: ①利用面包板进行的实验; ②利用万能板(也叫洞洞板)进行的实验; ③自制印制电路板的实验。这些实验一般均采用较为常用的电子元器件,完成所有实验的投入在100元以内,不会增加学习者的负担。如果学习者能用心地完成每一个实验,那么除了学习到单片机的基本原理外,也可以真正使用单片机解决实际工程问题。
基于上述特点,本书适合相关专业学生学习单片机使用,尤其适合希望动手实践的电子设计爱好者参考。虽然我们编写这本书时希望让同学们一开始就“在水中练习,然后逐步掌握游泳”,但限于水平,本书不可避免地存在一些疏漏或不足之处,希望广大读者不吝赐教!(本书附有多媒体教学视频和网站http://yangjun1222.jimdo.com,并设有网上读者留言簿。)
本书在编写过程中,得到了周阳阳、陈千和石俊俊等的大力协助: 周阳阳承担了书中的大部分实验制作;陈千制作了本书的多媒体视频资料;石俊俊承担了文字编辑排版等大量工作;此外,得益于盛群半导体公司在高校开展的单片机实验室共建计划,写作本书时使用该公司提供的一系列相关设备。在此向他们表示衷心的感谢!
作者2011年1月单片机教程学习之时间规划
首先,如果你具有一定的单片机实践经验,可以不拘泥于这个学习规划,而根据自己的实际情况灵活把握,自由取舍,毕竟我们的终极目标是掌握知识而不是阅读教程。其次,如果你只是在课堂上学习过单片机或是连这样的基础还达不到,那么建议你按部就班,按照我们的时间规划学习。最后,关于每天投入多少时间给本教程我们也给同学们一些建议,在起初学习时每天两个小时较为合理,随着学习的深入可根据个人的情况适当延长学习时间。
第一天,从整体上把握教程,具体来讲主要是了解本书的目录框架、篇幅安排,以及如何为了更好学习本书而按照相关说明去观看视频教程,还包括去哪里下载相关辅助资料,以及碰到较难理解的知识点如何请教作者、如何进入相关论坛解决等一系列问题。而这一系列大的方向性问题的解决都建立在对本书的宏观认识上,同学们在学习的过程中切不可急于上手。
第二天,对单片机简介这个章节进行学习。在单片机简介这个章节中,单片机的应用及发展这一部分,我们简要介绍单片机广泛的应用领域及未来的发展趋势。在单片机的学习方法这一节中,讲述了单片机的学习技巧和相关学习资源。通过学习本节,同学们可以对单片机学习的方法有一定的了解。
第三天,对单片机的系统结构进行学习,在这里以中国台湾盛群公司的HT46F49E这一款8位单片机为例,介绍单片机的外部管脚和内部的体系结构,在学习这部分内容时,同学们可以到指定网站下载盛群公司的HT46F49E的中文技术文档,这样不仅可以对芯片有进一步的了解,还可以方便在以后的实验中对相关参数进行查阅。
第四天,学习程序编写、调试和烧录这一章的第一节,也就是程序设计简述,在本书中这一节的内容很少,但是对同学们的任务要求却并不轻,因为在后续的实验中要用到汇编语言和C语言,因此从现在开始大家就要开始复习相关语言,相关教材可以参看本书附上的汇编和C速查,也可以参阅其他相关书籍,关于C的学习,作者推荐清华大学出版社出版的谭浩强的《C程序设计》(第二版).
第五天,学习程序编写、调试和烧录这一章的IDE 3000简介、硬件仿真器、程序调试和程序烧录方法,同学们要从我们推荐的网站上下载IDE 3000开发环境,进行安装,并学习用IDE 3000进行程序的编写、调试,以及将程序烧录到单片机中。在学习的过程中要将教材中的截图介绍部分与网站上的视频介绍结合起来,以便更快、更熟练地掌握IDE 3000开发环境的使用。
第六天,在此要提醒一点: 随着学习的逐步深入,我们每天花费在学习教程上的时间也应有所增加。今天是进入单片机的面包板实验学习,因为在我们的教材中安排的面包板实验是一系列的,而这些实验的元器件又有可重复利用的特点,我们将这一组实验中所用的所有元器件(在重复利用的基础上)制成了附录,方便同学们一次性购买,而把更多的时间用在对教程的学习上。我们今天的任务就是购买面包板系列实验元器件。
第七天,这里说明一点: 在我们的推荐网站上对每一个实验的学习都配备了相应的视频讲解,请同学们将多媒体资料与教材结合使用,以求一个更好的学习效果。今天学习第一个实验--点亮一个LED。第一个实验对同学们来说应该不是很难,但是它作为第一个上手的实验,包含单片机开发的所有流程,更是对我们前面讲到的很多内容的应用,大家不要仅仅满足于这个实验,争取掌握单片机的学习方法。
第八天,学习LED显示实验中的第二个实验--点亮8个LED。在理解并操作完成这个实验后,大家应该注意到我们同时用了汇编语言和C语言完成这个实验,大家不要单单停留在分别看懂两个程序,应该再看看二者之间的联系与区别,此时最好结合我们教材中的关于C语言和汇编语言对比学习的那个章节,以求更好理解两种语言在完成单片机开发时的用法。
第九天,学习数码管显示实验中的第一部分,即数码管的结构及工作原理。在单片机的学习实践中,要想高效顺利地完成试验,对实验核心器件的相关知识及其工作原理都要有全面而深刻的把握,无一例外。
第十天,学习数码管显示实验中的静态、动态显示实验。在有了对数码管原理的深刻认识后,今天就要将其运用到实践中,在学习时大家要注意以下几个问题: 要注意将实验流程图与实验程序相结合,并多多参考程序注释,以求对教材内容有更好的理解;在此基础上可以对实验程序做些改动,而这些改动应遵循由易到难、循序渐进的原则,最终达到举一反三的实际效果。
第十一天,学习键盘输入实验。首先要了解本实验新加入的核心器件的相关知识,再去按部就班地完成实验,这些应该不会有太大问题。在这里要讲的是,不知同学们有没有注意到教材中的实验原理图,它是实验的指南,同学们在以后的学习中要是想设计自己的实验,那么画出原理图就是必不可少的工作。在这里向同学们推荐Protel这款软件,它是专业的电路设计软件,大家可以先安装上,逐步加以学习。
第十二天,学习蜂鸣器实验。今天主要是在理解蜂鸣器发音原理的基础上进一步学习电子琴实验。在这个过程中作者为同学们讲解HT46F49E定时器/计数器,并将3种不同的工作模式: 普通定时模式、外部事件计数模式和脉冲宽度测量模式向同学们一一做了介绍,还提及了PFD功能。这种将单片机相关知识的介绍穿插在具体的实验、实践中的方法正是本教程的一大亮点。
第十三天,在复习电子琴实验和上节中的单片机知识的基础上,进而学习歌曲播放实验。在这个过程中再一次深刻地体会一下如何在具体实验中运用单片机知识,以及作者的良苦用心。同时,单片机第一次震撼你的听觉,是否再次点燃了你学习的热情?别忘了将程序稍加改动,播放自己喜欢的歌曲给身边的同学听。
第十四天,学习点阵LED实验的静态点阵显示。复习数码管的显示原理和共阴共阳知识点,学习行扫描和列扫描的异同,掌握点阵LED的显示原理;学习静态显示一个字的实验。在完成这个实验时,作者运用了延时和中断两种方法,并对两者进行了比较。
第十五天,学习动画显示。在此,同学们将体验到平日里常看的动画的制作过程,针对教材中的程序实例,我们已将实验运行结果拍下来了,请同学们在推荐的网站上观看,当然,这也为同学们提供了一次亲手制作动画的机会。
第十六天,从今天开始就要进行第二部分的系列实验,即单片机的万能板实验。而今天的任务就是购买这一系列实验所需的元器件。与第一部分的面包板实验最大的不同就是在这一系列实验中的元器件都要焊接在电路板上,也就是元器件的重复利用几乎是不可能的。同学们按照元件列表购买。
第十七天,学习单片机的万能板实验中的LCD实验。今天的具体工作有两项: 学习万能板的使用,包括焊接方法的了解和电烙铁的使用,为后续实验的进行做准备;学习LCD的显示原理。随着我们学习的深入,核心元件相关原理知识的难度也呈现出上升趋势,同学们在学习的过程中一定不要着急,要针对难点有的放矢、各个击破,最终将其全部掌握。
第十八天,在理解LCD显示原理的基础上,消化具体的显示实验程序,并在万能板上焊接实验电路,最终实现实验的预期效果。在具体的消化过程中,同学们要细心体会在完成任务的过程中单片机是怎样一步一步工作的,作者又是怎样用实验程序完成这个过程的,最后同学们可以建立并显示自己的字形。
第十九天,学习红外遥控实验。了解红外遥控系统一般由红外发射装置和接收装置两部分组成,以及其工作流程原理。学习实验中如何用红外遥控器SAA3010T发射红外信号,以及如何用红外一体化接收头HS0038A2接收红外信号。
第二十天,完成红外遥控实验。学习完成实验的程序,并在万能板上焊接、调试。
第二十一天,学习步进电机控制实验。了解步进电机的转动与电脉冲信号的关系,步进电机按结构如何分类,步进电机按定子线圈的转向如何分类,根据各相之间励磁顺序步进电机又是如何分类的,要知道什么是步进角,驱动步进电机的芯片电路特点是怎样的。
第二十二天,完成步进电机控制实验。在这个实验中,我们用到了前面学习的LCD显示实验、红外遥控实验的相关知识。可以说实验过程相当复杂,同学们要参照注释,以及实验程序流程图好好理解。
第二十三天,学习自己制作印制板实验。在开始第三部分系列实验之前,同学们要按照附录A中的元器件清单购买实验所需的元器件,与前面的实验相比这个实验中用到的元器件有所增加,实验中的有些必需物品在电子市场是买不到的,同学们可以上网查询或找有类似实验经验的老师咨询。
第二十四天,学习印制板的制作流程。本节(6.1节)只是从理论上介绍制作流程,并非动手实践。可以将自己已经购买的元器件对照教材的讲解,学习它的作用及在后续实验中的使用方法,以对整个制作流程有一个了解,关于Protel软件,在第十一天的学习规划中已经提及。
第二十五天,学习利用实验板制作简易信号发生器。学习盛群单片机的PWM功能,理解6+2 PWM 模式和7+1 PWM 模式,以及PWM的输出控制、RC低通滤波器使用中要注意的问题。今天主要是对整个实验原理的理解,以及在此基础上学习完成实验的程序。
第二十六天,自己动手完成PCB图的绘制、转印、腐蚀、钻孔、元件焊接和测试,最终完成实验预期的所有功能。
第二十七天,学习电话自动录音装置实验。了解电话音频输入、摘挂机检测、CPU控制、单片机与PC通信和PC的录音存储这5部分的实验电路,以及实验的工作原理。在完成这个实验的过程中,需要制作电脑录音软件界面,在这里用到了DELPHI这个快速应用程序开发工具,考虑到同学们的水平不一,我们在书中附上了关于制作电脑录音软件界面的源代码,以方便同学们完成实验。
第二十八天,学习旋转字符实验。在了解实验原理的基础上,学习完成实验的电路原理图及程序流程图,在此基础上自己动手编写出实验程序。
第二十九天,学习温湿度测量实验。理解实验原理,学习实验的电路原理并完成实验的程序流程图,在此基础上自己动手编写出实验程序,在完成实验的过程中用C++来编写温湿度测量软件界面,考虑到有些同学的C++基础,我们在书中附上了源代码,以方便大家完成实验。
跟随学习规划一路到此,教材的内容并没有结束,但我们的规划就暂为大家制订到这里。通过前期按部就班的规划学习,同学们的单片机学习已经入门,已经有了一定的基础。同学们可以根据自己的掌握情况灵活把握,可以停下来复习总结,也可以继续深入学习。大家在后期更加深入的单片机学习中,本教材的内容显然已经不能满足大家的需求,但在书中为大家提供了如何获取学习单片机的各种宝贵资源的方式方法,可谓“授人以渔”,请同学们继续努力。