当前位置: 首页 > news >正文

pic单片机效率探讨,打包pic单片机A/D转换数据

pic单片机作用宽泛,对于pic单片机,大家已不再像若干年前一样一无所知。随着对pic单片机的使用,大家的pic单片机应用技能逐渐增强、熟练度逐步提高。但是,大家仍会碰到一些pic单片机相关问题。本文中,小编将介绍如何将pic单片机A/D转换数据打包,以达到减少空间、提高效率的目的。如果你对本文内容具有一定兴趣,不妨继续往下阅读哦。

一、引言

PIC 单片机A/D 转换后的数据通常需要占用两个8 位宽的RAM 单元, 而PIC 单片机的存储单元有限,因此造成了单片机的存储单元不能被有效利用, 同时通过串口向上位机传送数据时也需要花费较多的时间。

在由单片机和PC 机构成的检测系统中, 通常会由多个单片机采集数据并将经过A/D 转换的数据通过串口送往上位PC 机进行数据处理。PIC 单片机A/D 转换后的结果大多是8 位或10 位的, 8 位的A/D转换不涉及该问题。以10 位的数据为例, 在单片机内进行存储时需要占用2 个8 位的字节, 低8 位和高2位分别存储在2 个字节中, 但是用于存储高位数据的8 位宽的RAM 单元中仅有2 位是有效数据。

单片机的存储空间有限, 以单片机为例, RAM 数据存储器按功能分为通用寄存器和特殊功能寄存器两个部分, 除去特殊功能寄存器外, 仅有368 个8 位宽的RAM 单元, 单片机能够存储的数据量很有限。假设将每次A/D 转换的数据直接存储, 每个数据都要占用2 个字节, 理想状态下也只能存储184 个数据; 假设需要存储100 个A/D 转换的数据, 就要占用200 个字节的单元, 这样的存储方式并未将单片机的存储空间充分利用, 同时, 如果将A/D 转换后的数据通过串口直接上传, 串口就要向上传送200 帧的数据, 有效传输速率比较低, 没有充分利用数据帧中的数据位。为此,本文提出如下方法将A/D 转换后的数据先进行处理后再存储或上传。

二、程序设计思路

以10 位的A/D 转换为例, 可以将A/D 转换的结果暂存在a[size] 中, 然后把数组a 中的数据一位一位地取出, 把低8 位和高8 位拆开分别存放, 低8 位存放在数组b 中, 高8 位存放在数组c 中, 由于高8 位的数据中只有2 位是有效数据, 我们可以把有效数据取出组合成一个新的数据存放, 当上传数据后再用相反的方法解码, 把数据恢复到原先的状态。这样对于10 位的A/D 转换来说可以节省3/8 的空间, 需要向上位机传送的数据也会比较少, 数据传输时间仅为原来的5/8。

三、采用C 语言编写的程序

本文采用PIC16F877 单片机进行试验。其中定义i、h、j、n、m 为int8, a[size] 为int16 的数组, 用于暂存A/D 转换的结果; b[number]、c[number]、d[number] 是int8 的数组。程序原文如下:

void convert ()

{

h= j;

for ( i= 0 ; i< size ; i+ + )

{

b[h+i]= a[i];

c[i] = (a[i]>> 8)&0x03;

j++ ;

}

m= n;

for ( i= 0 ; i< size/4 ; i+ + )

{

d[m+i]= (c[4*i]<< 2) |c[4*i+ 1 ];

d[m+i]= (d[m+i]<< 4) |(c[4*i+ 2 ]<< 2) ;

d[m+i]= d[m+i]|c[4*i+3];

n++ ;

}

}

程序首先利用一个for 循环将A/D 转换后的数据拆开, 将低8 位存放在数组b 中, 高2 位暂时存放在数组c 中。由于数组c 中的8 位二进制数据都是仅有低2 位是有效数据, 所以第二个for 循环将c[i]、c[i+1]、c[i+2]、c[i+3]中的2 位有效数据取出, 按照由低到高的顺序重新组合成一个8 位的二进制数,放入数组d, 构成一个新的数组。这样A/D 转换结果由原来用数组a 表示变成了由数组b 表示低8 位、数组d 表示高2 位的状态。

程序中的h、j、n、m 用于记录最后转换的数据存储在数组的位置, 在下一次转换的时候, 数据可以接在上一次的数据后面, n 和j 在主程序中convert ( ) 被调用之前首先被赋值为0。

四、结论

根据以上程序, 我们可以按照类似的方法把12 位的A/D 转化结果进行组合, 将12 位的A/D 转换结果拆成低8 位和高4 位, 再将2 个高4 位重新组合成一个8 位的二进制数存储, 这样对于12 位的A/D 转化结果可以节省1/4 存储空间, 缩短1/4 传输时间。

该程序的执行时间仅为990us, 相对于数据的传输时间是很小的。在单片机空间小的情况下, 以程序的执行时间来换取单片机的存储空间是值得的。同时又能有效地缩短数据的上传时间, 提高有效数据的传输速率。但是在数据量较少的时候, 比如只有1 个A/D 转换的数据, 这样做反而会耗费时间、降低效率。

http://www.jsqmd.com/news/341073/

相关文章:

  • [STM32L5] 【STM32L562E_DK开发板】--4.LCD显示
  • 2026年卡西欧手表批发公司排名中靠谱的品牌有哪些值得推荐 - 工业品网
  • 小户型如何实现高级定制感?2026年全屋定制品牌推荐与排名,直击预算与效果痛点 - 品牌推荐
  • 2026年靠谱的卫浴家具五金/全屋家具五金厂家推荐及采购指南 - 品牌宣传支持者
  • 向量数据库_Zvec
  • 2026 最新云南/昆明房屋/写字楼/卫生间/工程/厨房堵漏维修公司TOP5评测!专业技术+全场景服务权威榜单发布,守护建筑防水安全 - 品牌推荐2026
  • wps的翻译功能需要收费,如何破解?
  • 2月3日
  • AI写论文必看攻略!4款AI论文生成工具,让论文写作不再难!
  • 丝芭马年新春活动:各地春晚活动齐开花,人文关怀凝聚温暖力量 - 博客万
  • 新手必看!微信立减金回收入门全攻略 - 团团收购物卡回收
  • 2026年溧阳好用的实木箱包装厂家推荐,靠谱生产商有哪些 - mypinpai
  • 2026年口碑好的上海地砖LED显示屏/LED显示屏厂家推荐及选择参考 - 品牌宣传支持者
  • 2026年可靠的亚克力制品/亚克力加工厂家选购指南与推荐 - 品牌宣传支持者
  • 2026年广东聚氨酯平板大型厂家排名,哪家性价比高值得推荐 - 工业推荐榜
  • 如何做出改变?个人成长与职业发展的实用指南
  • Win8一键安装PHP环境工具推荐,快速搭建本地开发测试平台
  • 2026年2月权威榜单:设计美学与生活品质双重维度推荐的全屋定制品牌Top10 - 品牌推荐
  • 总结资质齐全的方志馆设计企业,诚信知名的公司选哪家 - mypinpai
  • 不同场景微信立减金处理技巧,闲置、自用皆有妙招 - 团团收购物卡回收
  • 2026年360全包围汽车脚垫正规供应商推荐,广州车百强 - 工业设备
  • 2026年常州口碑好的木箱包装厂商推荐,专业按需定制企业全解析 - myqiye
  • 2026年江苏软件开发实力厂家推荐榜:小程序开发、APP开发专业服务商深度解析与口碑优选 - 品牌企业推荐师(官方)
  • 2026年热门的亚克力展示架/高端美妆亚克力展示架最新TOP厂家排名 - 品牌宣传支持者
  • 2026年塑料超声波焊接机国内厂家口碑排名,声科智能优势凸显 - 工业推荐榜
  • 2026 最新云南昆明防水材料推荐:房屋/写字楼/卫生间/工程/厨房场景TOP5品牌评测!专业品质守护建筑防水安全 - 品牌推荐2026
  • 2026年口碑好的有机肥/堆肥技术有机肥最新TOP厂家排名 - 品牌宣传支持者
  • 探讨聚氨酯异形件来图定制,四川地区专业厂家有哪些 - 工业品网
  • 选购木箱包装,常州哪家制造厂值得选,专业经验来支招 - 工业品牌热点
  • 日志禁用提示原因与启用方法