基于MPX4115的数字压力测量仪器设计(DOC)

合集下载

基于MPX传感器的数字压力测量仪电路图及源程序详询qq群

基于MPX传感器的数字压力测量仪电路图及源程序详询qq群

在proteus下按照下面的图画出电路图,再将所有程序用keil C编译后生成hex文件导入proteus即可仿真成功!我的另一个文档是关于此的课程设计,欢迎下载!基于MPX4115的数字压力测量仪步骤:(1)在Proteus软件画出电路图(2)用keil C 软件写出C程序,并生成.hex文件,导入到单片机当中,进行仿真,观察结果。

压力测试仪系统描述;输入15--115kPA压力信号输出00h--ffh数字信号(adc0832)在LED上显示实际的压力值,如果超限则报警线性区间标度变换公式:y=(115-15)/(243-13)*X+15kpa作者:单位:日期:2008.3.7********************************************************/#include <reg51.H>#include "intrins.h"#define uint unsigned int#define uchar unsigned char//ADC0832的引脚sbit ADCS =P2^0; //ADC0832 chip seclectsbit ADDI =P3^7; //ADC0832 k insbit ADDO =P3^7; //ADC0832 k outsbit ADCLK =P3^6; //ADC0832 clock signalunsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f}; //位扫描unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; //共阳数码管字段码unsigned char dispbuf[4];uint temp;uchar getdata; //获取ADC转换回来的值void delay_1ms(void) //12mhz delay 1.01ms{unsigned char x,y;x=3;while(x--){y=40;while(y--);}}void display(void) //数码管显示函数{char k;for(k=0;k<4;k++){P1 = dispbitcode[k];P0 = dispcode[dispbuf[k]];if(k==1) //加上数码管的dp小数点P0&=0x7f;delay_1ms();}}/************读ADC0832函数************///采集并返回unsigned int Adc0832(unsigned char channel) //AD转换,返回结果{uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //return ad k}void main(void){while(1){ unsigned int temp;float press;getdata=Adc0832(0);if(14<getdata<243) //当压力值介于15kpa到115kpa之间时,遵循线性变换{int vary=getdata; //y=(115-15)/(243-13)*X+15kpapress=((10.0/23.0)*vary)+9.3; //测试时补偿值为9.3temp=(int)(press*10); //放大10倍,便于后面的计算dispbuf[3]=temp/1000; //取压力值百位dispbuf[2]=(temp%1000)/100; //取压力值十位dispbuf[1]=((temp%1000)%100)/10; //取压力值个位dispbuf[0]=((temp%1000)%100)%10; //取压力值十分位display();}}}程序完!。

基于单片机的压力测试仪设计

基于单片机的压力测试仪设计

在工业生产控制过程中,压力是一个很重要的参数。

比如利用测量大气压力来间接测量海拔高度,在工业生产中测量压力参数来判断反应的过程,在气象预测中,也需要测量大气压力来判断阴雨天气等等。

所有这些都需要掌握测量压力,所以压力表的设计拥有广阔的市场前景。

本课题就是基于此原因设计的一个简单压力计。

本课程设计用MPX4115专感器来检测压力参数,ADC0808进行模数转换后,利用AT89C524行数据处理后,由键盘设置测量量程,用发光二级管显示当前测量量程送液晶显示压力值。

本系统可根据需要进行功能扩展。

由于ADC0808支持8路信号采集,可以对8个压力点参数进行检测。

可以手动设置采集哪一路,或者循环采集。

还可以进行压力上下限报警。

在设计系统的时候,立足于界面友好性、性价比,可以在简单压力检测的时候使用。

关键词:压力测试;单片机;ADC ;传感器1•设计要求 (3)2.设计方案与设计原理 (4)2.1系统总体设计 (4)2.2功能介绍 (4)3•元器件的识别与检测 (5)3.1 AT89C52 简介 (5)3.2 ADC0808 简介 (5)4制作与调试 (6)4.1系统软件设计 (6)4.2系统程序整体流程图 (7)4.3 T0中断服务程序流程图 (8)4.4外部中断INTO流程图 (8)4.5系统总体框图 (9)4.6系统总体仿真电路 (9)4.7软硬件仿真调试及性能分析 (10)4.8程序代码 (11)5.设计心得 (17)6参考文献 (18)1 .设计要求本课程设计用MPX4115传感器来检测压力参数,ADC0808进行模数转换后,利用AT89C52进行数据处理后,由键盘设置测量量程,用发光二级管显示当量量程送液晶显示压力值。

数字压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用传感器原理及其应用。

压力测量仪设计

压力测量仪设计

实验四 压力测量仪设计一、实验目的:掌握金属箔应变片组成的称重传感器的正确使用方法;了解压力测量仪的工作原理、电路标定;通过设计、安装、调试电路等实践环节,提高学生的动手能力,提高分析问题、解决问题的能力。

二、基本原理:电阻丝在外力作用下发生机械变形时,其电阻值发生变化,这就是电阻应变效应,描述电阻应变效应的关系式为:RR ∆=K ε式中RR ∆为电阻丝电阻相对变化,K 为 应变灵敏系数,ε=LL ∆为电阻丝长度相对变化,金属箔式应变片就是通过光刻、腐蚀等工艺制成的应变敏感元件,通过它转换被测部位受力状态变化、电桥的作用完成电阻到电压的比例变化,电桥的输出电压反映了相应的受力状态。

图1,图2是压力传感器的测量电路,由两个部分组成。

前一部分是采用三个运放构成的仪表放大器,后面的放大器将仪表放大器的输出电压进一步放大。

R 28是电桥的调零电阻,R 42是整个放大电路的调零电阻,R 29,R 40调整运放增益。

仪表放大器因为输入阻抗高,共模抑制能力好而作为电桥的接口电路。

其增益可用下式表示:A =(1+29302R R )通过对电路调节使电路输出的电压值为重量对应值,电压量纲(g )即成为一台原始电子秤。

全桥测量电路中,将受力性质相同的两应变片接入电桥对边,不同的接入邻边,应变片初始阻值:R Q =R 2=R 3=R 4,其变化值△R Q =△R 2=△R 3=△R 4时,其桥路输出电压U 03=EK ε。

其输出灵敏度比半桥又提高了一倍,非线性误差和温度误差均得到改善。

图1图2三、需用器件于单元:1.应变式传感器实验台;2.应变式传感器;3.砝码;4.跳线。

5.计算机6.DRVI快速可重组虚拟仪器平台四、实验步骤:1.根据图3所示,应变式传感器已经装在传感器试验台上。

传感器中各应变片上的R1、R2、R3、R4接线颜色分别为黄色、蓝色、红色、白色,可用万用表测量同一种颜色的两端判别,R1=R2=R3=R4=350Ω。

基于MPX4115数字气压计的仿真实现

基于MPX4115数字气压计的仿真实现

www�ele169�com | 85电子基础在项目开发过程中作者遇到要检测大气压强的问题,经过多方查阅资料和对比最终选定本文的方案来实现。

经作者查阅资料发现气压检测的应用领域广泛,例如蔬菜大棚中通过对气压的测量并配合温度、湿度的测量来判断大棚是否需要降温和通风,气象部门通过对气压的检测来判断天气的变化等。

气压测量的核心部件就是压力传感器,该传感器将气压的压力信号转换成电信号传送给单片机进行处理,处理结果通过显示器显示。

本系统设计的数字气压计采用MPX4115作为气压传感器,AT89C51单片机作为微处理器,LCD1602作为显示器用以显示被测气压值。

经仿真实现后发现该系统具有设计简单、精度高的特点,作者已经将该仿真系统进行硬件实现进行气压自动检测,方便灵活,便于携带适合野外作业的特点。

1 总体设计本系统分为硬件设计和软件设计两部分。

系统总体框图如图1所示。

整个系统的供电均采用+5V 直流稳压电源,气压传感器MPX4115进行气压的测量并将气压信号转换成0~5V 的模拟电压信号输出,该信号再送至8位AD 转换器ADC0832进行模数转换,转换生成的数字信号经AT89C51运算处理后送显示器LCD1602显示。

2 硬件电路■2.1 单片机的选型本设计采用AT89C51作为处理器,该单片机字长为8位,片内数据存储器RAM 存储容量为256B,片内程序存储器ROM 存储器容量为4KB,2个16位的定时器/计数器和5个中断源。

通常选择12MHz 作为该单片机的时钟频率,对应单片机的机器周期为1μs。

本设计中因大气压强数值变化比较缓慢,单片机采集数据的时间间隔通常以秒为单位进行采集,对数据处理的实时性要求不高,所以采用AT89C51作为处理器能够满足要求,经仿真和硬件电路验证了作者的想法基于MPX4115数字气压计的仿真实现王然升(山东信息职业技术学院,山东潍坊,261062)摘要:气压的测量应用广泛,测量手段也很多。

压力测量器设计报告概要

压力测量器设计报告概要

《单片机原理与应用》课程设计报告压力测量器的设计与制作要求:一、功能要求1、实现单片机测量并显示压力信号;2、使用模/数转换集成电路将压力信号转换为数字信号;3、单片机对压力信号处理,输出;4、用数码管显示输出压力信号值;二、设计过程要求1、查阅资料确定设计方案;2、对设计方案进行仿真验证;3、选择合适的元器件,搭建电路实验验证效果;4、画出PCB图;5、书写设计报告;6、答辩。

三、设计报告要求设计报告主要包括:题目、内容和要求、总体方案和设计思路、仿真电路图、软件设计、仿真调试效果、实验测试效果图、PCB图、心得体会。

姓名:曹贵学号:1886100101专业:电子科学与技术班级:10级 1 班成绩:评阅人:安徽科技学院理学院物电系压力测量器的设计与制作一;要求1、实现单片机测量并显示压力信号;2、使用模/数转换集成电路将压力信号转换为数字信号;3、单片机对压力信号处理,输出;4、用数码管显示输出压力信号值;二:目的和意义压力测量仪被广泛应用于国防领域、工业领域、医疗领域以及我们日常家庭生活中。

其中的核心元件就是压力传感器,它在监视压力大小、控制压力变化以及物理参量的测量等方面起着重要作用。

本系统设计的数字压力测量仪采用单片机控制,具有使用方便、精度高、显示简单和灵活性等优点,而且可以大幅提高被控气压的技术指标,从而能够大大提高产品的质量。

三:系统总体设计1:设计整体思想基于MPX4115的数字气压计包括软硬件的设计与调试。

软件部分通过对C语言的学习和对单片机知识的了解,根据系统的特点编写出单片机程序。

硬件部分分为四大块,包括非电信号数据的采集、转换、处理以及显示:。

通过对设计的了解,选择适合的器件,画出原理图。

搭建实物连接,实物的仿真测试,画出PCB板。

2:系统总体框图硬件部分由四部分构成,它们分别是:信息采集模块,数据转换模块,信息处理模块和数据显示模块。

总体框图三:硬件电路设计及描述1:数字压力测量仪设计意义压力测量仪被广泛应用于国防领域、工业领域、医疗领域以及我们日常家庭生活中。

压力测量仪的设计LED显示西华大学

压力测量仪的设计LED显示西华大学

课程名称:单片机应用课程设计课程代码:题目:压力测量仪的设计(LED显示)学生姓名:学号:年级/专业/班:学院(直属系) :机械工程与自动化学院指导教师:邓成中课程设计成绩评定标准及成绩评定表学生姓名:学号:年级/班:所属学院(直属系):所在专业:成绩评定:指导教师签名:年月日注:本课程设计成绩评定表,应装入学生课程设计资料袋作为资料保存。

《单片机应用课程设计》设计任务书学院名称:机械工程与自动化学院专业:机械电子工程年级:2010级1设计题目压力测量仪的设计(LED显示)2主要内容测量压力传感器的压力,并将压力值显示出来。

3具体要求用MCS-51系列单片机作为控制器;AD转换器采用ADC0832;用LED显示;采用MPX4115压力传感器;用Proteus完成所有功能的仿真;设计或选用直流稳压电源模块。

4完成后应上交的材料(1)设计任务书;(2)设计说明书;(3)电路原理图仿真图;(4)程序清单(附在说明书后)。

5推荐参考资料[1]芯片ADC0832、MPX4115说明书(请上网查询);[2]黄惟公等单片机原理与接口技术(C51版)四川大学出版社 2011;[3]周润景等基于PROTEUS的电路及单片机系统设计与仿真北航出版社2006.5[4]常敏等单片机应用程序开发与实践电子工业出版社 2009;指导教师签名日期 2013 年 6 月 30 日系主任审核日期 2013 年 6 月 30 日目录摘要 (1)引言 (2)题目分析 (2)一、系统总体设计 (3)1 设计思想………………………………………………………………………2 系统总体框图…………………………………………………………………二、硬件电路极其描述…………………………………………………………1、数字压力测量仪的设计的意义……………………………………………2、数据采集模块的芯片选择…………………………………………………3、单片机控制模块……………………………………………………………4、A/D转换模块……………………………………………………………5、显示模块……………………………………………………………………6、晶振电路……………………………………………………………………7、复位电路……………………………………………………………………8、电路原理图……………………………………………………………………三、软件设计……………………………………………………………………1、流程图……………………………………………………………………四、仿真……………………………………………………………………………1、编译调试程序………………………………………………………………………2、Keil与Proteus联调……………………………………………………………3、仿真结果………………………………………………………………………4、结论……………………………………………………………………………参考文献……………………………………………………………………………附录一程序代码……………………………………………………………………附录二电路原理图…………………………………………………………………附录三仿真图………………………………………………………………………摘要压力是工业生产过程中的重要参数之一,力检测或控制是保证生产和设备安全运行必不可少的条件。

MPX4115实验报告

MPX4115实验报告
E2=0;
}
/*写数据*/
void LCDdata(bit lcde,uchar temp){
delay(2);
E1=0;//禁止控制器
E2=0;
气压传感器MPX4115的管脚说明如表1所示:
表1 气压传感器MPX4115的管脚说明
气压传感器MPX4114的特性参数如表2所示:
表2气压MPX4115的特性参数
2.3
2.3.1
气压传感器MPX4115输出的是模拟电压,因此,必须进行模拟到数字的转换才能交由单片处理。关于A/D转换,本实验采用一种电压频率转换电路来实现模拟电压数字化的处理。
本设计要实现的数字气压计显示的是绝对气
压值,同时为了简化电路,提高稳定性和抗
干扰能力,要求使用具有温度补偿能力的气
压传感器。经过综合考虑,本设计选用美国
摩托罗拉公司的集成压力传感器。
MPX4115可以产生与所加气压呈线性
关系高精度模拟输出电压。
2.2.2
数据采集模块由气压传感器MPX4115
构成,采集的是大气压值。其中1脚是
数据转换模块原理图如图4所示 图4
LTC1297各引脚说 明:
引脚 1为片选输入:该引脚上的逻辑低电平将使能LTC芯片,该引脚上的高电平将使芯片处于掉电状态。
引脚 2 ,3 模拟输入端:输入必须是无噪音的(相对于GND)。
引脚 4 GND模拟地:GND必须直接连接到模拟地。
引脚 5 参考电压输入端:参考输入定义了A/D的跨度,并且它必须相对于GND而言没有噪音干扰。
兼容标准MCS-51指令系统,片内置通用8位中央处理
器(CPU)和Flash存储单元,功能强大AT89C51单
片机可为您提供许多高性价比的应用场合,可灵活

基于VFC的大气气压信号测量和硬件设计

基于VFC的大气气压信号测量和硬件设计

基于VFC的大气气压信号测量和硬件设计摘要:设计是基于气压传感器mpx4115和vfc芯片lm331精密数字气压计系统。

通过气压传感器mpx4115获得与大气压相对应的模拟电压值,并经过电压/频率(v/f)转换模块lm331转换为数字脉冲,通过单片机接收该脉冲信号,得到单位时间内获得的脉冲数,依据电压与频率的线性关系式计算出所对应的实际气压值,最后在单片机的控制下由液晶显示电路显示出实际气压值。

关键词:单片机气压传感器 v/f转换器 led显示中图分类号:th73 文献标识码:a 文章编号:1007-9416(2012)01-0084-02气压计被广泛应用于国防领域、工业领域、医疗领域以及我们日常家庭生活中。

是一种测量大气压的装置,一般把作用于单位面积上空气柱的重量称为大气压力,简称气压。

气象学研究表明,在空间垂直方向上气压随高度增加而降低,这种变化的幅度在近表面和高空时又有所不同,近地表时气压随高度增加而降低的幅度最大,越到高空这种变化越缓慢。

气压还会受空气中的气流影响,若空气中有下降气流,气压会增加;若空气中有上升气流,气压会减小。

1、系统总体结构本设计中就介绍了一种基于气压传感器mpx4115和单片机控制实现气压的实时显示设备。

它是利用软、硬件基础知识,通过单片机与气压传感器的结合,气压传感器的作用是气压信息转换成电流或电压输出,转换后的电流或电压输出常为模拟信号因此还必须进行a/d转换,以满足单片机接口的需要。

本文详尽的描述了基于mpx4115气压计的软硬件实现过程。

气压计硬件部分由四部分构成,它们分别是:信息采集模块,数据转换模块,信息处理模块和数据显示模块。

结构如图1所示2、数据采集及转换2.1 数据采集模块的芯片选择气压传感器对于系统至关重要,需要综合实际的需求和各类气压传感器的性能参数加以选择。

一般要选用有温度补偿作用的气压传感器,因为温度补偿特性可以克服半导体压力传感器件存在的温度漂移问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大作业说明书基于MPX4115的数字压力测量仪器设计学生姓名:xxx学生学号:*****专业:测控技术与仪器指导教师:程xx(一)系统总体设计1:设计整体思想基于MPX4115的数字气压计包括软硬件的设计与调试。

软件部分通过对C 语言的学习和对单片机知识的了解,根据系统的特点编写出单片机程序。

硬件部分分为四大块,包括非电信号数据的采集、转换、处理以及显示:。

通过对设计的了解,选择适合的器件,画出原理图。

2:系统总体框图硬件部分由四部分构成,它们分别是:信息采集模块,数据转换模块,信息处理模块和数据显示模块。

(二)硬件电路设计及描述1:数字压力测量仪设计意义压力测量仪被广泛应用于国防领域、工业领域、医疗领域以及我们日常家庭生活中。

其中的核心元件就是压力传感器,它在监视压力大小、控制压力变化以及物理参量的测量等方面起着重要作用。

本系统设计的数字压力测量仪采用单片机控制,具有使用方便、精度高、显示简单和灵活性等优点,而且可以大幅提高被控气压的技术指标,从而能够大大提高产品的质量2:数据采集模块的芯片选择压力传感器对于系统至关重要,需要综合实际的需求和各类压力传感器的性能参数加以选择。

一般要选用有温度补偿作用的压力传感器,因为温度补偿特性可以克服半导体压力传感器件存在的温度漂移问题。

本设计要实现的数字气压计显示的是绝对气压值,同时为了简化电路,提高稳定性和抗干扰能力,要求使用具有温度补偿能力的压力传感器。

经过综合考虑,本设计选用美国摩托罗拉公司的集成压力传感器。

MPX4115可以产生高精度模拟输出电压。

数据采集模块由压力传感器MPX4115构成。

其中1脚是输出信号端,输出的是与气压值相对应的模拟电压信号。

数据采集模块的原理如图、数据采集模块原理图 MPX4115的实物图气压传感器MPX4115的原理MPX4115系列压电电阻传感器是一个硅压力传感器。

这个传感器结合了高级的微电机技术,薄膜镀金属。

还能为高水准模拟输出信号提供一个均衡压力。

在0℃-85℃的温度下误差不超过1.5%,温度补偿是-40℃-125℃。

3:单片机控制模块由AT89C51单片机、时钟电路、复位电路组成AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammable and Erasable Read OnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

4:A/D转换模块ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。

由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。

学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。

8位分辨率双通道A/D转换输入输出电平与TTL/CMOS相兼容5V电源供电时输入电压在0~5V之间工作频率为250KHZ,转换时间为32μSADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI 数据输入端,可以轻易的实现通道功能的选择。

正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。

但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第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进行转换数据的读取。

从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。

直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。

也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。

随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。

最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。

如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。

但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

5:显示模块采用L ED动态扫描显示原理如下:(1)P23、P22、P21、P20输出高电平,关闭所有数码管;(2)显示个位——把要显示的数据送到P10~P17,P23送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P23送高电平;(3)显示十位——把要显示的数据送到P10~P17,P22送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P22送高电平;(4)显示百位——把要显示的数据送到P10~P17,P21送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P21送高电平;(5)显示千位——把要显示的数据送到P10~P17,P20送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P20送高电平。

(6)以此顺序循环,把它做成子程序,在主循环中调用。

现已DS8为个位来讨论,十、百、千为分别为DS7、DS6、DS5。

1、首先要了解的是此数码管为共阴极数码管,即三极管Q16、Q15、Q14、Q13导通时数码管才能点亮,亦即相应的单片机P23、P22、P21、P20为低电平。

2、动态扫描显示原理如下:(1)P23、P22、P21、P20输出高电平,关闭所有数码管;(2)显示个位——把要显示的数据送到P10~P17,P23送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P23送高电平;(3)显示十位——把要显示的数据送到P10~P17,P22送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P22送高电平;(4)显示百位——把要显示的数据送到P10~P17,P21送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P21送高电平;(5)显示千位——把要显示的数据送到P10~P17,P20送低电平,延时5豪秒(时间不能太长,否则数码管会闪烁),P20送高电平。

(6)以此顺序循环,把它做成子程序,在主循环中调用6:系统总体电路图(三)软件设计 流程图系统总流程图 A/D 转换程序流程图开始初始化函数A/D 转换器进行A/D 转换将转换后的电压转换为压力返回开始系统初始化 数据采集 处理读到的数据送LED 显示 结束显示流程图 主函数流程图主程序void main(void) {while(1) { unsigned int temp; float press; getdata=Adc0832(0);if(14<getdata<243) //当压力值介于15kpa 到115kpa 之间时,遵循线性变换 {int vary=getdata; //y=(115-15)/(243-13)*X+15kpapress=((10.0/23.0)*vary)+9.3; //测试时补偿值为9.3temp=(int)(press*10); //放大10倍,便于后面的计算dispbuf[3]=temp/1000; //取压力值百位 dispbuf[2]=(temp%1000)/100; //取压力值十位 dispbuf[1]=((temp%1000)%100)/10; //取压力值个位 dispbuf[0]=((temp%1000)%100)%10; //取压力值十分位 display(); }#define uint unsigned int#define uchar unsigned char//ADC0832的引脚sbit ADCS =P2^0; //ADC0832 chip seclectsbit ADDI =P3^7; //ADC0832 k insbit ADDO =P3^7; //ADC0832 k outsbit ADCLK =P3^6; //ADC0832 clock signalunsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f}; //位扫描unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0803072080x82,0xF8,0x80,0x 90,0xff}; //共阳数码管字段码unsigned char dispbuf[4];uint temp;uchar getdata; //获取ADC转换回来的值void delay_1ms(void) //12mhz delay 1.01ms{unsigned char x,y;x=3;while(x--){y=40;while(y--);}}void display(void) //数码管显示函数{char k;for(k=0;k<4;k++){P1 = dispbitcode[k];P0 = dispcode[dispbuf[k]];if(k==1) //加上数码管的dp小数点P0&=0x7f;delay_1ms();}}unsigned int Adc0832(unsigned char channel) //AD转换,返回结果{uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2_nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //return ad5. 源程序代码:压力测试仪系统描述;输入 15--115kPA压力信号输出 00h--ffh数字信号(adc0832)080307208在LED上显示实际的压力值,如果超限则报警#include <reg51.H>#include "intrins.h"#define uint unsigned int#define uchar unsigned char//ADC0832的引脚sbit ADCS =P2^0; //ADC0832 chip seclectsbit ADDI =P3^7; //ADC0832 k insbit ADDO =P3^7; //ADC0832 k outsbit ADCLK =P3^6; //ADC0832 clock signal080307208unsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f}; //位扫描unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; //共阳数码管字段码unsigned char dispbuf[4];uint temp;uchar getdata; //获取ADC转换回来的值void delay_1ms(void) //12mhz delay 1.01ms{unsigned char x,y;x=3;while(x--){y=40;while(y--);}}void display(void) //数码管显示函数{char k;for(k=0;k<4;k++){P1 = dispbitcode[k];P0 = dispcode[dispbuf[k]];if(k==1) //加上数码管的dp小数点P0&=0x7f;delay_1ms();}}/************读ADC0832函数************///采集并返回unsigned int Adc0832(unsigned char channel) //AD转换,返回结果{uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1 _nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2 _nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3 ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //return ad k}void main(void){while(1){ unsigned int temp;float press;getdata=Adc0832(0);if(14<getdata<243) //当压力值介于15kpa到115kpa之间时,遵循线性变换{int vary=getdata;//y=(115-15)/(243-13)*X+15kpapress=((10.0/23.0)*vary)+9.3; //测试时补偿值为9.3temp=(int)(press*10); //放大10倍,便于后面的计算dispbuf[3]=temp/1000; //取压力值百位dispbuf[2]=(temp%1000)/100; //取压力值十位dispbuf[1]=((temp%1000)%100)/10; //取压力值个位dispbuf[0]=((temp%1000)%100)%10; //取压力值十分位display();}}}黄继鹏 080307208于2011/12/13。

相关文档
最新文档