测控系统课程设计电子压力测量仪

上传人:公**** 文档编号:563380661 上传时间:2023-05-25 格式:DOC 页数:16 大小:1.25MB
返回 下载 相关 举报
测控系统课程设计电子压力测量仪_第1页
第1页 / 共16页
测控系统课程设计电子压力测量仪_第2页
第2页 / 共16页
测控系统课程设计电子压力测量仪_第3页
第3页 / 共16页
测控系统课程设计电子压力测量仪_第4页
第4页 / 共16页
测控系统课程设计电子压力测量仪_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《测控系统课程设计电子压力测量仪》由会员分享,可在线阅读,更多相关《测控系统课程设计电子压力测量仪(16页珍藏版)》请在金锄头文库上搜索。

1、电子压力测量仪08电子(2)倪传笑XB08610211一摘要 在工业生产控制过程中,压力是一个很重要的参数。比如利用测量大气压力来间接测量海拔高度,在工业生产中测量压力参数来判断反应的过程,在气象预测中,也需要测量大气压力来判断阴雨天气等等。所有这些都需要掌握测量压力,所以压力表的设计拥有广阔的市场前景。本课题就是基于此原因设计的一个简单压力计。本课程设计用MPX4115传感器来检测压力参数,ADC0808进行模数转换后,利用AT89C52进行数据处理后,由键盘设置测量量程,用发光二级管显示当前测量量程送液晶显示压力值。本系统可根据需要进行功能扩展。由于ADC0808支持8路信号采集,可以对8

2、个压力点参数进行检测。可以手动设置采集哪一路,或者循环采集。还可以进行压力上下限报警。在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的时候使用。二系统功能要求介绍1、 系统总体性能压力计以AT89C52为核心,进行数据的处理和显示,并进行显示量程的切换。压力测量采用MPX4115,利用ADC0808实现A/D转换,由键盘设置量程转换,并且用发光二极管显示当前的量程。2、 功能介绍压力计的测量量程在15KPA115KPA,精度在0.5级。利用16X1字符型LCD显示和提示操作。利用按键进行量程转换。具体为XXXX KPA和XXXX KPA 。三系统软件设计 系统主程序在初始化后只

3、进行按键扫描,利用定时器T0定时5S启动AD转化,即采样周期是5S。当AD转换完成后进入外部中断INT0服务程序,进行数据的处理,刷新显示的压力值;当采用两位量程时,若检测到压力值=100,提示超过量程“OVER!”,需要转换量程。1、 系统程序整体流程图系统的整体程序流程图如下所示:主程序在完成开机LOGO显示、压力值初始化显示、TO及INT0中断初始化后进入死循环,在循环中进行按键扫描,切换量程。等待T0中断启动AD转换;转换完成后进入外部中断INT0进行数据的处理、分析、显示。2、 按键子程序流程图 按键子程序进入后首先对显示模式进行修改,即在两位整数和三位整数显示之间进行切换。若是两位

4、整数模式则先判断是否超过量程(压力值是三位数整数),超过量程则显示“OVER!”提示转换量程。若是三位整数模式则直接刷新数据后显示。3、 T0中断服务程序流程图T0中断服务子程序如下图所示: T0定时器定时50ms,即每50ms进入T0中断,在中断中增加time5s_count计时器,每次进入T0中断后time5s_count加1,当加到100后表示5s到,清零同时启动ad转换。4、 外部中断INT0流程图外部中断INT0服务程序流程图如下所示:当ADC0808完成AD转换后,EOC变高,经反相器后接单片机INT0口,下降沿启动INT0中断。在中断中首先读取转换后的数字量,再进行标度换算成压力

5、值,完成数据的刷新。四系统硬件电路设计1、系统总体框图以AT89C52为核心,外围电路有信号采集MPX4115,AD转换电路ADC0808、按键和显示液晶模块。总体框图如下:2、压力测量电路 压力测量使用摩托罗拉公司的MPX4115传感器,采集电路以此为核心,为了克服干扰,在MPX4115输出电路中增加了RC滤波电路。如下图所示:3、 系统总体仿真电路压力计检测系统在PROTUES仿真的硬件电路如下所示:MPX4115的输出的电压信号0.2V-0.5V送至ADC0808的0通道,AD转化后的8位数字信号送给单片机P1口,经单片机分析处理数据后经P0口送液晶显示。按键控制量程的转换,00.00-

6、99.99KPA和100.0-115.0KPA两个量程,显然整数是两位时的现实精度高。红色LED亮表示此时的量程为00.00-99.99KPA,黄色LED亮表示此时的量程为100.0-115.0KPA。显示界面利用16X1的字符型液晶LM020L进行显示,相比LED显示能显示更多的内容,人机界面更友好,而且节省单片机硬件资源。五 系统调试及性能分析1、 数字量到压力值的标度变换MPX4115压力传感器检测的范围是15KPA-115KPA,输出电压信号0.2V-4.8V。ADC0808的参考电压VREF+=5V,VREF-=0V。则(0V-5V)对应(0-255),(0.2V-4.8V)对应(1

7、0-246)。如下图所示:2、 系统最小分辨率即当压力值变换了0.424KPA系统便能检测到。3、 系统PROTUES仿真运行图开机LOGO画面,显示“WELCOME! GOOD!”两位整数模式压力值正常显示: 两位整数模式超量程显示: 三位整数模式显示1:三位整数模式显示2:六总结这次课程设计经历了一周的时间,其中遇到了许多的麻烦和困难,但是都一一解决了,通过发现问题、分析问题、解决问题,我又学到了许多新的知识,而且这些知识都是在书本中的抽象理论中很难明白的,必须在工程实际应用才能够有切身的体会。在确定课题后,设计有要求量程切换,这是在以前书本中都不曾提过的应用,我们根据现实生活中,和在实验

8、室接触的仪表中,将量程切换定义为:小量程(XXXX)现实到小数点百分位,大量程(XXX.X),虽然整数可以显示到百位,但是只能够显示到小数点十分位,这样就没有小量程显示准确了。在按键子程序中要达到量程转换的目的,定义一个位变量,KEY_COUNT,每次按键后,KEY_COUNT先取反,再判断KEY_COUNT的值,若是0表示的是两位整数显示模式,1则表示三位整数显示的模式。显示环节中,我们也犯了很大的错误,小数点一直显示 ,显示不正确。我们一直在排查,前几天都没有成功。最后还是发现在写小数点的时候用的是WRITE_NUMBER(.,8),而WRITE_NUMBER(UCHAR DAT,UCHA

9、R ADD)是用来显示数字的,DAT即十进制数字09,在函数中,首先将0X30+DAT即得数字的ASCII码,我们原先在写小数点的时候用WRITE_NUMBER(.,8)显然得到的是小数点的ASCII码+0X30后的ASCII码,这个码刚好是的码值。我们就改成WRITE_COM(0X80+8); WRITE_DATA(.);两条语句,显示正确。所以做事还是要细心。 在AD转换后数据怎么读取上我们小组也存在着很大分歧。我的同学说AD转换需要100US,那么我们就在启动转换后延时几MS去读就OK了,简单方便;也有同学说用查询法,EOC在转换期间一直是低电平,转换完成后变高,那么我们就在启动转换后用

10、WHILE(!EOC)等待转换完成,这样也省事;也有的说用外部中断。最后大家经过讨论,本着节省CPU时间资源和学习的目的,决定使用中断法。 通过这次课程设计,我学到了许多知识,这些知识都是在实践中才能够点滴积累的。通过调试BUG,才能够发现问题、解决问题,并在解决问题中我新的收获。同时,尤其是做技术性的事情,一定的有团队合作的精神,一个人的力量是有限的,而且许多时候会进入死胡同,或许别人一看就能发现问题的本质。大家一起学习。七参考程序源程序如下:基于MPX4115的压力计设计 输入压力信号15115KPA,输出0.24.8V电压信号AD转换采用ADC0808,05V对应00HFFH0.24.8

11、V对应AH(10)F5H(246)标度变换PRESSURE=(115-15)/(246-10)*(B-10)+15 VERSION:0.01 #INCLUDE#INCLUDE#DEFINEUCHAR UNSIGNED CHAR#DEFINE UINT UNSIGNED INT#DEFINE DATAPORT P0 /数据端口SBIT BUSY=P07;SBIT ADC_CS=P20;SBIT LCD_RS=P21;SBIT LCD_RW=P22;SBIT LCD_E=P23;SBIT LED1=P24;/两位数,XX.XX,默认两位数SBIT LED2=P25;/三位数,XXX.XSBIT K

12、EY=P26; /量程转换SBIT ADC_OE=P27;BIT KEY_COUNT;/量程表示,0两位,1三位UCHAR TIME5S_COUNT;UCHAR PRESS_BAI;UCHAR PRESS_SHI;UCHAR PRESS_GE;UCHAR PRESS_DOT1;/十分位UCHAR PRESS_DOT2;/百分位UCHAR K;/量程转换的放大倍数,两位100,三位10UINT TEMP;FLOAT PRESS;UCHAR CODE STR0_0=WELCOME! GOOD!;/开机LOGO(15)UCHAR CODE STR0_1=PRESS: KPA!;/正常显示检测(14)

13、UCHAR CODE STR1=OVER!;/超过了满量程VOID DELAY(UCHAR X)UCHAR Y,Z;FOR(Y=X;Y0;Y-) FOR(Z=110;Z0;Z-);/*=注意:后8个字符的地址是从80+40开始的=*/检测LCD忙函数VOID CHECK_BUSY()DODATAPORT=0XFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;/相当于_NOP_()LCD_E=1;WHILE(BUSY=1);/LCD写命令VOID WRITE_COM(UCHAR COM)DATAPORT=COM;LCD_RS=0;/命令LCD_RW=0;/写LCD_E=0

14、;CHECK_BUSY();/判断LCD是否忙碌LCD_E=1;DELAY(1);/LCD_E=0;/LCD写数据VOID WRITE_DATA(UCHAR DATE)DATAPORT=DATE;LCD_RS=1;/数据LCD_RW=0;/写LCD_E=0;CHECK_BUSY();LCD_E=1;DELAY(1);/写显示一个字符函数VOID WRITE_NUMBER(UCHAR DAT,UCHAR ADD)/形参:显示数据,显示地址WRITE_COM(0X80+ADD);/显示数据的地址WRITE_DATA(0X30+DAT); /送数字ASCII码 VOID DISP_INIT()UCHAR I;ADC_OE=0;WRITE_COM(0X01);/清屏并光标复位WRITE_COM(0X30);/设置8位、2行、5*7点阵/WRITE_COM(0X0F);/显示开,允许闪烁WRITE_COM(0X0C);/光标不显示,不闪烁WRITE_COM(0X14);/文字不动,光标自动右移WRITE_COM(0X80);/显示起始地址FOR(I=0;I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号