您好, 访客   登录/注册

利用单片机进行复杂函数计算的一种高精度算法

来源:用户上传      作者: 逯伟

  摘 要: 单片机在移动设备中的应用越来越广泛,要求单片机具备的数据处理能力越来越强。但单片机的资源有限,如何让其能够解算复杂函数变得非常具有实际意义,也成为困扰许多专家的难题之一。介绍了一种在汇编环境下如何利用插值法与查表法相结合进行复杂三角函数运算的方法。利用这种算法可使三角函数的解算精度达到0.000 1,存储空间减小了97%, 对有关内容进行了比较全面的阐述。此方法计算精度高、应用范围广、易掌握。
  关键词: 单片机; 复杂函数计算; 插值法; 查表法
  中图分类号: TN710?34 文献标识码: A 文章编号: 1004?373X(2013)17?0163?02
  0 引 言
  在各种测量及控制中,通常都要求仪器体积小、便携,所以单片机在测量仪器中的应用日益广泛。现代工业仪器智能化要求越来越高,对复杂三角函数的计算量越来越大,以目前单片机所具有的资源和技术能力,要想达到上述要求,对技术人员的编程技巧要求是非常高的,工作量也非常庞大。基于以上原因,目前特别需要研究出一种对单片机资源要求低,易编程,又能保证很高计算精度要求的算法。
  1 单片机处理数据的常见方法
  单片机处理数据的方法有两种:浮点数和定点数。浮点数数据运算在汇编环境下编程复杂、运算量大,对内存容量要求高,且对单片机的运算速度有很高要求,这样普通51系列单片机无法满足复杂函数的计算。定点数在数据运算中运算量较小,编程简单,速度快,但是精度低,如何做到既不降低计算精度又能保证数据处理速度,成为复杂函数在51单片机使用技术中的一个难点。
  2 基本原理
  求解三角函数采用的是综合运用数学中的插值法和查表法。
  单纯使用查表法求解三角函数值时,如果把0~90°每隔0.01°的函数值都存储在列表中,需要存9 000个函数值,一个函数值占两个字节,9 000个函数值就是18 000 B,如果精度要求更高所需的字节更大,程序非常庞大,还要占用很大的内存空间,一般51系列单片机的内存已不能满足要求,必须进行存储器扩展,这样势必加大成本,增大体积和功耗。所以单纯查表法求解三角函数计算精度就不能够要求太高,否则占用存储空间太大。
  利用插值法加查表法则既扩大了查表范围,又不占用很大内存,在表格中只存放小部分函数值,其他函数值利用其相邻两个函数值,通过插值计算来得到,插值计算采用定点数运算,计算速度比较快,编程简单。
  3 结 语
  该算法大大节省了单片机的存储器空间,提高了运算速度,且精度相当高。这种算法也可用于余弦、正切、余切或其他函数计算,只需将公式中的参数做相应变动即可。特别适用于在低成本单片机上使用,该算法已应用到89C51单片机上,该单片机只有2 KB的存储容量,计算精度达到了1/10 000。使用这种单片机可以降低设备的成本,提高产品竞争力。所以这种算法,具有很好的推广前景。
  参考文献
  [1] 陈章龙.使用单片机大全[M].哈尔滨:黑龙江科技出版社,1988.
  [2] 张友德.单片机微型机原理应用与实验[M].上海:复旦大学出版社,1992.
  [3] 张毅刚.MCS?51单片机应用设计[M].2版.哈尔滨:哈尔滨工业大学出版社,2004.
  [4] 徐瑞华.单片机原理与接口技术[M].北京:人民邮电出版社,2008.
  [5] 白其峥.数学建模案例分析[M].北京:海洋出版社,2000.
  [6] 李火林.数学模型及方法[M].南昌:江西高校出版社,1997.
  [7] 陈理荣.数学建模导论[M].北京:北京邮电大学出版社,1999.
  [8] 丁丽娟.数值计算方法[M].北京:北京理工大学出版社,1997.
  [9] 刘满仓,雷卫宁,王春成.基于ARM的高精度数据采集系统设计[J].现代电子技术,2012,35(8):12?14.
  [10] 郎杰,邹建彬,张尔扬.基于FPGA的高精度相位差测量算法实现[J].现代电子技术,2011,34(11):28?30.
  作者简介:逯 伟 女,陕西西安人,中级职称。主要研究方向为光电数据处理。
转载注明来源:https://www.xzbu.com/8/view-4586880.htm