单片机基础知识.doc
《单片机基础知识.doc》由会员分享,可在线阅读,更多相关《单片机基础知识.doc(26页珍藏版)》请在三一办公上搜索。
1、第1章 基础知识1.1 概述作为初学者,在全面、深入学习单片机开发应用技术之初,一定会提出许许多多与单片机相关的问题(如下所列),正确理解并回答这些问题,无疑为学好、用好单片机开了个好头。1.1.1什么是单片机单片机是单片微型计算机的简称。图1-1是常见单片机实物图,其中包括51系列、STC系列、PIC系列和AVR系列单片机。说它们是一款计算机,你可能会产生质疑:这也是计算机?从外观来看,它与我们日常使用的台式电脑、笔记本电脑大相径庭,但它们的确是计算机。俗话说:“麻雀虽小,五脏俱全”,一般计算机所拥有的基本结构,例如处理器、存储器、输入/输出等,单片机同样拥有。之所以称为单片计算机,是因为它
2、们将处理器、存储器、输入/输出等组件全部集成在一块芯片上的原因。图1-1 常见单片机实物图1.1.2单片机能干什么目前,单片机在工业控制、智能仪器仪表、消费类电子、军事、医用、网络通信等领域都有十分广泛的应用,且其应用领域还在进一步地拓展。1、工业控制领域:工业现场实时测控、数据采集等;2、智能仪器仪表领域:数字万用表、数字示波器、数字信号源、数字频率计等;3、消费类电子领域:洗衣机、电冰箱、空调、电视机、微波炉、IC卡、电子玩具、数码相机、数码摄像机等;4、军事领域:飞机、坦克、导弹、鱼雷、制导、智能武器等;5、医用领域:呼吸机、监护仪、超声诊断、病床呼叫等;6、网络通信领域:电话机、手机、
3、程控交换机、楼宇自动呼叫、无线通信等。总之,单片机的应用已经并将渗透到人类工作和生活的多个领域。据不完全统计,目前世界上单片机的年销售量已超过12亿片。1.1.3什么是单片机应用系统单片机应用系统是软件、硬件相结合的综合应用系统,软件和硬件二者缺一不可,如图1-2所示。图1-2 单片机应用系统对于硬件,首指就是单片机。单片机种类较多(51,AVR,PIC,STC等系列),我们选用51系列单片机,图1-1中就有40个引脚的双列直插式(PDIP40)封装的51系列单片机。一个单片机应用系统的硬件部分,只有单片机是远远不够的。单片机是必需的,但还需其它外部硬件设备或元件,这些外部硬件设备或元件一般被
4、称为外部设备,简称外设,如图1-3所示。这些外设器件与单片机一起工作,才能完成或者实现具体功能。 图1-3 51单片机硬件系统使用的部分常见外设硬件我们暂且放在一边不谈,再说软件。软件开发简言之就是编写程序。选用什么语言?用什么软件?怎样编写程序等等问题都将接踵而来,以下我们先简单说明一下这些问题。选用什么语言?C语言!其实,在单片机软件系统开发中,编程语言有两种:C语言和汇编语言。之所以选用C语言而未选用汇编语言,是由于在编写单片机程序方面,C语言相比汇编语言有许许多多的优势,在此,我们不再历数那些优势具体是什么,总之,就用C语言了!用什么软件?Keil !这是目前用得最多、最广泛的单片机C
5、语言软件开发环境。Keil有Vision2,Vision3,Vision4等版本,我们选用Vision3。怎样编写单片机C语言程序?这个问题不是一两句话能解释清楚的,但有一个总体的目标,这就是以硬件为前提基础,准确运用C语言,编写出结构完整、具有一定功能、能在单片机上实际运行、能实现具体功能的C语言程序。C语言的语法比较少,单片机中用到的C语言语法更少!所以在使用C语言进行单片机编程前,没有必要将C语言的全部知识系统地学习或复习一遍。以往,要学习单片机,并准备用C编写程序,一般是先系统地学习C语言,再系统地学习单片机知识,最后将二者结合起来,再学习C语言的单片机开发应用。现在,我们的思路与以前
6、大不相同,具体做法是,打破传统的知识体系框架,设计一系列从简单到复杂的单片机应用开发项目,将C语言知识、单片机知识融入具体项目中,在具体应用开发项目的实际工作过程中,学习并掌握基于C语言的单片机应用开发技术。教学中,针对具体项目,仅对本项目涉及到的C语言知识点、单片机知识点做细化讲解,本项目不涉及的知识点暂且不提,以够用、实用为原则,以解决实际问题为最终目的。在一个个应用项目开发的实践和实现过程中,逐步学习和掌握C语言单片机开发的方法和技巧。在本书后续章节中,我们将举出大量单片机C语言应用开发的实例,结合这些具体实例,无论你以前学过还是没有学过C语言、了解不了解单片机知识,都没有关系,只要紧跟
7、本书的章节和每一个具体实例,深入研究和学习,相信你一定会掌握单片机C语言开发的技术,成为单片机应用开发的高手。1.2 单片机应用系统开发流程1.2.1单片机应用系统开发流程概述如图1-2所示,单片机应用系统包括硬件系统和软件系统,对应地,单片机应用系统的开发,也主要包括硬件部分开发和软件部分开发两大部分。实际工作中,当软件和硬件开发工作完成之后,还要将软件开发生成的.hex文件下载(俗称“烧片)到单片机的程序存储器ROM中。由于下载烧片工作一般使用专门的设备(如编程器)来完成,因此操作比较简单,使用者只要正确操作该设备及相关软件,都能成功下载烧片,所以在单片机应用系统的开发流程中,下载烧片这一
8、开发环节往往被淡化或者忽略不提。本书沿袭惯例,对下载烧片环节不做过多说明,有兴趣的读者请参看附录C或其它资料。此处专门提出这一环节,只是希望能引起读者的注意,不要忘记最后这一环节。再说单片机开发中的软件和硬件,可以说,硬件是整个应用系统的基础,而软件则依赖于系统的硬件。在硬件不再改变的条件下,软件程序的改变,可以部分改变系统的功能。但从整体而言,单片机应用系统的开发,本是一个“软硬兼施”的过程,软件和硬件需要互相弥补,密切配合。部分用硬件不能实现或者不便实现的功能,可以考虑用软件去补充或实现;同样道理,选择适当的硬件,也可以弥补软件功能上的缺憾或不足,二者相得益彰,互相配合,才能使任务最终实现
9、。就单片机应用系统的开发流程而言,硬件和软件在开发次序方面,原则上无先后之分,先开发哪一个都可以,有时候二者还可以同步进行设计和开发。但考虑到硬件是基础,所以通常情况下是先开发硬件,再开发软件。对于硬件部分的开发,简言之就是设计和加工电子线路板,或者手动焊接电子线路板。具体而言,硬件部分的开发绝非易事。首先是硬件电路所用元器件种类繁多,特性各异,全部掌握或了解实属不大可能;再次,硬件电路的设计开发需要很高的设计技巧,绝非一日之功可以成就。本书作为单片机初学者的入门教材,对后续各章节中列举的各个实例,针对不同的任务要求,直接给出了硬件电路图,并对部分主要和重要元器件的特性和功能,也做了详细介绍,
10、方便初学者参考学习并逐渐积累硬件设计的经验,以便日后能自行设计较复杂的硬件电路。 相对于硬件部分的开发,软件部分的开发则较为灵活。正如前面所述,开发语言可以选择汇编语言,也可选择C语言,还可以是汇编语言和C语言混合编程。我们主要选用的是C语言,开发环境则选用Keil的Vision3。需要特别说明的是,在软件开发部分,开发流程几乎是固定不变的,如图1-4所示,主要包括工程建立、源程序编写和编译调试三个步骤;软件开发的结果是生成扩展名为.hex的文件,该文件被用于下载或者烧片到单片机的程序存储器ROM中,供单片机上电后再读出来执行,从而驱动或者控制外部设备按照预定的要求正常工作。从软件开发的流程可
11、见,针对不同的项目任务,编写的源程序不大相同,其余步骤则基本固定不变。与对硬件开发的处理思路一样,本书对于后续各章节中列举的各个实例,针对不同的任务要求,直接给出源程序清单,对主要和重要的功能模块,给予解释和说明,供初学者参考学习,而软件开发过程中的其它步骤则一概简化或略去,重点放在功能实现和源程序的编写上,其它与Keil相关的软件操作则被淡化,只因这些操作和步骤基本上是固定不变的。鉴于以上概述,以下仅就软件开发的具体流程做详细说明。图1-5是在图1-4的基础上,细化其中的三个主要步骤所得单片机软件开发流程图。 图1-4 软件开发流程 图1-5 细化的软件开发流程1.2.2单片机应用系统软件开
12、发流程1、工程建立(1)启动Keil Vision3软件假设Keil Vision3软件已正确安装,启动Keil Vision3软件与启动其它软件的方法完全相同:单击并依次选择【开始】【程序】【Keil Vision3】,或者直接双击桌面上Keil Vision3的快捷方式图标,均可启动Keil Vision3。启动过程中,屏幕出现如图1-6所示启动界面。启动界面消失后,Keil Vision3就进入了如图1-7所示编辑界面,此时Keil Vision3软件已成功启动。图1-6 Keil Vision3启动界面图1-7 Keil Vision3启动成功后的编辑界面(2)新建工程Keil 与现在
13、众多的软件开发环境一样,均采用工程或者项目的管理方式来管理文件。一个应用开发任务就是一个工程或项目。一般地,以开发任务的名称为新建的文件夹名,所有与该开发任务有关的文件都存放在该文件夹中,不同开发任务的文件夹名一般不相同。下面首先是新建工程。单击Keil Vision3的【Project】菜单,在展开的下拉菜单中单击【New Project】,如图1-8所示。在随后打开的保存新建工程窗口中,选择新建工程的保存路径,并为新建的工程命名,最后单击【保存】按钮保存该新建的工程。注意,工程的扩展名不用输入,系统会默认选择为“.uv2”。此处将工程暂且命名为“LED1”,并保存在F盘的文件夹LED下。如
14、图1-9所示。图1-8 新建工程图1-9 保存工程(3)选择单片机型号当单击图1-9所示新建工程保存窗口中的【保存】按钮之后,Keil Vision3会弹出单片机型号选择对话窗口,如图1-10(a)所示。在该对话窗口中,要求用户选择该工程准备使用的单片机芯片的型号。此处选择Atmel公司生产、使用最普及的AT89C51芯片。具体操作是:在图1-10(a)左侧栏所列众多厂家中找见“Atmel”,单击“Atmel”名称前的加号“”,展开Atmel公司生产的单片机系列产品,如图1-10(b)所示;接着,在展开的Atmel公司生产的单片机系列产品中,单击选中“AT89C51”,如图1-10(c)所示;
15、最后,单击【确定】按钮,芯片型号的选择完成。此时,Keil Vision3会弹出如图1-11所示对话窗口,询问是否复制并添加标准8051启动代码到当前工程,一般单击选择【是】即可。图1-10(a) 选择51单片机的生产厂家图1-10(b) 单击展开Atmel公司生产的单片机产品图1-10(c) 选中Atmel公司生产的单片机AT89C51图1-11 是否添加8051启动代码到当前工程对话窗口完成以上步骤之后,屏幕重新回到如图1-12所示编辑界面,图1-12与图1-7基本相同,不同之处是左侧“工程管理工作台”中的内容,图1-7中,“工程管理工作台”中什么也没有,而图1-12中,“工程管理工作台”
16、中有名为“Target 1”的对象,单击其名称前面的加号,还可以看到该对象内所包含的文件。图1-12 已含有“Target 1”对象的编辑界面2、源程序编写新建工程完成之后,以下该进入源程序的编写环节了。(1)新建并保存源程序文件单击打开Keil Vision3的【File】菜单,再单击选择第一项【New】,或者直接单击工具栏中“创建一个新文件”快捷图标,都可以新建一个默认名字为“Text 1”的文件。新建之后,I型光标就在“Text 1”文件的编辑窗口中闪烁,如图1-13所示。需要说明的是,默认的文件名也许由于多次新建文件而出现“Text n”的字样,其中n是一整数,因为马上要将该文件进行保
17、存或另存为其它名称的文件,所以原来的文件名是什么都无关紧要。接下来将源文件进行换名保存。单击【File】菜单中的【Save】或者【Save As】,也可直接单击工具栏中的存盘快捷图标,都可打开如图1-14(a)所示文件另存为窗口。将其中的原始默认文件名“Text 1”更换为“led1.c”。此处特别要提起注意的是,因为我们使用C语言来编写源程序,所以源程序的命字中,其扩展名必须是“.c”,正如前面提到的,单片机的编程语言除C语言外,还有汇编语言,如果使用汇编语言编写源程序,则源程序文件名的扩展名就必须是“.asm”。此处,源文件更名为“led1.c”,其中的扩展名“.c”表明这是用C语言编写的
18、源程序,如图1-14(b)所示,最后单击【保存】。单击【保存】后,源程序文件的名字已经更换,且源程序编辑窗口的标题栏显示为“F:LEDled1.c”字样。如图1-15所示。图1-13 新建源程序文件界面图1-14(a) 源程序文件更名前界面 图1-14(b) 源程序文件更名后界面图1-15 更名保存后的源程序文件界面(2)加载源程序到工程中加载源程序到项目工程是非常重要的一个步骤。未加载源程序之前,该项目工程管理工作台如图1-16(a)所示,加载源程序文件之后如图1-16(b)所示。可见,加载源程序之后,源程序文件led1.c被添加进入了工程管理的工作台中。 图1-16(a)加载源程序之前 图
19、1-16(b)加载源程序之后加载源程序的具体过程如下:在工程管理工作台中,单击对象“Target 1”前面的加号“”将其展开,右击文件夹“Source Group 1”图标,在弹出如图1-17所示快捷菜单中,选择“Add Files to Group Source Group 1”菜单项。随后,屏幕弹出选择源程序文件对话窗口,如图1-18所示。双击图1-18中文件“led1.c”之后再单击【Close】按钮,或者单击图1-18中文件“led1.c”之后再单击【Add】按钮,都可将源程序文件“led1.c”加载到工程项目中,结果如图1-16(b)所示。此过程之所以重要,原因是,如果没有添加源程序
20、文件,则该工程项目如同一个躯壳或者空的框架,因为没有包含源程序文件,该工程自然不具有任何功能,即使编译链接等环节顺利通过,预期的功能也一定不会实现。另一方面,如果给工程项目添加了错误的或者多余的源程序文件,在工程的编译调试环节可能就会报错,即使编译通过,也不能保证其功能是正确的。如果出现这样的情况,也不必惊慌,只需将这些错误的、或者多余的文件从工程项目中移除即可。具体做法是:在工程管理工作台中,在准备移除的文件上右击,在弹出的快捷菜单中选择“Remove File xxx.c”(xxx代表被移除文件的名字)即可。(3)编译选项设置工程编译的目的,是将源程序文件经编译、链接,最终生成可以用于下载
21、烧片的.hex文件,其中,.hex是十六进制文件的扩展名。在进行工程的编译、链接之前,首先要对编译环境进行必要的设置,设置完成后才可以进行编译。单击打开【Project】下拉菜单,在展开的下拉菜单项目中,单击选择【Options for Target Target 1】,或者直接单击工具栏中Options for Target快捷方式图标,都可以打开编译选项设置窗口,如图1-19所示。可以看到,尽管此窗口包含多个用于编译选项设置的标签页,但在一般使用中,只有两个标签页中的部分选项需要设置,其余标签页则保持原始默认值即可。这两个标签页就是Output和Debug标签页,如图1-19中所示。单击【
22、Output】标签页,即可打开Output(输出)选项设置窗口。如图1-20(a)所示。在此窗口中,只须选中“创建.hex文件选项”:在如图1-20(a)中标注指示的复选框中,单击打钩,表明工程编译之后,输出或者说生成用于下载烧片的.hex文件。相反,如果此选项没有打钩选中,即使工程完全正确,且编译通过,但不会生成用于下载烧片的.hex文件。因此,如果需要进行程序的下载烧片或仿真调试,则此选项必须要打钩选中。此选项打钩选中后如图1-20(b)所示。图1-17 添加源程序到工程的快捷菜单图1-18 选择源程序文件对话窗口图1-19 编译选项设置窗口 图1-20(a) Output选项设置窗口(创
23、建.hex文件选项未选中) 图1-20(b)创建.hex文件选项选中接下来就该设置Debug标签页了。单击如图1-19中所示【Debug】标签页,即可打开Debug(调试)选项设置窗口,如图1-21所示。此标签页默认的调试工具是Simulator。如果使用默认的调试工具,具体调试时,只能从Keil Vision3软件的部分调试窗口中观察数据的变化情况,实际的硬件电路是不工作的,自然看不到硬件电路中元器件的实际动作和运作现象,所以一般不选默认调试工具。另外,在调试时,为了让程序能直接跳转到主函数main后再开始继续运行,一般都将图1-21中所示“Go till main()前面的复选项打钩选中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 基础知识
链接地址:https://www.31ppt.com/p-4147351.html