历史上的今天
今天是:2025年02月18日(星期二)
2019年02月18日 | 【单片机笔记】代码中非线性表快速转换成数组的实用方法
2019-02-18 来源:eefocus
很多情况下在电子开发的过程中需要用到非线性表,根据厂家提供的表格用MCU测量ADC数值进行转换得到传感器的测量值,在此记录一下目前一个实用的方法,以下以温度探头传感器的非线性表为例:
厂家提供的是一个PDF表格,如图:


很多时候很头疼怎么把这些有效的数据给取出放在代码中使用
1、首先度娘搜索PDF在线转换,提供一个比较好的网址:http://app.xunjiepdf.com/pdf2excel
这里面有PDF转各种格式,为了更好的得到数据,我用PDF转EXCEL表格的形式
上传需要转换的PDF文档,在线转换,得到转换后的EXCEL表格并下载下来如下图:

打开表格后每个PDF页都转换成了表格形式,文字形式不重要,重要的是数据。如图所示:

再次我取典型值,(最大值和最小值可以忽略,应个人需求而定)
在表格中典型值后面的一列我把数据扩大100倍,并且把小数点去掉,目的是让数据成为整形,也同时提高精度。MCU中存储浮点数消耗的内存空间很大,并且在后期查找数值表的过程中整形的数据查找效率是要高上很多的。(如果不理解可以恶补一下相关知识)。把需要的数据扩大后复制到一个新建的txt中,这样做的目的是为了去除EXCEL中的格式问题,复制到txt就没有格式了,如果直接把这些数据在EXCEL中赋值是带格式赋值的,也就是赋值的不是数据,而是一堆格式。
需要数据赋值在txt中后,会发现格式还存在一些问题。
如下图



需要数据赋值在txt中后,会发现格式还存在一些问题。,这就需要另一个文档编辑器来辅助一下:Notepad+
这个可以用来编程,当然我更多的使用它是用作查看代码。
操作的方式是Ctrl+H(替换),根据图示的参数来替换(也就是把换行符("\r\n")替换成","),要注意一点是输入法一定要是英文输入法,这样才不会带代码中报错。
一下是替换之后的数据如图:


会发现这个全部是一行,(因为我开启了自动换行所以才呈现出多行)。
这下就可以根据自己的习惯手动键入换行了,比如我这里以每行10个数据,完成之后如下图:

注意最后一个数据后面的","需要去掉!
好了这个数据及格式就弄好了,然后再在代码里面声明一个数组用来存储。如下图所示:

这里注意两点:
1、数据类型的问题,根据数据的大小来确定数据类型,这里数据的范围是0-65535之间,很容易就可以确定是无符号整形(unsigned int)
2、数据存数形式问题,因为这些数据一般是不会做改变的,也就是就使用来读取的,这样的话就可以不用存到RAM里面而存到FLASH里面,RAM的空间是很小的,而FLASH还是比较大的。
以上就是完整的过程。
史海拾趣
|
德州仪器达芬奇五年之路七宗罪,嵌入式处理器架构之争决战2012(三) 2008年,注定是不平凡的一年。 TI或许已经意识到了在中国这样一个神奇的土地上,有这样一个潜规则,那就是只有硬件是可以卖钱的,硬件上跑的所有东西你都要送我。于是TI开始做出这样一个决定,Linux内核维护从以MonvtaVista为主树转移到以自己维护 ...… 查看全部问答> |
|
我是刚接触使用WINDOWS ce的新手,我的要求是XP如何与WINDOWS CE通过交换机连接,我现在可以在XP的电脑上PING通WINDOWS CE电脑上的IP,我需要怎么做才可以看到WINDOWS CE上的数据.因为我太需要WINDOWS ce上的数据文件, 麻烦 ...… 查看全部问答> |
|
首先谢谢EEWORLD,ADI,也特别谢谢SOSO姐 。 之前提交的方案,系统比较复杂,时间有限到目前为止完成了部分功能,还没有完全做完,先汇报下一些硬件原理一些相关的。采用双CIS(Contact image sensor)采集的模拟信号经过运放放大到AD的采样的合适 ...… 查看全部问答> |
|
刚刚开始接触fpga,用quartus11.1,报错: Error (199067): Quartus II software currently does not support the generation of timing analysis netlists for Cyclone IV E device family Error: Quartus II 64-Bit EDA Netlist Writer was uns ...… 查看全部问答> |
|
接上一个帖子https://bbs.eeworld.com.cn/thread-489163-1-1.html 上一个程序我们更改了python的main文件,其实可以用更简单快捷的方式完成,即通过串口编辑程序控制LED及其他。你说什么?不信,往下看 Python就是这么任性,把之前的代码在串口 ...… 查看全部问答> |




