基于51单片机压力检测系统设计 - 图文(8)

2019-08-30 21:37

xx本科生毕业设计(论文)

unsigned char Getkeyboard(void) {

unsigned char number = 0; unsigned char i;

//行输入低电平

ROW1=ROW2=ROW3=0;

//如果列输出不全为高,则说明有键按下 if ((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1)) {

//输入011 ROW1=0; ROW2=ROW3=1; for (i=0;i<30;i++); if (COL1==0) return 1; else if (COL2==0) return 2; else if (COL3==0) return 3; else if (COL4==0) return 4; //输入101 ROW2=0; ROW1=ROW3=1; for (i=0;i<30;i++); if (COL1==0) return 5; else if (COL2==0) return 6; else if (COL3==0) return 7; else if (COL4==0) return 8; //输入110 ROW3=0; ROW1=ROW2=1; for (i=0;i<30;i++); if (COL1==0) return 9; else if (COL2==0) return 10; else if (COL3==0) return 11;

第 31 页 共 61 页

xx本科生毕业设计(论文)

}

else if (COL4==0) return 12; //没有检测到列低电平 return 99; } return 99;

第 32 页 共 61 页

xx本科生毕业设计(论文)

5 系统调试

5.1 数据采集调试

压力传感器的数据采集是压力检测系统的关键部分。压力的采集使用电阻应变式压力传感器,将传感器接到相应的端口,观察采集的压力是否正常。由应变片的形变,使得电阻值也随之改变,输出变化后的电压值,经过放大,输送给单片机。从而显示当前的压力大小。分别用已知质量的砝码,物体放置在压力托盘上,观察液晶显示,判断误差是否在可控范围内。如表5.1所示。

表5.1 数据采集结果记录表

序号 1 2 3 4 5 6 7 8 9 10 11 12

被测物体质量(kg)

0.1 0.2 0.5 1.0 1.5 2.0 3.0 4.0 5.0 6.0 7.0 8.0

测量结果(kg)

0.092 0.191 0.490 0.990 1.489 1.988 2.988 3.987 4.986 5.985 6.984 7.984

绝对误差(kg)

-0.008 -0.009 -0.010 -0.010 -0.011 -0.012 -0.012 -0.013 -0.014 -0.015 -0.016 -0.016

引用误差(%)

-0.08 -0.09 -0.10 -0.10 -0.11 -0.12 -0.12 -0.13 -0.14 -0.15 -0.16 -0.16

“测量结果”是用单片机在A/D芯片输出端读取到的转换结果。由结果我们可以看到,使用24位A/D芯片HX711后,本系统的数据采集精度较高,与实际数据偏差值较小。由测量数据与真值,在被测物体质量在较小时,测量结果误差较小,被测物体质量越大,测量误差越大。被测物体质量在0.1~2.0kg时,精度达到9.6g;被测物体质量在2.0~6.0kg时,精度达到12.75g;被测物体在6.0~10kg时,精度达到15.7g。求得该系统精度大概为12g左右,基本满足设计要求。 5.2 数据统计分析调试

连续放置物体于托盘上,按手动存储即可将当前被测物体的实时压力值,保存到系统。存储次数不要超过八次,按键选择数据统计分析功能。程序即调用相应的子程序,开始运行处理数据。计算均值,最值,中位数,众数。首先要将存储后的数据按从小到大排序。均值的计算即将所存储的数据相加求平均值。最值即选中排序后的数组直接读取,输出显示最大(小)值。中位数即选择排序后的中间的数输出,若为奇数个,则从小到大排序后的中间的数即为中位数;若为偶数个,排序后中间的两个数求平均值即为所求中位数。众数求法依次将一个数据与后面的数据进行比较,找出相同的数据,出现次数最多的数据显示输出,显示出现次数,和原数据大小。若有两个数据出现次数相同(出现次数大于1次),则将两个数据全部显示输出。经调试各按键均能准确进行系统

第 33 页 共 61 页

xx本科生毕业设计(论文)

功能选择,各功能也可以实现。 5.3 声光报警调试

程序中已经设定阈值为9.999kg,进入系统主界面后,显示当前阈值为9.999kg,按阈值重设键,界面切换到阈值重设状态,再按左右键选择想要修改的数字,接着按加减键将阈值设为用户想要的值,比如设“2.000kg“,然后放置物体当达到2.000kg时,声光报警模块启动,蜂鸣器发声,LED点亮,则报警调试成功。 5.4 软件调试

在软件调试中,需要先分模块调试软件中的各个子程序,确保每个模块都能正常工作的情况下,再去调试整个软件系统。如果直接调试整个系统,一旦其中某个模块出现问题将会很难发现问题的源头,这将会影响整个系统的调试效率。 1. ADC数据采集程序模块

本系统中,采用ADC模块HX711来获取压力传感器的电压及电流信息。数据采集的精准度将直接影响整个系统的工作精度。进入中断,等待ADC转换结束。定义压力时使用long型,在调试过程中,发现压力只能调到4.23kg左右,再调大就显示乱码,在检查错误发现,是long型的范围不够,数据溢出,将压力修改为UNSIGNED LONG型。 2. 显示模块程序

12864为该系统的液晶,还液晶在KEIL 0XFD编程时有个漏洞,有些汉字不能显示。为了解决问题,上网搜索,找到方法。①下个晓奇工作室出的补丁。②用十六进制编辑软件如HexEdit打开c51.exe,搜索80FBFD,改为80FBFF即可。采用第一种方法,很好解决了问题。将显示模块函数从整个程序中单独取出,进行软件独立调试。在程序中设定LCD显示不同的字符数据,运行程序,观察LCD是否按程序的设定来显示字符,若不是,则重新检查程序编写是否正确,调整程序然后继续检测,直至LCD显示结果符合预定值。 3. 按键交互单元

将按键模块独立出来,给每个按键设定不同的功能,使用LCD显示其按键值,运行程序,按下按键并观察LCD的显示结果是否正常,是否与程序设定的按键值一致,若不一致则调试程序直至按键结果符合预定值。 5.5 实物展示

本系统硬件最终实物图如下图5.1所示。

第 34 页 共 61 页

xx本科生毕业设计(论文)

图5.1 整体系统实物

以下是系统主要模块的详细特写图。如下图5.2所示。

(a)数据采集模块 (b)单片机系统 (c)矩阵键盘模块

图5.2 系统主要模块特写图

系统开机后,会进入主菜单界面,如下图5.3所示。

第 35 页 共 61 页


基于51单片机压力检测系统设计 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:廉洁文化进校园活动总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: