测控系统课程设计---电子压力测量仪.doc_第1页
测控系统课程设计---电子压力测量仪.doc_第2页
测控系统课程设计---电子压力测量仪.doc_第3页
测控系统课程设计---电子压力测量仪.doc_第4页
测控系统课程设计---电子压力测量仪.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 电子压力测量仪电子压力测量仪 08 电子(电子(2) 倪传笑倪传笑 xb08610211 2 一摘要一摘要 在工业生产控制过程中,压力是一个很重要的参数。比如利用测量大气压 力来间接测量海拔高度,在工业生产中测量压力参数来判断反应的过程,在气 象预测中,也需要测量大气压力来判断阴雨天气等等。所有这些都需要掌握测 量压力,所以压力表的设计拥有广阔的市场前景。本课题就是基于此原因设计 的一个简单压力计。 本课程设计用 mpx4115 传感器来检测压力参数,adc0808 进行模数转换后, 利用 at89c52 进行数据处理后,由键盘设置测量量程,用发光二级管显示当前 测量量程送液晶显示压力值。 本系统可根据需要进行功能扩展。由于 adc0808 支持 8 路信号采集,可以 对 8 个压力点参数进行检测。可以手动设置采集哪一路,或者循环采集。还可 以进行压力上下限报警。 在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的 时候使用。 二系统功能要求介绍二系统功能要求介绍 1、系统总体性能系统总体性能 压力计以 at89c52 为核心,进行数据的处理和显示,并进行显示量程的切 换。压力测量采用 mpx4115,利用 adc0808 实现 a/d 转换,由键盘设置量程 转换,并且用发光二极管显示当前的量程。 2、功能介绍功能介绍 压力计的测量量程在 15kpa115kpa,精度在 0.5 级。利用 16x1 字符型 lcd 显示和提示操作。利用按键进行量程转换。具体为 xxxx kpa 和 xxxx kpa 。 三系统软件设计三系统软件设计 系统主程序在初始化后只进行按键扫描,利用定时器 t0 定时 5s 启动 ad 转化,即采样周期是 5s。当 ad 转换完成后进入外部中断 int0 服务程序,进 行数据的处理,刷新显示的压力值;当采用两位量程时,若检测到压力值 =100,提示超过量程“over!” ,需要转换量程。 3 1 1、系统程序整体流程图系统程序整体流程图 系统的整体程序流程图如下所示: 主程序在完成开机 logo 显示、压力值初始化显示、to 及 int0 中断初始 化后进入死循环,在循环中进行按键扫描,切换量程。等待 t0 中断启动 ad 转 换;转换完成后进入外部中断 int0 进行数据的处理、分析、显示。 2 2、按键子程序流程图按键子程序流程图 按键子程序进入后首先对显示模式进行修改,即在两位整数和三位整数显 示之间进行切换。若是两位整数模式则先判断是否超过量程(压力值是三位数 整数) ,超过量程则显示“over!”提示转换量程。若是三位整数模式则直接刷 新数据后显示。 3 3、t0t0 中断服务程序流程图中断服务程序流程图 t0 中断服务子程序如下图所示: 4 t0 定时器定时 50ms,即每 50ms 进入 t0 中断,在中断中增加 time5s_count 计时器,每次进入 t0 中断后 time5s_count 加 1,当加到 100 后表示 5s 到,清 零同时启动 ad 转换。 4 4、外部中断外部中断 int0int0 流程图流程图 外部中断 int0 服务程序流程图如下所示: 当 adc0808 完成 ad 转换后,eoc 变高,经反相器后接单片机 int0 口,下降沿 启动 int0 中断。在中断中首先读取转换后的数字量,再进行标度换算成压力值, 完成数据的刷新。 四系统硬件电路设计四系统硬件电路设计 1 1、系统总体框图、系统总体框图 以 at89c52 为核心,外围电路有信号采集 mpx4115,ad 转换电路 5 adc0808、按键和显示液晶模块。总体框图如下: 2 2、压力测量电路、压力测量电路 压力测量使用摩托罗拉公司的 mpx4115 传感器,采集电路以此为核心,为 了克服干扰,在 mpx4115 输出电路中增加了 rc 滤波电路。如下图所示: 3 3、系统总体仿真电路系统总体仿真电路 压力计检测系统在 protues 仿真的硬件电路如下所示: 6 mpx4115 的输出的电压信号 0.2v-0.5v 送至 adc0808 的 0 通道,ad 转化后 的 8 位数字信号送给单片机 p1 口,经单片机分析处理数据后经 p0 口送液晶显 示。 按键控制量程的转换,00.00-99.99kpa 和 100.0-115.0kpa 两个量程,显 然整数是两位时的现实精度高。红色 led 亮表示此时的量程为 00.00-99.99kpa,黄 色 led 亮表示此时的量程为 100.0-115.0kpa。 显示界面利用 16x1 的字符型液晶 lm020l 进行显示,相比 led 显示能显示 更多的内容,人机界面更友好,而且节省单片机硬件资源。 五五 系统调试及性能分析系统调试及性能分析 1 1、 数字量到压力值的标度变换数字量到压力值的标度变换 mpx4115 压力传感器检测的范围是 15kpa-115kpa,输出电压信号 0.2v-4.8v。adc0808 的参考电压 vref+=5v,vref-=0v。则(0v-5v)对应(0-255) , (0.2v-4.8v)对应(10- 246) 。 如下图所示: 7 2 2、 系统最小分辨率系统最小分辨率 即当压力值变换了 0.424kpa 系统便能检测到。 3 3、 系统系统 protuesprotues 仿真运行图仿真运行图 开机 logo 画面,显示“welcome! good!” 8 两位整数模式压力值正常显示: 两位整数模式超量程显示: 9 三位整数模式显示 1: 三位整数模式显示 2: 六总结总结 10 这次课程设计经历了一周的时间,其中遇到了许多的麻烦和困难,但是都 一一解决 了,通过发现问题、分析问题、解决问题,我又学到了许多新的知识,而且这 些知识都是在书本中的抽象理论中很难明白的,必须在工程实际应用才能够有 切身的体会。 在确定课题后,设计有要求量程切换,这是在以前书本中都不曾提过的应 用,我们根据现实生活中,和在实验室接触的仪表中,将量程切换定义为:小 量程(xxxx)现实到小数点百分位,大量程(xxx.x) ,虽然整数可以显示到 百位,但是只能够显示到小数点十分位,这样就没有小量程显示准确了。在按 键子程序中要达到量程转换的目的,定义一个位变量,key_count,每次按键后, key_count 先取反,再判断 key_count 的值,若是 0 表示的是两位整数显示模 式,1 则表示三位整数显示的模式。 显示环节中,我们也犯了很大的错误,小数点一直显示 ,显示不正确。 我们一直在排查,前几天都没有成功。最后还是发现在写小数点的时候用的是 write_number(.,8),而 write_number(uchar dat,uchar add)是用来 显示数字的,dat 即十进制数字 09,在函数中,首先将 0x30+dat 即得数字的 ascii 码,我们原先在写小数点的时候用 write_number(. ,8)显然得到的 是小数点的 ascii 码+0x30 后的 ascii 码,这个码刚好是的码值。 我们就改成 write_com(0x80+8); write_data(.);两条语句,显示正确。所 以做事还是要细心。 在 ad 转换后数据怎么读取上我们小组也存在着很大分歧。我的同学说 ad 转换需要 100us,那么我们就在启动转换后延时几 ms 去读就 ok 了,简单方 便;也有同学说用查询法,eoc 在转换期间一直是低电平,转换完成后变高, 那么我们就在启动转换后用 while(!eoc)等待转换完成,这样也省事;也 有的说用外部中断。最后大家经过讨论,本着节省 cpu 时间资源和学习的目的, 决定使用中断法。 通过这次课程设计,我学到了许多知识,这些知识都是在实践中才能够点 滴积累的。通过调试 bug,才能够发现问题、解决问题,并在解决问题中我新 的收获。同时,尤其是做技术性的事情,一定的有团队合作的精神,一个人的 11 力量是有限的,而且许多时候会进入死胡同,或许别人一看就能发现问题的本 质。大家一起学习。 七参考程序七参考程序 源程序如下: 基于 mpx4115 的压力计设计 输入压力信号 15115kpa,输出 0.24.8v 电压信号 ad 转换采用 adc0808,05v 对应 00hffh 0.24.8v 对应 ah(10)f5h(246) 标度变换 pressure=(115-15)/(246-10)*(b-10)+15 version:0.01 #include #include #define uchar 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.x sbit key=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,三位 10 uint temp; float press; uchar code str0_0=“welcome! good!“;/开机 logo(15) uchar code str0_1=“press: kpa!“;/正常显示检测(14) uchar code str1=“over!“;/超过了满量程 void delay(uchar x) uchar y,z; for(y=x;y0;y-) for(z=110;z0;z-); 12 /*=注意:后 8 个字符的地址是从 80+40 开始的=*/ /检测 lcd 忙函数 void check_busy() do dataport=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; 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 码 13 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=100)/超过了满量程,显示 over! write_com(0x80+6);/显示的起始地址 for(i=0;i=100)/超过了满量程,显示 over! write_com(0x80+6);/显示的起始地址 for(i=0;i5;i+) write_data(str1i);/“over!” else temp=(uint)(press*k);/放大 100 倍,便于求小数 press_shi=(uchar)(temp/1000); /取压力值百位 press_ge=(uchar)(temp%1000)/100); /取压力值十位 press_dot1=(uchar)(temp%1000)%100)/10); /取压力值十分位 press_dot2=(uchar)(temp%1000)%100)%10); /取压力值百分位 /刷新显示的压力数据 write_number(press_shi,6);/压力值 write_number(press_ge,7); write_number(press_dot1,9); write_number(press_dot2,10); else/key_count=0,三位显示 temp=(uint)(press*k);/放大 10 倍,便于求小数 press_bai=(uchar)(temp/1000); /取压力值百位 press_shi=(uchar)(temp%1000)/100); /取压力值十位 press_ge=(uchar)(temp%1000)%10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论