压力数据采集监测系统

上传人:飞*** 文档编号:44378942 上传时间:2018-06-09 格式:PDF 页数:7 大小:61.23KB
返回 下载 相关 举报
压力数据采集监测系统_第1页
第1页 / 共7页
压力数据采集监测系统_第2页
第2页 / 共7页
压力数据采集监测系统_第3页
第3页 / 共7页
压力数据采集监测系统_第4页
第4页 / 共7页
压力数据采集监测系统_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《压力数据采集监测系统》由会员分享,可在线阅读,更多相关《压力数据采集监测系统(7页珍藏版)》请在金锄头文库上搜索。

1、压力数据采集监测系统压力是日常生活中经常遇到的物理量。在有些需要经常监测压力的场合,如果采用PC机等数据采集系统,成本会比较高, 此时最好采用以单片机为中心的数据采集监测系统。本文介绍一个简单的可采集2 路压力的压力数据采集检测系统。其中第一路压力变化范围是0-30kPa,第二路压力变化范围是0-50kPa。要求实时采集并显示这2 路压力值, 同时当第一路压力超过25kPa、第二路压力超过40kPa 时报警灯亮。为使问题简化,在此我们要求显示分辨率为小数点后一位的数值,要求用三位数码管显示压力值,二位数码管显示通道标志,即最左边一位显示“C” ,左边第二位显示通道号“1”或“ 2” 。要求不间

2、断地轮流显示两个压力点,在转换通道间隙关显示。1 题目分析根据要求,可以组成一个以单片机为中心的测量报警系统,在此选用AT89S51 为控制机, 采用 ADC0809 芯片进行模数转换。 压力信号首先要经过压力传感器(内含放大器)变换为0-5V 的电压信号,然后此信号再送入ADC0809 进行模数转换,转换后的数字量送入单片机。此量值与输入的电压值相对应,例如,因为采用的AD 卡是 8 位的,其输出的数码为0-255, 输入电压范围是0-5V, 如果输入量是线性变化的,则 7FH 对应 2.49V,FFH 对应 4.99V。如果要显示实际压力值,则还要进行标度变换。对本例而言,第一路压力P1

3、的标度变换应该是B1=30kPa/255 ,第二路压力P2 的标度变换是B2=50kPa/255 。如果采集的数字值用D 表示,则变换后的压力值分别为P1=D1*B1 ,P2=D2*B2 。这就是我们准备显示的数字量。2 硬件设计电路根据本项目的要求, 硬件电路设计如图1 所示,用 AT89S51 的 P1.1、P1.2 作为 2 路压力的报警端,两路压力信号经IN0、 IN1 分别送 ADC0809 转换。转换启动信号(START)和地址锁存信号(ALE )连接在一起,由WR 信号控制地址写入,进行通道的选择。按图中连接情况,通道IN0、 IN1 的地址分别为2FF0H、2FF1H 。825

4、5 是用于共阴极数码管显示的接口芯片,8255 的 A、 B、 C 及控制口的地址分别为4FFCH、4FFDH 、4FFEH、 4FFFH。五位数码管显示缓冲区的存储单元设为内部RAM 28H-2CH (对应 C0-C4) 。转换后的数据以定时传送方式送89s51.所以要运行一个延时子程序,以等待 AD 转换完成后进行数据的读操作,为此口地址和RD 信号相与后送0809 的 OE 端。当 RD 有效时,转换数据送至数据总线,由89s51 接收。3 软件设计程序设计工作的主要内容,就是把已经转换为电压量的压力信号经AD转换变成数字量,然后通过软件方法计算得到压力值,再进行显示等处理。按上述工作原

5、理和硬件结构设计主程序框图如图2 所示:123456ABCD654321DCBATitleNu mberRevisionSizeBDate:16-Oct-2008Sheet ofFile:C:Do桌面 PREVIO1.DDBDrawn By:+ P1WRRDVCCP0.0 P0.1 P0.2 P0.3P0.4 P0.5 P0.6P0.7 EA/VPP ALE/PROG PSENP2.7 P2.6 P2.5P2.4 P2.3 P2.2 P2.1P2.0P1.0P1.1 P1.2 P1.3 P1.4P1.5 P1.6 P1.7RST /VPD RXD/P3.0 TXD/P3.1 INT0/P3.2

6、INT1/P3.3 T0/P3.4 T1/P3.5WR/P3.6 RD/P3.7 XTAL2 XTAL1VSSAT89S51JP?COMPONENT_10D03 Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718 Q719OE1CLK1174HC374IN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-31 2-714lsb 2-817IN-42EOC7IN-53ADD-A25IN-64ADD-B24ADD-C23IN-75ALE22ref(-)16ENABLE9START6ref (+)12

7、CLOCK10U?ADC0 809E1A2B3Q04Q15Q26Q37A74LS139D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD5WR36A09A18RESET35CS6U?8255D12D23D34D45D56D67D78D89Q118Q217Q316Q415Q514Q613Q712Q811E11E21974LS541abfcgdeDPY

8、1 23 4 5 67a bc d ef g 8dpdpDS?C2abfcgdeDPY1 23 4 5 67a bc d ef g 8dpdpDS?C1abfcgdeDPY1 23 4 5 67a bc d ef g 8dpdpDS?C3abfcgdeDPY1 23 4 5 67a bc d ef g 8dpdpDS?C4abfcgdeDPY1 23 4 5 67a bc d ef g 8dpdpDS?C0Q1Q2 Q3 Q4 Q5D1D2 D3 D4 D5E1 E2P1MAX EQU 30 ;第一路压力的最大值P2MAX EQU 50 ;第二路压力的最大值PMAX EQU 40H ;暂存压力

9、最大值单元P1BJ EQU 25/B1; 第一路压力报警值P2BJ EQU 40/B2; 第二路压力报警值BJ EQU 08H ;报警标志位,2 路中任何一路超过报警值,08H=1 主程序清单如下:ORG 0000H LJMP MAIN 否否初始化调第一路压力采集及计算程清除报警调显示压力值子程序调 BCD 码子程序调 延 时0.5s 子 程 序调第二路压力采集及计算子程序是否出现报警置报警位置报警位是否出现报警清除报警调 BCD 码子程序调显示压力值子程序调 延 时0.5s 子 程 序是是. . ORG 200H MAIN: MOV DPTR, #4FFFH ;指向 8255 控制口MOV

10、A, #80H ; A 口、 B 口设为方式0 输出MOVX DPTR, A MOV 28H, #0CH ;字符 C 送 28H LP:MOV DPTR , #2FF0H ;指向 IN0 地址MOV 29H,#01H ;字符 1 送入 29H MOV R0, #P1BJ MOV PMAX , #P1MAX ;给压力最大值单元赋值LCALL AD ;调 AD 采集与计算子程序JB BJ,LL1 ;是否出现报警情况SETB P1.1 ;无,则清报警位SJMP LL2 LL1 :CLR P1.1 ;有,置报警位SJMP LL3 LL2 :LCALL BCD ;调 BCD 码处理子程序LL3 :LCA

11、LL DISP ;调显示子程序LCAL 0.5s ;调 0.5s 延时子程序MOV DPTR, #2FF1H ;指向 IN1 地址MOV 29H, #02H ;字符 2 送入 29H MOV R0, #P2BJ MOV PMAX ,#P2MAX ;给压力最大值单元赋值LCALL AD JB BJ, LL4 ;是否出现报警情况SETB P1.2 ;无,则清报警位SJMP LL5 LL4 :CLR P1.2 ;有,置报警位SJMP LL6 LL5 :LCALL BCD LL6 :LCALL DISP LCALL 0.5s SJMP LP 下面分别介绍各子程序1 压力采集与计算子程序本例中压力采集信

12、号是否转换完毕是通过P1.0 脚查询 EOC 输出的方法,当EOC=1 时AD 转换完毕。输入的AD 转换后的数字量在累加器A 中,这是一个2 进制数,用字母D表示,但我们要显示的是用BCD码表示的压力值,则变换后的压力值应该用上述公式(P=D*B )进行计算和变换。为达到转换精度,即为能准确显示到小数点后一位的值,则计算公式应修改为P=D*10*B=D*10*PMAX/255。当压力超出此范围时以数码管全部显示F 为标志。;压力采集计算子程序;入口: R0 为报警比较值,PMAX 为压力最大值;出口: R7、R6 分别为计算所得的高、低位字节, 如果超过报警值则24H、2BH、2CH分别置入

13、“ F 代码。AD :MOV DPTR,A ;启动 AD 转换LP1:JNB P1.0,LP1 ;等待 AD 转换完毕MOVX A,DPTR ;A 中为已变换为数字量的压力值CJNE A,R0, COMP1 ;与该路压力报警值比较COMP1 : JC COMP3 ;压力低于报警值转移SETB BJ ;置报警标识位SJMP COMP4 COMP3 : CLR BJ MOV R7, #0 MOV R6, A MOV R5, #0 MOV R4, #10 ;D*10 LCALL NMUL ;调乘法子程序MOV A,R2 MOV R7, A MOV A,R3 MOV R6, A MOV R5, #0

14、MOV R4, PMAX ; D*10*PMAX LCALL NMUL MOV A,R2 MOV R7, A MOV A,R3 MOV R6, A MOV R5, #0 MOV R4, #255 ;D*10*PMAX/255 LCALL DIV ;调除法子程序SJMP COMP5 COMP4 : MOV 2AH, #0FH ;超出有效压力范围显示“F”MOV 2BH,#0FH MOV 2CH, #0FH COMP5: RET 2 压力值转换为BCD 码子程序计算得到的压力值在A 中,但以十六进制数的形式存在,为LED 显示需要应转换为BCD 码。转换程序:入口: R7、 R6 分别为计算所得的

15、高、低位字节出口: 2AH 、 2BH、2CH 分别为准备显示的十位、个位和小数点后一位BCD :MOV R1, #00H MOV R2, #00H CLR C CHAN :SUBB A,#64H ;减 100 JC CHAN1 ;不够减,转INC R1 ;够减,百位数加1 SJMP CHAN CHAN1 : ADD A,#64H ;还原百位数CHAN2 : SUBB A,#0AH ;减 10 JC CHAN3 ;不够减,转INC R2 ;够减,十位数加1 SJMP CHAN2 ;重复减10 CHAN3 :ADD A,#0AH MOV 2AH ,R1 MOV 2BH,R2 MOV 2CH,A

16、3 显示子程序由于有效压力不超过50kPa,但测量精度为正负0.4%,则显示的数据应该精确到小数点后1 位,所以压力显示用3 位数码管。其显示格式为C1/2xxx (xxx 为压力值)。显然倒数第2 位数码管在显示时应带有小数点。在数码管上显示小数点常用的有几种方法, 本例用软件方法,即在显示时采用2 个字型表,一个是不带小数点的,一个是带小数点的,根据需要去取数。DISP:MOV R4,#250 ;置显示延时值DISP1:MOV R0,#28H ;指向显示缓冲区首地址MOV R1,#10H ;指向显示器最高位MOV R3, #5 DISP3:MOV DPTR ,#4FFDH ;位控口地址MOV A,R1 MOVX DPTR,A ;输出位控码MOV A,R0 ;取出显示数据CJNE R1,#00000010B,D1;是否为个位数ADD A,#17 ;改变偏移地址至带小数点的数D1:MOV DPTR,DSEG ;字型码地址MOVC A,A+DPTR ;查表,字型码送A MOV DPTR, #4FFCH ;段控口地址MOVX DPTR,A ;输出字型码AC

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

当前位置:首页 > 行业资料 > 其它行业文档

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