1 / 45

单片机原理及基于单片机的 嵌入式系统设计

单片机原理及基于单片机的 嵌入式系统设计. 蔡方凯 主 编. 中国水利水电出版社. 绪 论. 在工业、农业、军事、保安、金融、仪器仪表、航空航天、医疗、通讯、办公设备、娱乐休闲、健身、体育竞赛、服务领域 …… ,大量单片机-嵌入式技术已经无处不在。正迅速改变着人们传统的生产和生活方式。 请稍微留心一下我们的周围,看看身边到底发生了什么变化?. 单片机技术的应用遍布国民经济与人民生活的各个领域. 1.1 微型计算机系统结构. 1.2 微型计算机工作过程. 微机的工作过程按照 “程序存储,程序控制”的方式工作。

micah-love
Download Presentation

单片机原理及基于单片机的 嵌入式系统设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 单片机原理及基于单片机的嵌入式系统设计 蔡方凯 主 编 中国水利水电出版社

  2. 绪 论 在工业、农业、军事、保安、金融、仪器仪表、航空航天、医疗、通讯、办公设备、娱乐休闲、健身、体育竞赛、服务领域……,大量单片机-嵌入式技术已经无处不在。正迅速改变着人们传统的生产和生活方式。 请稍微留心一下我们的周围,看看身边到底发生了什么变化?

  3. 单片机技术的应用遍布国民经济与人民生活的各个领域单片机技术的应用遍布国民经济与人民生活的各个领域

  4. 1.1 微型计算机系统结构

  5. 1.2 微型计算机工作过程 微机的工作过程按照“程序存储,程序控制”的方式工作。 程序存储是指用户根据实际应用需要将程序编写完毕,并将程序的机器码存放在存储器中。用户编程的根本目的是要求计算机能够按照用户需求一步步的执行该段程序。那么计算机如何能够理解用户程序,并按要求去执行该段程序呢?这就是程序控制。 程序控制是指CPU内的控制器按照用户程序中的指令顺序,从存储器中取出指令,并分析指令的功能,进而发出各种控制信号,指挥计算机中的各类部件来执行该指令。这种通过取指令、分析指令、执行指令的操作重复执行,直到完成程序中的全部指令操作为止。

  6. 按照“程序存储,程序控制”的方式工作,微机必须解决以下几个问题:按照“程序存储,程序控制”的方式工作,微机必须解决以下几个问题: 一、如何将程序的机器码存储到程序存储器中? 二、如何将程序的机器码从程序存储器中取出? 三、当CPU完成从程序存储器中读出程序的机器码后,如何执行该语句?

  7. 1.2.1 如何将程序机器码烧写到程序存储器中 对于普通PC而言,其程序存放在硬盘中,此时面临的问题就是将文件、程序内容写入硬盘,在Windows操作系统中提供了图形化的操作环境,读者不必了解对硬盘的写操作原理,仅需要按“保存”按钮或“保存”菜单就可以很方便的完成该操作。 对51单片机而言,将程序存储到程序程序器中则相对复杂,必须利用51单片机芯片厂家提供的专用设备(烧写器)来完成,市场上有专门的单片机烧写器销售。烧写器实际上就是完成对程序存储器的写操作。利用烧写器可以将用户程序的机器码存储到单片机中。

  8. 1.2.2 如何将程序从程序存储器中取出 • 最基本的计算机组成 • 存储器 • 非常简单的CPU设计与实现 • 如何从程序存储器中取程序数据

  9. 1 最基本的计算机组成 一台简单的计算机通常包括三个主要的子系统,中央处理单元(CPU)、存储系统(用来存储CPU正在执行的程序和数据)、输入/输出子系统(如键盘、显示等)

  10. 计算机系统采用了三总线结构。从物理上说,总线是一组导线,计算机的部件都是连在总线上的,为了将信息从一个部件传到另一个部件,源部件先将数据输出到总线上,然后目标部件在从总线上接收这些数据。计算机系统采用了三总线结构。从物理上说,总线是一组导线,计算机的部件都是连在总线上的,为了将信息从一个部件传到另一个部件,源部件先将数据输出到总线上,然后目标部件在从总线上接收这些数据。 ●地址总线:与其他总线不同,地址总线是单向的,地址总线的内容总是由CPU送到地址总线上,而CPU不读取地址总线上的数据。例如,当CPU从存储器读取数据或指令,或写数据到存储器时,必须指明要访问的存储器单元地址,CPU输出地址内容到地址总线上,而存储器从地址总线上读取地址,并且用它来访问正确的存储单元。对应I/O子系统,比如键盘、显示等,都有一个唯一的地址,当访问某个I/O子系统时,CPU将此设备的地址放到地址总线上,每一个设备均从总线上读取地址并且判断自己是不是CPU正要访问的设备。若不是则不作任何响应,若是则和CPU进行相应的数据传输。

  11. ●数据总线:数据是通过数据总线来传送的,当CPU从存储器中读取数据时,它首先把需要访问的存储器地址输出到地址总线上,发出读操作命令,然后存储器从地址总线上读取地址,并根据地址访问相应的存储单元,同时将该存储器单元中的数据输出到数据总线上,这样CPU就可以从数据总线上读取数据了。当CPU向存储器写入数据时,它首先输出地址到地址总线上,发出写操作命令,然后输出数据到数据总线上,这样存储器就可以从数据总线上读取数据并将它存储到正确的存储单元中。当访问某个I/O子系统时其数据总线功能类似于对存储器的访问。●数据总线:数据是通过数据总线来传送的,当CPU从存储器中读取数据时,它首先把需要访问的存储器地址输出到地址总线上,发出读操作命令,然后存储器从地址总线上读取地址,并根据地址访问相应的存储单元,同时将该存储器单元中的数据输出到数据总线上,这样CPU就可以从数据总线上读取数据了。当CPU向存储器写入数据时,它首先输出地址到地址总线上,发出写操作命令,然后输出数据到数据总线上,这样存储器就可以从数据总线上读取数据并将它存储到正确的存储单元中。当访问某个I/O子系统时其数据总线功能类似于对存储器的访问。 ●控制总线:控制总线是控制信号的集合,这些信号用来控制数据要读入CPU还是要写入CPU,CPU要访问存储器还是访问I/O子系统等。

  12. 问1、为什么需要三总线,只有数据总线不可以?问1、为什么需要三总线,只有数据总线不可以? 答:只有数据总线,没有地址和控制总线,则通信方式只能采用“广播通信方式”, 若只有数据和控制总线,没有地址总线,则每个外部设备都必须有控制总线,若外部设备多,则控制总线就必须增加,控制总线必然称为外部设备扩展的“瓶颈”。 若没有地址总线,对应存储器而言,在没法确定当前数据需要存放在存储器的那个地址单元中。 问2、鼠标、键盘是外部IO设备,为什么不是三总线? 答:在计算机中硬件设计了三总线协议和PS/2或USB协议的接口转换电路,即将并行数据改为串行数据传输方式

  13. 2 存储器 存储器用于存储数据的一组电路,虽然在设计中它不是严格的组合电路,一个存储器元件有多个存储单元,每个单元存储固定长度的二进制值,不同的存储器芯片,其存储单元的数量和大小也不相同,存储器芯片存储容量大小由单元数乘以每个单元的位数确定。 存储器一般分为随机读写存储器(RAM)和只读存储器(ROM)。

  14. 随机存取存储器(RAM-Random Access Memory):简称随机存储器或读写存储器。是一种既能写入又能读出数据的存储器。但当机器断电或关机时,存储器中存储的信息会立即消失。 只读存储器(ROM-Read Only Memory):是计算机内部一种只能读出数据信息而不能写入信息的存储器。但当机器断电或关机时,只读存储器中的信息不会丢失。

  15. 存储器可以形象的把它理解成装了很多元件盒的元件储存柜,元件储存柜放很多元件盒,每个元件盒中放不同的元件,当用户需要某一元件时,必须知道该元件放在那个元件盒中,即需要对元件盒进行编号,否则只能一个个元件盒查找。对应于存储器,编号即为存储器的地址,元件盒内的元件就是存储数据。存储器可以形象的把它理解成装了很多元件盒的元件储存柜,元件储存柜放很多元件盒,每个元件盒中放不同的元件,当用户需要某一元件时,必须知道该元件放在那个元件盒中,即需要对元件盒进行编号,否则只能一个个元件盒查找。对应于存储器,编号即为存储器的地址,元件盒内的元件就是存储数据。 例如一个大小为512×8位的存储器芯片有512个存储单元,每个单元8位就可以理解成元件柜共512个元件盒,那么如果想找到对应的元件盒里的元件就必须对元件盒进行编号,若采用二进制编号,则512个单元共需要9位二进制,即对应存储器的地址。对元件盒里元件个数可以采用8位计数,即一个元件盒最多可存放255个元件,即可以得到对应元件盒中的数据信息。

  16. 存储器芯片的地址输入选择它其中的一个单元,有个单元的存储器芯片需要N位的地址输入,通常标记存储器芯片的地址输入选择它其中的一个单元,有个单元的存储器芯片需要N位的地址输入,通常标记 A【N-1…0】,对于大小为512×8位的存储器芯片而言,其地址总线为A【8...0】。 存储器芯片中的数据引脚常用于访问数据,数据总线的每一位都有一个引脚,对于M位的数据总线在,这些引脚通常标记为D【M-1…0】,对于大小为512×8位的存储器芯片而言,其数据总线为D【7...0】。 问:为什么数据总线不是三根? 答:若数据总线是三根,则存储器中存储的数据最大只能为8,若数据总线8根,则存储的数据最大为256

  17. 3 非常简单的CPU设计与实现 这一节描述和设计一个非常简单的CPU,这个CPU在现实中是没有任何应用价值的,因为它太简单了,但是目的是为了读者理解CPU的具体工作原理。 为了说明CPU的设计过程,考虑一个小型的有点不实用的CPU,这款CPU的特点是: ◆ CPU仅能够访问64字节的存储空间(程序存储器和数据存储器共用) ◆每个字节是8位 ◆ CPU只包含一个程序员可以访问的寄存器,即一个标记为ACC的8位累加器

  18. 该CPU的指令集 指令集通常由三大类指令组成,传送类指令、运算(包括逻辑运算)类指令、转移类指令三部分组成。在这款CPU中,仅设计4条指令,按照等长编码模块,利用高二位对指令类型进行编码,低6位AAAAAA表示地址线,如下表1-1所示。MOV指令代表“传送类”指令,ADD指令代表“运算类”指令,AND指令代表“逻辑运算类”指令,LJMP指令代表“转移类”指令。

  19. 对上面这个CPU而言,可以说:麻雀虽小,五脏具全,从系统结构的指令集设计而言,这个系统包括运算类、传送类、转移类、逻辑运算类指令。对上面这个CPU而言,可以说:麻雀虽小,五脏具全,从系统结构的指令集设计而言,这个系统包括运算类、传送类、转移类、逻辑运算类指令。 根据该款CPU的特点,可以看出该CPU可访问64字节的存储器空间,所以其地址总线是A[5...0]。由于每个字节是8位,所以其数据总线为D[7…0]。 CPU设计到这里,还缺什么?除了ACC累加器以外,CPU还需要一些其他的寄存器,以便完成取数据、译码和执行指令所必须的内部操作,这些寄存器为:

  20. 一个6位的程序计数器(PC),它的内容为将被执行的指令在程序存储器中的存储地址。一个6位的程序计数器(PC),它的内容为将被执行的指令在程序存储器中的存储地址。 一个6位的地址寄存器(AR),CPU不能直接将地址信息送往地址总线,CPU首先将地址信息送给地址寄存器AR,AR通过地址总线A[5...0]向存储器提供地址。 一个8位的数据寄存器(DR),CPU不能直接将数据信息送往数据总线,CPU首先将数据信息送给数据寄存器DR,DR通过数据总线D[7…0]从存储器读写指令数据。 一个2位的指令寄存器(IR),它用来存放从存储器中取回指令的操作码。 至此,一个简单的CPU总算设计完成,一个CPU该有的都有了,能够完成一些简单的操作。

  21. 4 如何从程序存储器中取程序数据 在CPU能够执行某条指令之前,它必须将这条指令从存储器中取出来,CPU从程序存储器中取程序数据的具体操作过程 ◆ 将当前要执行指令的存储地址送到程序计数器中,由于地址总线A【5..0】的内容必须从地址寄存器送出,因此第一步就是要把程序计数器PC的内容拷贝到AR中,这样,取指令周期的第一步状态就是: 第一步: AR←PC

  22. CPU从存储器中读取指令数据:CPU必须发一个READ信号,该信号从CPU控制总线输出到存储器控制总线上,CPU给存储器足够的时间按照CPU提供的地址访问相应的存储单元M,同时存储器将访问的数据(即指令的机器码)发送到数据总线D【7…0】上,CPU通过数据总线将这些数据读入并且存储到DR中。实际上另一个操作也将在这里完成,增加程序计数器,以便能访问下一条指令。所以第二步实际上是完成如下操作。其中(M)表示存储单元M中的内容。 第二步: DR←(M), PC←PC+1

  23. 上述两步完成后,CPU已经得到程序的机器码,作为取指令的一部分,CPU还必须完成两件事情,首先,它必须将DR的高两位拷贝到IR,这两位表示那条指令将要执行,同时在取指令阶段CPU将DR的低6位拷贝到AR中,这样这两个操作可以表示如下。 第三步: IR←DR[7..6], AR←DR[5..0] 完成上面三步操作后,CPU将程序存储器内容取出,其高二位存放在指令寄存器IR中,为操作码信息,通过IR的值可以判断该指令为四条指令中的哪一条。低6存放在地址寄存器AR中,为执行指令操作的操作数的地址编码。例如进行ADD加法操作,则必须以AR单元的内容为地址去访问存储器,并取出该存储单元的内容和累加器ACC中的内容进行相加,那么如何以AR单元的内容为地址去访问存储器,该存储单元的内容又是如何得到呢?即CPU完成 对存储器的读操作。

  24. CPU以AR单元的内容为地址去访问存储器,从存储器中读取操作数。CPU发一个读信号,该信号从CPU控制总线输出到存储器控制总线上,CPU给存储器足够的时间按照CPU提供的AR单元的内容作为地址访问相应的存储单元,同时存储器将访问的数据(即指令的操作数)发送到D【7...0】上,CPU通过数据总线将这些数据读入并且存储到DR中。所以第四步实际上是完成如下操作。(AR)表示以AR单元的内容为地址所对应的存储单元的内容。 第四步: DR←(AR)

  25. 1.2.3 CPU读出指令码和操作数后如何执行 当CPU把一条指令从存储器中取出来以后,它必须判断所取的是那条指令,对于这个最简单的CPU而言,有四条指令,根据等长编码原理,可以将四条指令依次编码为00,01,10,11。指令寄存器IR的值由当前指令类型决定,指令寄存器IR中的值将决定调用那个执行周期,

  26. 1 MOV指令执行周期 为执行“传送类”指令,CPU必须完成两件事情。首先必须从存储器中取出一个操作数,然后将这个操作数送入累加器中。操作数的取值通过对存储器的读操作已经将操作数取出。现在两个操作数分别放在ACC和DR中,因此对于ADD指令,主要进行下面的操作。 第五步:MOV: ACC←DR 当前指令执行完毕后,开始取下一条指令。即将当前PC值送入AR中,重新开始下一条指令的执行。

  27. 2 ADD指令执行周期 为执行“加法”指令,CPU必须完成两件事情。首先必须从存储器中取出一个操作数,然后必须将这个操作数和累加器中当前的值相加,并把结果存回到累加器中。操作数的获取通过第四步对存储器的读操作已经完成。现在两个操作数分别放在ACC和DR中,因此对于ADD指令,主要完成下面的操作。 第五步:ADD: ACC←ACC+DR

  28. 3 AND指令执行周期 与加法指令类似,为执行“与操作”指令,CPU必须完成两件事情。首先必须从存储器器中取出一个操作数,然后必须将这个操作数和累加器中当前的值相“与”操作,并把结果存回到累加器中。现在两个操作数都在ACC和DR中,因此对于AND指令,主要进行下面的操作。 第五步: AND: ACC←ACC∧DR

  29. 4 LJMP指令执行周期 由于LJMP指令中不需要操作数,所以LJMP指令与上述三条指令执行略有不同,不需要第四步操作。CPU只需要完成将要跳转的目标地址送给程序计数器即可。因此与上述指令第四和第五步操作不同,LJMP指令执行周期相对简单,由于地址已经存储在AR,仅需要将AR的值送给PC指针,因此对于LJMP指令,仅需要如下操作即可。 第四步: LJMP: PC←AR 为了更形象的说明上述过程,可以用图来说明所设计的CPU的状态图,包括了取指、译码和执行周期。

  30. 1971年intel公司研制成功世界上第一台4位微处理器;1971年intel公司研制成功世界上第一台4位微处理器; 1973年intel公司研制成功8080 8位微处理器; 1.3 单片机发展历史 1976年intel公司推出MCS-48系列8位单片机; 80年代初在MCS-48单片机基础上推出MCS-51系列单片机。

  31. 计算机系统通常由多块印刷电路板制成: 显卡 声卡 网卡 存储器接口 主板 输入输出接口 内存条 CPU 多板机

  32. 单板机 印 刷 电 路 板 存储器接口 输入输出接口 内存条 输入输出接口 芯片 存储器芯片 CPU芯片 CPU 定时计数器 芯片 A/D、D/A 芯片

  33. 单片机 单 硅 晶 片 存储器 CPU I / O口 时钟电路 控制电路 定时器

  34. 1.4 单片机发展趋势 1 低功耗CMOS化 2 微型单片化 3 主流与多品种共存

  35. 1.5 单片机特点 1 小巧灵活、成本低,易于产品化。它能方便的组装成各种智能化的控制设备及各种智能仪器仪表。 2 面向控制,能针对性地解决从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。 3 抗干扰能力强,适应温度范围宽,在各种恶劣的环境条件下都能可靠地工作,这是其他机种无法比拟的。 4 可以很方便地实现多机和分布控制。使整个控制系统的效率和可靠性大为提高。

  36. 1.6 主要单片机厂商 Intel公司: 8048、8051(8位);8096(16位);80960(32位)。 Motorola公司: MC-6801(8位);68H16(16位);68HC332(32位)。 另外日本NEC公司;荷兰Philips公司等 由于8位单片机基本能满足目前大多数应用系统的要求,所以目前8位单片机仍是应用主流。

  37. MCS-51系列 MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751,8951,8032,8052,8752,8952等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是早些年在我国最流行的单片机,所以很多场合会看到8031的名称。

  38. AT89系列 INTEL公司将MCS-51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。

  39. 补充 单片机的开发过程 1、任务分析 2、设计并制作硬件 3、编写软件。在编写软件之前,首先要确定一些常数、地址,然后用文本编缉器编写软件,编写好后,用编译器对源程序文件编译、查错,直到没有语法错误 4、应用仿真机对软件进行调试,直到程序运行正确 5、运行正确后,就可以写片(将程序固化在EPROM中)

  40. 仿真、仿真器 仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务,一般产品开发过程中都要进行仿真,仿真的主要目的是进行软件调试,当然借助仿真器,也能进行一些硬件排错。一块单片机应用电路板包括单片机部份及为达到使用目的而设计的应用电路,仿真就是利用仿真器来代替应用电路板(称目标机)的单片机部份,对应用电路部份进行测试、调试。 仿真分软件模拟仿真和利用仿真器仿真两类。

  41. 软件模拟仿真 是指用仿真软件来模拟单片机运行情况,一般我们学习指令系统时常用这种方式,它不能进行硬件系统的调试和故障诊断。 利用仿真器仿真 利用仿真器以及微机可以进行软硬件系统的调试和故障诊断。 在仿真调试过程中,可以以各种运行方式运行程序(断点、单步、跟踪),还可以观察到单片机内部存储器、寄存器等的状态。

  42. 举例说明(完成一段空操作程序) 目标文件也就是最终写入EPROM的文件: 02 00 40FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 02 00 41 FF FF FF 源程序 ORG 0000H LJMP START ORG 040H START:NOP LOOP:NOP LJMP LOOP ;循环 END ;结束

  43. 问:如何学习单片机? 1、了解单片机外部硬件接口以便设计硬件电路 2、熟悉单片机指令系统和程序设计方法 学习单片机的方法: 1、预习、复习; 2、多动手(硬件、软件实验); 3、多看参考书(包括利用网上资料); 4、其它(上课、作业、答疑)

More Related