《MPX数字压力量仪器研发设计方案 .docx》由会员分享,可在线阅读,更多相关《MPX数字压力量仪器研发设计方案 .docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结大作业说明书基于 MPX4115 的数字压力测量仪器设计同学姓名: xxx同学学号: 08372专业:测控技术与仪器指导老师: 程 xx可编辑资料 - - - 欢迎下载精品名师归纳总结(一) 系统总体设计1:设计整体思想基于 MPX4115 的数字气压计包括软硬件的设计与调试。软件部分通过对C语言的学习和对单片机学问的明白,依据系统的特点编写出单片机程序。硬件:部分分为四大块,包括非电信号数据的采集、转换、处理以及显示。通过对设计的明白,选择适合的器件,画出原理图。2: 系统总体框图硬件部分由四部分构成,它们分别是:信息采集模块,数据转换模块,信息处理模块和数据显示模块。压力传
2、感器电A/D 转换器源模单片机块LED 显示器可编辑资料 - - - 欢迎下载精品名师归纳总结 二 硬件电路设计及描述1:数字压力测量仪设计意义压力测量仪被广泛应用于国防领域、工业领域、医疗领域以及我们日常家庭生活中。其中的核心元件就是压力传感器,它在监视压力大小、把握压力变化以及物理参量的测量等方面起着重要作用。本系统设计的数字压力测量仪接受单片机把握,具有使用便利、精度高、显示简洁和灵敏性等优点,而且可以大幅提高被控气压的技术指标,从而能够大大提高产品的质量2:数据采集模块的芯片选择压力传感器对于系统至关重要,需要综合实际的需求和各类压力传感器的性能参数加以选择。一般要选用有温度补偿作用的
3、压力传感器,由于温度补偿特性可以克服半导体压力传感器件存在的温度漂移问题。本设计要实现的数字气压计显示的是确定气压值,同时为了简化电路,提高稳固性和抗干扰才能,要求使用具有温度补偿才能的压力传感器。经过综合考虑,本设计选用美国摩托罗拉公司的集成压力传感器。MPX4115 可以产生高精度模拟输出电压。数据采集模块由压力传感器 MPX4115 构成。其中 1 脚是输出信号端,输出的是与气压值相对应的模拟电压信号。数据采集模块的原理如图、可编辑资料 - - - 欢迎下载精品名师归纳总结数据采集模块原理图MPX4115的实物图气压传感器 MPX4115的原理MPX4115 系列压电电阻传感器是一个硅压
4、力传感器。这个传感器结合了高级的微电机技术,薄膜镀金属。仍能为高水准模拟输出信号供应一个均衡压力。在 0 -85的温度下误差不超过 1.5%,温度补偿是 -40-125。3:单片机把握模块由 AT89C51单片机、时钟电路、复位电路组成 AT89C51是一种带 4K 字节闪烁可编程 可擦 除只 读储备器 ( FPEROM Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8 位微处理器,俗称单片机。 AT89C2051是一种带 2K 字节闪烁可编程可擦除只读储备器的单片机。单片机的可擦除只读储备器可以反复擦除100 次。该
5、器件接受ATMEL高密度非易失储备器制造技术制 造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU和闪烁储备器组合在单个芯片中,ATMEL的AT89C51 是 一 种 高 效 微 控 制 器 ,AT89C2051是它的一种精简版本。AT89C 单片机为很多嵌入式把握系统供应了一种 灵敏性高且价廉的方案。可编辑资料 - - - 欢迎下载精品名师归纳总结4:A/D 转换模块ADC0832是美国国家半导体公司生产的一种8 位辨论率、双通道A/D 转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832可
6、是使我们明白 A/D 转换器的原理,有助于我们单片机技术水平的提高。8 位辨论率双通道A/D 转换输入输出电平与 TTL/CMOS相兼容 5V 电源供电时输入电压在05V 之间工作频率为250KHZ,转换时间为 32SADC0832为 8 位辨论率 A/D 转换芯片,其最高辨论可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以削减数据误差,转换速度快且稳固性能强。独立的芯片使能输入,使多 器件挂接和处理器把握变的更加便利。通过DI 数据输入端,可以轻易的实现通道功能的选
7、择。正常情形下ADC0832与单片机的接口应为 4 条数据线,分别是 CS、CLK、DO、DI。但由于 DO端与 DI 端在通信时并未同时有效并与单片机 的接口是双向的,所以电路设计时可以将DO和 DI 并联在一根数据线上使用。当 ADC0832未工作时其 CS 输入端应为高电平,此时芯片禁用, CLK 和 DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS使能端置于低电平并且保持低电平直到转换完全终止。此时芯片开头转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲, DO/DI 端就使用 DI 端输入通道功能选择的数据信号。 在第 1 个时钟脉冲的下沉之前 DI 端必
8、需是高电平,表示启始信号。在第2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能,其功能项见官方资料。如资料 所示,当此 2 位数据为“ 1”、“ 0”时,只对 CH0 进行单通道转换。当 2 位数据为“ 1”、“ 1”时,只对 CH1进行单通道转换。当 2 位数据为“0”、“ 0”时,将 CH0作为正输入端 IN+,CH1作为负输入端 IN- 进行输入。当 2 位数据为“ 0”、“ 1”时,将 CH0作为负输入端 IN- ,CH1 作为正输入端IN+进行输入。到第 3 个脉冲的下沉之后 DI 端的输入电平就失去输入作用,此后DO/DI 端就开头利用数据输出 DO进行转换数据的
9、读取。从第 4 个脉冲下沉开头由 DO端输出转换数据最高位 DATA7,随后每一个脉冲下沉 DO端输出下一位数据。直到第 11 个脉冲时发出最低位数据 DATA0,一个字节的数据输出完成。也正是从今位开头输出下一个相反字节的数据,即从第11 个字节的下沉输出DATA0。随后输出 8 位数据,到第 19 个脉冲时数据输出完成,也标志着一次 A/D 转换的终止。最终将 CS 置高电平禁用芯片,直接将转换后的数据进行处理就可以了。作为单通道模拟信号输入时 ADC0832的输入电压是 05V且 8 位辨论率时的电压精度为 19.53mV。假如作为由 IN+与 IN- 输入的输入时,可是将电压值设定在某
10、一个较大范畴之内,从而提高转换的宽度。但值得留意的是,在进行IN+ 与 IN- 的输入时,假如 IN- 的电压大于 IN+的电压就转换后的数据结果始终为00H。5:显示模块可编辑资料 - - - 欢迎下载精品名师归纳总结采用LED动态扫描显示原理如下:( 1 ) P23 、 P22 、 P21 、 P20输 出 高 电 平 , 关 闭 所 有 数 码 管 。(2) )显示个位把要显示的数据送到P10P17, P23 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P23送 高 电 平 。(3) )显示十位把要显示的数据送到P10P17, P22
11、送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P22送 高 电 平 。(4) )显示百位把要显示的数据送到P10P17, P21 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P21送 高 电 平 。(5) )显示千位把要显示的数据送到P10P17, P20 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P20送 高 电 平 。( 6 ) 以 此 顺 序 循 环 , 把 它 做 成 子 程 序 , 在 主 循 环 中 调 用 。现 已 DS8 为
12、 个 位 来 讨 论 , 十 、 百 、 千 为 分 别 为 DS7、 DS6、 DS5。1、第一要明白的是此数码管为共阴极数码管,即三极管Q16、Q15、Q14、Q13 导通时数码管才能点亮,亦即相应的单片机P23、P22、P21、P20 为低电平。2、动态扫描显示原理如下:( 1 ) P23 、 P22 、 P21 、 P20输 出 高 电 平 , 关 闭 所 有 数 码 管 。(2) )显示个位把要显示的数据送到P10P17, P23 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P23送 高 电 平 。(3) )显示十位把要显示的数据送
13、到P10P17, P22 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P22送 高 电 平 。(4) )显示百位把要显示的数据送到P10P17, P21 送低电平,延时 5 豪秒( 时 间 不 能 太 长 , 否 就 数 码 管 会 闪 烁 ) , P21送 高 电 平 。(5) )显示千位把要显示的数据送到P10P17, P20 送低电平,延时 5 豪秒(时间不能太长,否就数码管会闪烁),P20送高电平。(6) )以此次序循环,把它做成子程序,在主循环中调用6: 系统总体电路图可编辑资料 - - - 欢迎下载精品名师归纳总结 三 软件设计流
14、程图开头可编辑资料 - - - 欢迎下载精品名师归纳总结系统初始化数据采集处理读到的数据送 LED 显示终止开头初始化函数A/D 转换器进行 A/D 转换将转换后的电压转换为压力返回可编辑资料 - - - 欢迎下载精品名师归纳总结系统总流程图A/D 转换程序流程图可编辑资料 - - - 欢迎下载精品名师归纳总结开头开头将压力数据写入到LED系统初始化调用压力子程序读取压力值调用显示子程序显示压力值调用扫描按键程序返回可编辑资料 - - - 欢迎下载精品名师归纳总结主程序显示流程图主函数流程图可编辑资料 - - - 欢迎下载精品名师归纳总结void mainvoidwhile1unsigned
15、int temp。float press。getdata=Adc08320。if14getdata243/当压力值介于 15kpa 到 115kpa 之间时,遵循线性变换int vary=getdata。/y=115-15/243-13*X+15kpapress=10.0/23.0*vary+9.3。/测试时补偿值为 9.3temp=intpress*10。/放 大10倍,便于后面的运算可编辑资料 - - - 欢迎下载精品名师归纳总结值百位值十位值个位dispbuf3=temp/1000 。/ 取 压力dispbuf2=temp%1000/100 。/ 取 压力dispbuf1=temp%10
16、00%100/10 。 / 取 压力可编辑资料 - - - 欢迎下载精品名师归纳总结取压力值特别位dispbuf0=temp%1000%100%10 。/ display。可编辑资料 - - - 欢迎下载精品名师归纳总结LED显示程序#define uint unsigned int #define uchar unsigned char/ADC0832 的引脚sbit ADCS =P20 。 /ADC0832 chip seclect sbit ADDI =P37。 /ADC0832 k insbit ADDO =P37 。 /ADC0832 k outsbit ADCLK =P36 。 /
17、ADC0832 clock signalunsignedchardispbitcode8=0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f。 /位扫描unsignedchardispcode11=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0803072080x82,0xF8,0x80,0x90,0xff。 /共阳数码管字段码unsigned char dispbuf4。 uint temp。uchar getdata。 /猎取 ADC转换回来的值void delay_1msvoid /12mhz delay 1.01msunsigned char
18、 x,y。x=3。whilex-y=40。whiley-。void displayvoid /数码管显示函数char k。fork=0。k1&0x1。_nop_。_nop_。ADCLK=0 。/ 拉低 CLK端, 形成下降沿 3 ADDI=1。/ 把握命令终止_nop_。_nop_。dat=0。可编辑资料 - - - 欢迎下载精品名师归纳总结fori=0。i8 。i+dat|=ADDOADCLK=1。/ 收数据。_nop_。_nop_。ADCLK=0。/ 形成一次时钟脉冲_nop_。_nop_。dat=1。ifi=7dat|=ADDO。fori=0。i8 。i+j=0。j=j|ADDOADCL
19、K=1。/ 收数据。_nop_。_nop_。ADCLK=0。/ 形成一次时钟脉冲_nop_。_nop_。j=j7。ndat=ndat|j。ifi=1。ADCS=1 。/ 拉低 CS端ADCLK=0 。/ 拉低 CLK端ADDO=1 。/ 拉高数据端 , 回到初始状态dat=8。dat|=ndat。returndat。/return ad5.源程序代码:压力测试仪系统描述。输入 15-115kPA压力信号输出 00h-ffh数字信号( adc0832)080307208在 LED上显示实际的压力值,假如超限就报警#include #include intrins.h可编辑资料 - - - 欢迎下
20、载精品名师归纳总结#define uint unsigned int #define uchar unsigned char/ADC0832 的引脚sbit ADCS =P20 。 /ADC0832 chip seclect sbit ADDI =P37。 /ADC0832 k insbit ADDO =P37 。 /ADC0832 k outsbit ADCLK =P36 。 /ADC0832 clock signal080307208unsignedchardispbitcode8=0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f。 /位扫描unsignedc
21、hardispcode11=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff。 /共阳数码管字段码unsigned char dispbuf4。uint temp。uchar getdata。 /猎取 ADC转换回来的值void delay_1msvoid /12mhz delay 1.01msunsigned char x,y。x=3。whilex-y=40。whiley-。void displayvoid /数码管显示函数char k。fork=0。k1&0x1。_nop_。_nop_。ADCLK=0 。/ 拉低 CLK端, 形成
22、下降沿 3 ADDI=1。/ 把握命令终止_nop_。_nop_。dat=0。fori=0。i8 。i+dat|=ADDO。/ 收数据可编辑资料 - - - 欢迎下载精品名师归纳总结ADCLK=1。_nop_。_nop_。ADCLK=0。/ 形成一次时钟脉冲_nop_。_nop_。dat=1。ifi=7dat|=ADDO。fori=0。i8 。i+j=0。j=j|ADDOADCLK=1。/ 收数据。_nop_。_nop_。ADCLK=0。/ 形成一次时钟脉冲_nop_。_nop_。j=j7。ndat=ndat|j。ifi=1。ADCS=1 。/ 拉低 CS端ADCLK=0 。/ 拉低 CLK端
23、ADDO=1 。/ 拉高数据端 , 回到初始状态dat=8。dat|=ndat。returndat。/return ad kvoid mainvoidwhile1unsigned int temp。float press。getdata=Adc08320。if14getdata243/当压力值介于 15kpa 到 115kpa 之间时,遵循线性变换int vary=getdata。/y=115-15/243-13*X+15kpapress=10.0/23.0*vary+9.3。/可编辑资料 - - - 欢迎下载精品名师归纳总结测试时补偿值为 9.3temp=intpress*10。/放 大10倍,便于后面的运算可编辑资料 - - - 欢迎下载精品名师归纳总结值百位值十位值个位取压力值特别位dispbuf3=temp/1000。/取 压力dispbuf2=temp%1000/100。/ 取 压力dispbuf1=temp%1000%100/10。/ 取 压力dispbuf0=temp%1000%100%10 。/ display。可编辑资料 - - - 欢迎下载精品名师归纳总结黄继鹏 080307208于 2021/12/13可编辑资料 - - - 欢迎下载
限制150内