基于单片机的超声精确定位系统设计外文翻译资料

 2022-06-12 09:06

英语原文共 221 页,剩余内容已隐藏,支付完成后下载完整资料


第一章

什么是单片机

随着时间的推移,越来越多的消费品含有微控制器。随着基本微控制器的成本低至30美分[ 6 ],它们被用作以前使用晶体管晶体管逻辑的任务的简单解决方案。随着这些设备在工业以及业余电子学中的广泛应用,编程的能力对于任何可能尝试的项目都是非常有用的。

这篇文章是对微控制器的介绍,也是为了让一个新用户第一次通过微控制器编程和使用各种外围设备来打开数据表。对于一个更高级的用户,本文将提供关于如何使代码更易读,并提出良好的编码实践的建议。虽然这将聚焦于单个单片机,ATmega644p,提出的想法对大多数微控制器是有效的。

1.1微处理机,计算机,控制器

虽然微处理器、微型计算机和微控制器都具有一定的特性,而且这些术语经常可以互换使用,但有一些区别被用来将它们划分为不同的类别。

1.1.1微处理器

三类中最简单的就是微处理器。这些设备也被称为CPU(中央处理器),通常被发现在一个更大的系统(如台式计算机)的核心,主要用作数据处理器。它们通常包括一个算术逻辑单元(ALU)、指令解码器、多个寄存器和数字输入/输出(DIO)线(见图1.1)。有些处理器还包括内存空间,如缓存或堆栈,可用于比存储系统内存更快速地临时存储和检索数据。此外,处理器必须连接到某种形式的数据总线,以访问处理器外部的内存和输入/输出外围设备。

根据内存架构,微处理器可能只有少量的寄存器,例如程序计数器,用于记录下一个指令的地址和一个指令寄存器来装载和存储下一个指令;或者可能有几十个寄存器。这些额外的寄存器被称为通用寄存器,并在使用时存储数据。

1.1.2微型计算机

微型计算机包含了计算机在一个小电路中的所有组成部分,而不是在一个芯片上。这一术语通常适用于笔记本电脑和台式计算机,但这些设备已不再使用。微型计算机的组成设备包括一个CPU(如微处理器),存储和/或其他存储设备,以及IO设备(见fi图1.2)。I/O设备的几个例子包括键盘、显示器、网络等,但可以是微型计算机用来收集或分发信息的任何设备。

1.1.3单片机

微控制器在某种程度上是微处理器和微型计算机之间的交叉。像微处理器一样,单片机指的是单个设备;然而,它包含了整个单片机的微型计算机。因此,微控制器将拥有一个处理器、板上存储器以及各种I/O设备。在使用微控制器而不是微型计算机的情况下,简化了总体设计,从而牺牲了灵活性。微型计算机可以配置为具有特定数量的内存或设备。微控制器通常局限于制造商指定的内存大小和外围设备。在微控制器和它们的功能中有很多选择,但是在某些情况下这仍然是一个限制。

因为微控制器的设计更多的是独立的数据收集和控制设备,而不是像微计算机通常处理的人工交互或网络任务,它们的标准IO设备不同。模拟数字转换器(adc)、定时器和外部中断是在微控制器上常见的外围设备,而键盘、监视器和其他用于控制个人计算机的设备则不是。

1.2记忆模型

1.2.1 冯诺伊曼结构

冯·诺依曼架构是以一位参与曼哈顿计划的科学家命名的,由于该项目的计算要求,加入了EDVAC存储程序计算机的开发[12]。在此期间,他撰写了一份关于EDVAC的报告草稿,该报告成为冯·诺依曼架构的来源[21]。

第一台计算机和计算设备都有固定程序。这些程序以不同的方式被植入到机器中,并且改变了程序,机器经常需要重建。这些重建可能需要花费数周时间,并且使用了机器的大部分时间。

冯·诺依曼架构通过将程序存储在内存中解决了这个问题(因此存储程序)。这个内存块在程序存储和数据存储之间共享,它允许将数据作为代码处理,反之亦然。此外,它允许使用自修改代码,这在架构的早期非常有用,可以减少内存使用或提高性能[21]。

图1.3包含von Neumann架构的框图。这显示了单个内存块,控制单元、读取和解释程序的设备和大多数操作被执行的ALU都连接在一起。与CPU外部的内存进行通信的必要性导致了一个吞吐量限制,称为von Neumann瓶颈[3]。由于控制单元和ALU都需要读写内存,因此在这个体系结构中这个瓶颈特别严重,因此共享系统中的限制资源(内存访问时间)。

1.2.2哈佛架构

冯诺依曼瓶颈的一个解决方案是将程序内存从数据内存中分离出来(参见图1.4)。这种分离允许对冯·诺依曼架构进行几个改进。

第一个也是最明显的改进是程序内存和数据内存都可以同时访问。在冯·诺依曼体系结构中,为了将一个单词从一个寄存器存储到ALU到内存中,控制单元必须首先加载并解释指令,然后ALU可以将数据传输到内存中,最后控制单元可以转移到下一个指令。这需要在同一路径上执行两个单独的读/写操作。在哈佛体系结构中,写入数据内存并从程序内存中读取下一个操作,可以同时减少访问数据内存的任何指令所需的时间。

一个不太明显的变化可以大大提高运行速度,即程序内存中的单词长度不再需要是整数字节数。这允许在单个指令中包含指令和内存地址的更长的指令字,因此从程序内存和处理器的每个时钟周期中读取的每一个字都可以是一个完整的指令。在冯·诺依曼体系结构指令中,经常有多个词来包含op代码和所需的任何内存地址。因此,上面给出的示例将需要三个读/写操作,而不是前面提到的两个或哈佛体系结构的单个操作。

哈佛架构的主要缺点是它不能修改程序内存,限制了它在一般系统(如个人计算机)中的有用性。对于像嵌入式系统这样的专用处理器来说,这并不是问题,尽管内存带宽必须很高,因为每个循环可以通过两个操作访问内存。Atmel和Microchip的PIC家族生产的AVR系列微控制器都是哈佛的架构,尽管它们已经被稍微修改过,以允许对程序内存进行读/写操作。这些操作主要用于引导加载程序。

1.2.3修改哈佛架构

修改后的哈佛架构是冯bull;诺伊曼和哈佛架构的混合体,试图捕捉每个人的利益。具体来说,数据和程序再次共享内存空间,类似于冯·诺依曼架构的工作原理,但是数据和指令不会共享CPU和内存之间的缓存内存或路径。这允许比冯·诺依曼更少的限制内存访问,同时也允许像哈佛所缺乏的那样对待代码和数据。使用这种架构的处理器最常见的例子之一是在大多数个人计算机中发现的x86处理器。

1.3堆栈

堆栈是用于存储与过程调用相关的信息以及特定操作的数据的内存中的最后一段(LIFO)部分。栈可以在一般内存中使用固定的或可变的大小,或者有一个固定大小的专用内存块。在这两种情况下,处理器都会有一个堆栈指针寄存器,指向堆栈中最近处理的位置。在某些处理器中栈从内存块的最高地址开始,向下增长,在其他处理器中,它从最低地址开始,然后增长。

LIFO是指从存储数据的地方删除数据的顺序。在LIFO中,添加到存储中的最新数据是在请求数据时删除的第一个数据。这是堆栈名称的来源,由于LIFO与创建一堆某种形式的对象之间的相似性,当所有可用的都是top项目时。另一种选择是先出先出或先出先出。在这个范例中,当需要数据时,存储中最古老的数据块会被删除。这通常被称为队列,原因是它与排队结帐或排队等待银行出纳的排队人数相似。

基本堆栈只支持两个操作;推动和流行。push操作将数据添加到堆栈的顶部,递增堆栈指针,而pop递减堆栈指针并返回堆栈顶部的数据。一些依赖于栈的一些操作的环境偶尔会有额外的操作,比如peek(一个不改变堆栈指针的pop操作)、dup(一个pop之后会推两次结果),或者交换(切换到栈顶两个项目的顺序)。

除了堆栈之外,任何处理器都可以存储几块数据,而不必访问系统的内存,尽管存储的数量在处理器之间有所不同。这些存储位置被称为寄存器,虽然有些存储单元可能有特定的用途,但大多数处理器将有几个用于一般用途的通用寄存器(GPRs)。在专用寄存器中,有一个称为程序计数器。这个寄存器保存下一个要执行的指令的内存地址。每当执行指令时,它就会增加,如果没有它,处理器就不知道下一条指令的位置。当一个函数调用发生时,会发生什么?必须保留某种形式的返回地址,以便程序从被调用的函数的位置返回到程序计数器之前所在的位置,这就是堆栈步骤所在的位置。每当调用一个函数时,当前的程序计数器和其他一些数据就会被推到堆栈上,被调用的函数内存地址被输入到程序计数器中。在被调用函数的末尾,旧的程序计数器值被恢复,处理器恢复到它停止的地方。

有人提到,在函数调用期间,额外的数据也会被推到堆栈中。这个数据一定程度上取决于编译器以及处理器可以执行的指令,因为不是所有的处理器都有相同的指令集,当进入一个新的函数,前面的函数的局部变量必须保存恢复,新创建的变量和空间。一些编译器和处理器使用的方法是在函数调用期间将所有GPRs的当前内容推送到堆栈中,然后再恢复它们。这在有“推送所有”指令的处理器中尤其常见,如x86处理器,自80186以来(这是自家庭计算早期以来桌面计算机常见的处理器)。

保存变量和寄存器当前状态的第二种方法是调用函数,只将其实际使用的寄存器的值推到堆栈中。这在内存较小的处理器中是常见的,因此栈的规模较小,例如大多数微控制器。

与堆栈有关的错误有两种类型;下溢和溢出。在这些情况下,暗流并不常见,而且经常出现在软件堆栈中,或者是恶意的结果。当堆栈为空时,试图从堆栈中弹出一个值。另一方面,当试图超过堆栈的最大大小时,会发生堆栈溢出错误。大多数情况下,当有太多函数调用嵌套在一起时,比如使用递归,就会出现这种错误。这个错误可以通过减少函数调用的深度,或者减少每个函数的内存需求来解决。

1.4结论

本章的目的是介绍一些术语,并对微控制器究竟是什么提供了一个非常基本的理解。从这里开始,每一章都将涉及到微控制器的一些方面,它们的编程和它们的更详细的使用。这篇文章的重点是ATmega644p单片机,由Atmel公司生产,因此其他公司的微控制器用户可能需要到别处去了解他们的设备。这篇文章的目标之一就是提供足够的背景,让读者至少能够使用任何Atmel微控制器,并找出其他公司的微控制器。

如果本章所涉及的历史或其他主题有兴趣,有许多资料可供进一步阅读。在谷歌或在当地图书馆的简短搜索应该会引起大量的兴趣。维基百科也是一个很好的原始信息来源,但它必须与公共的可编辑的站点(比如它)一起使用。在大多数维基百科文章的底部有链接可以提供更多的资源。

第二章数据表、特殊功能寄存器和数据库。

在开始深入研究微控制器之前,有几个重要的主题需要学习。这些主题都是紧密相关的,或者直接与微控制器有关,它们应该能更好地理解接下来的章节中究竟发生了什么,以及所呈现的信息是如何产生的。本章分为三个独立部分,每个章节都有自己的一章。

第一部分,数据表,剖析一个示例数据表,并解释其中的各个部分。特殊功能寄存器部分介绍了什么是瑞士法郎,以及如何在一个微控制器上处理它们。本章的最后一节提供了对库的基本理解,以及最常用于编写ATmega644p的程序。

2.1数据表

数据表是包含制造商提供的所有重要信息的文档,它应该回答关于组件的使用和操作的大多数问题。数据表应该是可以直接从制造商或最常见的联机,对于任何电子元件,一个可能希望包括在一个项目。这包括电阻、电容和其他基本的电气元件。

乍一看,数据表似乎有点令人生畏,因为它包含了图表、表格和文本。这是因为数据表提供了关于操作和使用的各种各样的信息。一般情况下,除非在极端条件下使用该组件,但实际需要的信息中只有很小一部分是必需的,但是跟踪重要的信息是读取数据表的技能进入的地方。所讨论的数据表的每个部分都将附带一个来自STMicroelectronics #39; M74HCT08 Quad 2-Input和Gate的示例。

还需要注意的是,没有标准数据表之类的东西。以下信息是常见的,但绝不是总是存在的。此外,可能需要多个文档来获得所需的信息。如果第一个数据表没有信息,继续查找。可能还有其他文档,涉及设备的不同方面或整个设备的通用方面。

2.1.1部件名称

部件名称经常能告诉某人很多信息。除了说明它是什么类型的设备(电阻器、h桥驱动器、传感器等),部件名称还将泄露进一步的信息。在许多ICs的情况下,部件名称将显示该设备在芯片上存在多少副本。例如,包含基本逻辑门的ICs(以及,或者,等等),每个芯片的门通常有4个甚至8个副本。可以从部件名称中收集的其他信息可以包括用于精确的设备的数量,例如模拟-数字转换器(ADC)或数字模拟转换器(DAC)、电压范围(op-amps、ADC、DACs)或max power(电阻器)。这里的教训是,总是要读完整的部分名称,以防其中有一些额外的重要信息。

这个设备的名称指定了许多东西。首先,他的设备包含逻辑门。第二,在设备上有4个独立的门,最后每个门和门都限制在两个输入。而盖茨至少需要两个,但是可以用三个或更多的输入来创建和盖茨。

2.1.2描述和操作

数据表的前几页通常是文本。这些页面描述了设备的功能,以及它的工作原理,包括各种操作的延迟时间、对错误的描述和错误的解释。对于那些不熟悉特定设备的人来说,这应该是最低限度的,而那些不熟悉这种类型的人应该阅读整个部分。

例子

虽然这种描述非常简短,但它提供了与(TTL和NMOS)交互的其他设备的信息。这涵盖了大多数其他的逻辑组件,如果有疑问,也可以检查电气特性。

图2.1:描述部分和门数据表。[18]

2.1.3绝对最大额定参数

大多数数据表将包括这一部分。它列出了设备可以使用的最大电压、电流和可能的温度。超过这些限制可以,而且经常会损坏或损坏设备。

例子

图2.2:绝对最大额定值和门数据表。[18]

最左边的列,符号,是在其他地方用来引用这些参数的。一个直接的例子是输入和输出电压的值。这两个都是VCC,根据表中的第一行,是电源电压。由于电源电压的最大额定电压为7V,输入和输出电压最高可达7.5V。

全文共11702字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[11086],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。