1、测控系统课程设计02摘要在工业生产控制过程中,压力是一个很重要的参数。比如利用测量大气压力来间接测量海拔高度,在工业生产中测量压力参数来判断反应的过程,在气象预测中,也需要测量大气压力来判断阴雨天气等等。所有这些都需要掌握测量压力,所以压力表的设计拥有广阔的市场前景。本课题就是基于此原因设计的一个简单压力计。本课程设计用mpx4115传感器来检测压力参数,adc0808进行模数转换后,利用AT89C52进行数据处理后,由键盘设置测量量程,用发光二级管显示当前测量量程送液晶显示压力值。本系统可根据需要进行功能扩展。由于adc0808支持8路信号采集,可以对8个压力点参数进行检测。可以手动设置采集
2、哪一路,或者循环采集。还可以进行压力上下限报警。在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的时候使用。关键词:AT89C52单片机、MPX4115压力传感器、液晶显示器、adC0808转换器1 系统总体介绍.3 1.1系统功能介绍.3 1.2功能介绍.31.3 AT98C52简介.31.4 ADC0808简介.32 系统软件设计.52.1系统程序整体流程图.52.2按键子程序流程图.52.3 T0中断服务程序流程图.52.4外部中断INT0流程图.63 系统硬件设计.73.1系统总体框图.73.2压力测量电路.73.3系统总体仿真电路.7 4 软硬件仿真调试及性能分析.94
3、.1数字量到压力值的标度变换.94.2系统protues仿真运行图.94.2.1开机显示画面.94.2.2两位数正常显示.104.2.3两位数超量程显示.11 4.2.4 三位数正常显示1.114.2.5 三位数正常显示2.115 总结.136 参考资料.137 参考程序.141 系统功能要求介绍1.1 系统总体设计压力计以AT89C52为核心,进行数据的处理和显示,并进行显示量程的切换。压力测量采用mpx4115,利用adc0808实现A/D转换,由键盘设置量程转换,并且用发光二极管显示当前的量程。1.2 功能介绍压力计的测量量程在10kpa100kpa,精度在0.5级。利用16x1字符型L
4、CD显示和提示操作。利用按键进行量程转换。具体为xxxx kpa和xxxx kpa 。压力测量使用摩托罗拉公司的mpx4115传感器,采集电路以此为核心,为了克服干扰,在mpx4115输出电路中增加了RC滤波电路。Mpx4115压力传感器检测的范围是10kpa-100kpa,输出电压信号0.2v-4.8v。adc0808的参考电压Vref+=5v,Vref-=0v。则0v-5v)对应(0-255),(0.2v-4.8v)对应(10-246)。1.3 AT89C52简介AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52为40 脚双列直插封装的8 位通用微处理器,采
5、用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义。1.4 ADC0808简介ADC0808是
6、采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下: 15和2628(IN0IN7):8路模拟量输入端。 8、14、15和1721:8位数字量输出端。 22(ALE):地址锁存允许信号,输入,高电平有效。 6(START): AD转换启动脉冲输入端,输入一个
7、正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 7(EOC): AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 9(OE):数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。 12(VREF(+)和16(VREF(-):参考电压输入端。11(Vcc):主电源输入端。 13(GND):地。2 系统软件设计系统主程序在初始化后只进行按键扫描,利用定时器T0定时5s启动ad转化,即采样周期是5s。当a
8、d转换完成后进入外部中断INT0服务程序,进行数据的处理,刷新显示的压力值;当采用两位量程时,若检测到压力值大于等于100,提示超过量程“over!”,需要转换量程。2.1系统程序整体流程图系统的整体程序流程图如下所示:主程序在完成开机logo显示、压力值初始化显示、TO及INT0中断初始化后进入死循环,在循环中进行按键扫描,切换量程。等待T0中断启动ad转换;转换完成后进入外部中断INT0进行数据的处理、分析、显示。2.2 按键子程序流程图按键子程序进入后首先对显示模式进行修改,即在两位整数和三位整数显示之间进行切换。若是两位整数模式则先判断是否超过量程(压力值是三位数整数),超过量程则显示
9、“over!”提示转换量程。若是三位整数模式则直接刷新数据后显示。2.3 T0中断服务程序流程图T0中断服务子程序如下图所示: T0定时器定时50ms,即每50ms进入T0中断,在中断中增加time5s_count计时器,每次进入T0中断后time5s_count加1,当加到100后表示5s到,清零同时启动ad转换。2.4 外部中断INT0流程图外部中断INT0服务程序流程图如下所示:当adc0808完成ad转换后,eoc变高,经反相器后接单片机int0口,下降沿启动int0中断。在中断中首先读取转换后的数字量,再进行标度换算成压力值,完成数据的刷新。3 系统硬件电路设计3.1系统总体框图以A
10、T89C52为核心,外围电路有信号采集mpx4115,ad转换电路adc0808、按键和显示液晶模块。总体框图如下:3.2 压力测量电路压力测量使用摩托罗拉公司的mpx4115传感器,采集电路以此为核心,为了克服干扰,在mpx4115输出电路中增加了RC滤波电路。如下图所示:3.3 系统总体仿真电路压力计检测系统在protues仿真的硬件电路如下所示:图3.1 系统总体仿真图mpx4115的输出的电压信号0.2V-0.5v送至adc0808的0通道,ad转化后的8位数字信号送给单片机P1口,经单片机分析处理数据后经P0口送液晶显示。按键控制量程的转换,00.00-10.00kpa和10.0-1
11、00.0kpa两个量程,显然整数是两位时的现实精度高。红色LED亮表示此时的量程为00.00-10.0kpa,黄色LED亮表示此时的量程为10.0-100.0kpa。显示界面利用16x1的字符型液晶LM020L进行显示,相比LED显示能显示更多的内容,人机界面更友好,而且节省单片机硬件资源。 4 软硬件仿真调试及性能分析4.1数字量到压力值的标度变换Mpx4115压力传感器检测的范围是10kpa-100kpa,输出电压信号0.2v-4.8v。adc0808的参考电压Vref+=5v,Vref-=0v。则(0v-5v)对应(0-255),(0.2v-4.8v)对应(10-246)。如下图所示:4
12、.1.1系统最小分辨率即当压力值变换了0.424kpa系统便能检测到。4.2系统protues仿真运行图4.2.1 开机logo画面,显示“welcome! Good!”图4.1 开机显示图4.2.2 两位整数模式压力值正常显示:图4.2 两位数正常显示4.2.3 两位整数模式超量程显示:图4.3 两位数超量程显示4.2.4 三位整数模式显示1:图4.4 三位数显示14.3.4三位整数模式显示2:图4.5 三位数显示2 5 总结通过这次测控系统课程设计,我不仅加深了对测控系统理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新能力,从而不断地战胜自己,超越自己。创新可以
13、是在原有的基础上进行改进,使之功能不断完善,成为自己的东西。 在确定课题后,设计有要求量程切换,这是在以前书本中都不曾提过的应用,我们根据现实生活中,和在实验室接触的仪表中,将量程切换定义为:小量程(xxXx)现实到小数点百分位,大量程(xxx.x),虽然整数可以显示到百位,但是只能够显示到小数点十分位,这样就没有小量程显示准确了。在按键子程序中要达到量程转换的目的,定义一个位变量,key_count,每次按键后,key_count先取反,再判断key_count的值,若是0表示的是两位整数显示模式,1则表示三位整数显示的模式。通过这次课程设计,我学到了许多知识,这些知识都是在实践中才能够点滴
14、积累的。在做该课程设计过程中遇到困难的时候,不要忘记学习除了一个人独自琢磨外还应多与同学切磋,一个人学习容易走进死胡同,而且进入死胡同后会大大的打击做设计的积极性,这时候应与同学多交流,从一个新的角度去看待问题、分析问题、解决问题,会有耳目一新的感觉。再做起设计来事倍功半,最主要的是,从课程设计中学会了把课本上的理论知识实践化。.6 参考资料1王福瑞等单片微机测控系统设计大全北京航空航天大学出版社,19992现代测控技术与系统 韩九强 清华大学出版社 2007.93智能仪器 程德福,林君主编 机械工业出版社 2005年2月4测控仪器设计浦昭邦,王宝光主编 机械工业出版社 20015Keil C
15、51帮助文档7 参考程序源程序如下:/*/* 基于MPX4115的压力计设计 */* 输入压力信号10100kpa,输出0.24.8v电压信号 */* ad转换采用adc0808,05v对应00hffh */* 0.24.8v对应ah(10)f5h(246) */* 标度变换pressure=(100-10)/(246-10)*(B-10)+10 */* version:0.01 */*/#include#include#define uchar unsigned char#define uint unsigned int#define dataport P0 /数据端口sbit busy=P
16、07;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 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;/量
17、程转换的放大倍数,两位10,三位100uint 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-);/*=注意:后8个字符的地址是从80+40开始的=*/检测lcd忙函数void check_busy()dodataport=0xff;lcd_rs=0;lcd_rw=1
18、;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 w
19、rite_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;i15;i+)/开机logowrite_data(str0_0i);/显示welcome! good!for(i=0;i100;i+)/开机logo延时时间delay(100);write_com(0x01);/清屏并光标复位write_com(0x80);/显示的起始地址for(i=0;i=100)/超过了满量程,显示over!write_com(0x80+6);/显示的起始地址for(i=0;i=100)/超过了满量程,显示over!writ
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1