第5章运算程序及数据处理_第1页
第5章运算程序及数据处理_第2页
第5章运算程序及数据处理_第3页
第5章运算程序及数据处理_第4页
第5章运算程序及数据处理_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第 5章章 智能仪器的运算程序和数据处理智能仪器的运算程序和数据处理5.1 常用函数算法1 三角函数的计算 泰勒级数正弦函数 sin(x)2 平方根的算法 1). 牛顿迭代算法原理设 x表示 f(x)=0的根的真值, x0表示根的近似值, h为校正量,则有因此,方程 f(x)=0可写成 f(x0+h)=0。用泰勒级数展开有设余项很小,可以忽略,则即令显然, x(1)是比 x0更精确的根的估计值,重复这个过程,求得更精确的近似值。2). 求 平方根的牛顿迭代法 求 k的平方根,设转化成求方程 的正根,即则n次迭代精度: x(n)与 x(n-1)的尾数之差小于给定的误差值。5.2 测量数据的非数值处理数据结构:指数据之间的相互关系,即数据的组织形式。逻辑结构:数据之间的逻辑关系,通常称为数据结构。存储结构:数据元素在计算机存储器中的表示机器配置。数据结构 线性结构 非线性结构 线性表线性链表堆栈 树图1 数据结构(1) 线性表 是智能仪器中最简单也是最常用的一种数据结构。一个线性表是N个元素为 a1, a2, . an,的集合,各数据元素之间具有线性的位置关系。在比较复杂的线性表中,一个数据元素可以由若干数据项组成,这时数据元素称为记录,含有大量记录的线性表称为文件。(2) 堆栈堆栈是一种特殊形式的线性表,数据写入和读取遵循 “后进先出”的原则,通常是在子程序或响应一个中断保护现场时使用。每个堆栈必须设立一个指针指示栈顶的位置。(3) 队列队列是一种 “先入先出 ”的链式结构的线性表。每个队列必须设置两个指针指示排头和排尾。(4) 线性链表线性链表的存储方式为链式结构。线性链表的数据元素在存储器内可以任意存放,既不要求连续,也不要求按顺序。为了确定数据元素在表中的位置,除了存储元素值之外,还需要一个指针,用以指明下一个元素在存储器中的位置。数据的元素和指针两者组成链表的一个结点。结点 元素值指针FIRST A1 A2 A3 A4 0节点 1 节点 2 节点 3 节点 4一个链表由一个起始指针 FIRST和若干结点组成。一个链表起始指针 FIRST:指向链表的第一个结点。结点 (若干 )元素值指针最后一个元素的指针为 0,表示结束。FREE 0节点 A 节点 B 节点 C为了对链表进行插入或删除,要留出一定的存储空间组成链表,称为自由表或可利用空间。2. 线性表查找技术查找 -检索。就是从内存的数据表中找出某个元素(记录)。一个表有 N个记录,每个记录都有关键项。查表操作就是从表中找出一个关键项与已知的关键字相同的元素(记录)。1) 顺序查找序列查找是从头开始,按顺序把表中元素的关键项逐一的与给定的关键字进行比较。如果比较结果相同,比较元素是找到的元素。如果表的所有元素都比较结果都不相同,则该元素在表中无法找到。适合于无序表,记录不多的情况。例:在一个存储器的线性表中查找一个给定的元素。线性表中每一个元素占两个字节, DPTR存放线性表的首地址, (R2)=线性表的长度, (R0R1)=查找元素,若查找成功,则返回查找元素的地址,存入 DPTR,若查找失败,则返回 FFFF,即 (DPTR)=FFFF。MOV DPTR, #0FFFFH2) 对半查找对于有序表,其数据排列有一定规律,就不必像无序表那样逐个查找,可以采用对半查找。对半查找也叫二分法查找,就是每次截取表的一半,确定查找元素在哪一部分,逐步细分,缩小了查找范围,从而大大加快了查找速度。对半查找要设置两个指针LO:表的低界元素的序号HI:表的高界元素的序号设表中有 N个元素按照从小到大的顺序排列, (LO)=0;(HI)=N-1,则中心元素的序号为式中, X表示小于等于 X的最大整数。计算中心元素的地址(AM)=表首地址 +(MI)ll为数据元素的字节数。根据中心元素的位置找出中心元素,并和查找的元素进行比较,若 X(AM),则选取高半表,修改低界指针 LO(高界指针 HI不变 )。(LO)=(MI)+1若 X=(AM),则查找成功。设在 MCS-51外部数据 RAM中有一个有序表,表长 N小于 256,表首的第一个字节存放表的长度 N值。每一个数据都有 3个数据项 ai、 bi、 ci,它们分别为 1、 2、 1个字节。表的结构如图所示。现在需要根据给定值 X到表中查找等于 X的 ai,如找到,则读出bi, ci,如找不到,则把 X和 X对应的两个数据插入到表中相应的位置上去。说明根据放在 R2中的 X值,从外部数据 RAM的表格中查找等于 X的 ai放在 R2中,如找到,则把 bi放在 R3、 R4中,把 ci放在累加器 A中,并置 CY=0;如找不到,则把对应插入地址送到 DPTR中,并置 CY=1。对半查找程序如下R2JNC说明把 (DPTR)指向的表元素全部向下移动四个字节,然后在(DPTR)处插入 R2, R3, R4, R5的内容。 R1, B中分别存放表末地址的低位和高位。有序表插入子程序如下。3) 直接查表法在表中直接搜索的关键项目或直接由一个简单的计算,可以找到数据。因此要求关键项与数据记录所在的位置或次序有严格的对应关系。这种方法仅适宜于有序表格。 例,为驱动八段数码管显示器 (LED),需要查出欲显示数据的段码。 09的段码按数字的 ASCII顺序排列。这样,可以根据显示数字的 ASCII码,直接从段码表中查出数字的段码,送到显示驱动电路中。说明 (R0)存放欲显示数据的数值, #PORT为 LED显示端口,查到的段码由 #PORT输出。3 链表的插入、删除和查找1) 链表的插入 先判断 FREE指针 = 0 ? 将 Free 指针指向自由表的下一个结点 确定结点 K地址 在新的结点指针域存放 K+1结点地址 在结点 K的指针域写入新结点的指针 存储新 结点数据把自由表中的结点 A插入到离链表结点 K与 K+1之间。步骤为结点 1 结点 2 结点 3 结点 4结点 B 结点 CFRIST 0 FREE 0结点 A2) 链表的删除 确定 k-1结点的地址。 把结点 k+1的地址存入节点 k-1的指针域。 把结点 k指针的原内容存放在 FREE指针域。 把结点 k的地址存放在 FREE的指针域。删除链表中的结点 K,将其放在自由表中,使之成为自由表中的一个结点。步骤为结点 1 结点 2 结点 3 结点 4结点 A 结点 B 结点 CFRISTFREE0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论